UNPKG

@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
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 };