Skip to content

M3 #30: TypeScript SDK: Types and definitions#70

Merged
joaquinbejar merged 1 commit into
mainfrom
M3/issue-30-typescript-sdk-types
Feb 1, 2026
Merged

M3 #30: TypeScript SDK: Types and definitions#70
joaquinbejar merged 1 commit into
mainfrom
M3/issue-30-typescript-sdk-types

Conversation

@joaquinbejar

Copy link
Copy Markdown
Owner

Summary

Implements TypeScript type definitions that mirror the Rust SDK types, providing type safety for JavaScript/TypeScript clients integrating with Matchbook.

Changes

New Package: ts-sdk/ (@matchbook/sdk)

Directory Description
src/types/ Core type definitions
src/api/ REST and WebSocket API types
src/guards/ Type guards and validators
tests/ Unit tests

Core Types (src/types/)

File Types
primitives.ts Price, Quantity, Side, OrderType, TimeInForce, OrderStatus, SelfTradeBehavior
market.ts Market, MarketSummary
order.ts Order, PlaceOrderParams, CancelOrderParams
trade.ts Trade, TradeFilter
book.ts BookLevel, OrderBook, BookChange, OrderBookUpdate
balance.ts Balance, DepositParams, WithdrawParams

API Types (src/api/)

File Types
rest.ts ApiResponse, PaginatedResponse, ApiError, GetMarketsResponse, etc.
websocket.ts WsChannel, WsSubscribeMessage, WsBookSnapshotMessage, WsTradeMessage, etc.

Type Guards (src/guards/)

  • isSide, isOrderType, isTimeInForce, isOrderStatus
  • isMarket, isOrder, isTrade, isOrderBook, isBalance
  • assertMarket, assertOrder, assertTrade, etc.

Package Configuration

  • TypeScript strict mode enabled
  • Dual module output: ESM and CommonJS
  • Type declarations generated
  • vitest for testing

Technical Decisions

  • String for Price/Quantity: Avoids floating-point precision issues and maintains JSON compatibility
  • Type guards: Runtime validation for API responses
  • Const arrays: SIDES, ORDER_TYPES, etc. for iteration and validation
  • JSDoc: Full documentation on all public exports

Testing

  • 34 unit tests for type guards
  • TypeScript type checking passes
  • Build succeeds (ESM, CJS, types)

Checklist

  • TypeScript strict mode enabled
  • JSDoc documentation on all exports
  • Type guards for runtime validation
  • All tests pass

Closes #30

- Create ts-sdk package with TypeScript type definitions:
  - package.json: @matchbook/sdk npm package configuration
  - tsconfig.json: TypeScript strict mode configuration
  - Build outputs: ESM, CommonJS, and type declarations

- Core types (src/types/):
  - primitives.ts: Price, Quantity, Side, OrderType, TimeInForce, OrderStatus
  - market.ts: Market, MarketSummary
  - order.ts: Order, PlaceOrderParams, CancelOrderParams
  - trade.ts: Trade, TradeFilter
  - book.ts: BookLevel, OrderBook, BookChange, OrderBookUpdate
  - balance.ts: Balance, DepositParams, WithdrawParams

- API types (src/api/):
  - rest.ts: REST response types (ApiResponse, PaginatedResponse, etc.)
  - websocket.ts: WebSocket message types (WsSubscribeMessage, WsBookSnapshot, etc.)

- Type guards (src/guards/):
  - validators.ts: Runtime validation functions
  - isSide, isOrderType, isMarket, isOrder, isTrade, isOrderBook, isBalance
  - assertMarket, assertOrder, assertTrade, etc.

- Testing:
  - 34 unit tests for type guards
  - vitest configuration

- JSDoc documentation on all public exports
@joaquinbejar joaquinbejar added this to the M3: Client SDKs milestone Feb 1, 2026
@joaquinbejar joaquinbejar merged commit 7420de6 into main Feb 1, 2026
5 checks passed
@joaquinbejar joaquinbejar deleted the M3/issue-30-typescript-sdk-types branch February 2, 2026 09:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TypeScript SDK: Types and definitions

1 participant