@extasyio/market-models
Version:
Typed market data models (Trade, OrderBookSnapshot, MarketTick) with Zod validation and MsgPack/JSON serialization
53 lines (46 loc) • 1.79 kB
TypeScript
import { z } from 'zod';
declare enum OrderSide {
Buy = "buy",
Sell = "sell"
}
declare enum TimeFrame {
M1 = "1m",
M5 = "5m",
M15 = "15m",
H1 = "1h",
D1 = "1d"
}
declare const TradeSchema: z.ZodObject<{
price: z.ZodNumber;
amount: z.ZodNumber;
side: z.ZodEnum<typeof OrderSide>;
ts: z.ZodNumber;
}, z.core.$strip>;
type Trade = z.infer<typeof TradeSchema>;
declare const OrderBookSnapshotSchema: z.ZodObject<{
ts: z.ZodNumber;
bids: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
asks: z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
}, z.core.$strip>;
type OrderBookSnapshot = z.infer<typeof OrderBookSnapshotSchema>;
declare const MarketTickSchema: z.ZodObject<{
tf: z.ZodEnum<typeof TimeFrame>;
open: z.ZodNumber;
high: z.ZodNumber;
low: z.ZodNumber;
close: z.ZodNumber;
volume: z.ZodNumber;
tsOpen: z.ZodNumber;
}, z.core.$strip>;
type MarketTick = z.infer<typeof MarketTickSchema>;
/** Generic helpers */
declare const toMsgPack: <T>(value: T) => Uint8Array;
declare const fromMsgPack: <T>(buf: Uint8Array) => T;
/** Typed wrappers with runtime-validation */
declare const encodeTrade: (t: Trade) => Uint8Array;
declare const decodeTrade: (buf: Uint8Array) => Trade;
declare const encodeOrderBook: (ob: OrderBookSnapshot) => Uint8Array;
declare const decodeOrderBook: (buf: Uint8Array) => OrderBookSnapshot;
declare const encodeTick: (c: MarketTick) => Uint8Array;
declare const decodeTick: (buf: Uint8Array) => MarketTick;
export { type MarketTick, MarketTickSchema, type OrderBookSnapshot, OrderBookSnapshotSchema, OrderSide, TimeFrame, type Trade, TradeSchema, decodeOrderBook, decodeTick, decodeTrade, encodeOrderBook, encodeTick, encodeTrade, fromMsgPack, toMsgPack };