@lightconexyz/lightcone-sdk 0.4.16 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +172 -43
  2. package/dist/auth/client.d.ts +1 -1
  3. package/dist/auth/client.d.ts.map +1 -1
  4. package/dist/auth/client.js +2 -7
  5. package/dist/auth/client.js.map +1 -1
  6. package/dist/domain/admin/client.d.ts +11 -8
  7. package/dist/domain/admin/client.d.ts.map +1 -1
  8. package/dist/domain/admin/client.js +33 -14
  9. package/dist/domain/admin/client.js.map +1 -1
  10. package/dist/domain/admin/index.d.ts +12 -3
  11. package/dist/domain/admin/index.d.ts.map +1 -1
  12. package/dist/domain/admin/index.js.map +1 -1
  13. package/dist/domain/admin/wire.d.ts +1 -2
  14. package/dist/domain/admin/wire.d.ts.map +1 -1
  15. package/dist/domain/admin/wire.js.map +1 -1
  16. package/dist/domain/market/tokens.js +4 -6
  17. package/dist/domain/market/tokens.js.map +1 -1
  18. package/dist/domain/market/wire.d.ts +1 -3
  19. package/dist/domain/market/wire.d.ts.map +1 -1
  20. package/dist/domain/market/wire.js.map +1 -1
  21. package/dist/domain/order/client.d.ts +1 -115
  22. package/dist/domain/order/client.d.ts.map +1 -1
  23. package/dist/domain/order/client.js +12 -71
  24. package/dist/domain/order/client.js.map +1 -1
  25. package/dist/domain/order/index.d.ts +2 -9
  26. package/dist/domain/order/index.d.ts.map +1 -1
  27. package/dist/domain/order/index.js +2 -9
  28. package/dist/domain/order/index.js.map +1 -1
  29. package/dist/domain/order/wire.d.ts +80 -2
  30. package/dist/domain/order/wire.d.ts.map +1 -1
  31. package/dist/domain/order/wire.js +141 -0
  32. package/dist/domain/order/wire.js.map +1 -1
  33. package/dist/error.d.ts +5 -2
  34. package/dist/error.d.ts.map +1 -1
  35. package/dist/error.js +10 -1
  36. package/dist/error.js.map +1 -1
  37. package/dist/http/client.d.ts +9 -1
  38. package/dist/http/client.d.ts.map +1 -1
  39. package/dist/http/client.js +126 -31
  40. package/dist/http/client.js.map +1 -1
  41. package/dist/prelude.d.ts +1 -1
  42. package/dist/prelude.d.ts.map +1 -1
  43. package/dist/prelude.js +4 -1
  44. package/dist/prelude.js.map +1 -1
  45. package/dist/privy/client.d.ts +3 -3
  46. package/dist/privy/client.d.ts.map +1 -1
  47. package/dist/privy/client.js.map +1 -1
  48. package/dist/privy/index.d.ts +1 -6
  49. package/dist/privy/index.d.ts.map +1 -1
  50. package/dist/privy/index.js.map +1 -1
  51. package/dist/program/accounts.d.ts +2 -1
  52. package/dist/program/accounts.d.ts.map +1 -1
  53. package/dist/program/accounts.js +6 -2
  54. package/dist/program/accounts.js.map +1 -1
  55. package/dist/program/instructions.d.ts +1 -1
  56. package/dist/program/instructions.d.ts.map +1 -1
  57. package/dist/program/instructions.js +2 -1
  58. package/dist/program/instructions.js.map +1 -1
  59. package/dist/program/types.d.ts +2 -0
  60. package/dist/program/types.d.ts.map +1 -1
  61. package/dist/program/types.js.map +1 -1
  62. package/dist/shared/api_response.d.ts +32 -0
  63. package/dist/shared/api_response.d.ts.map +1 -0
  64. package/dist/shared/api_response.js +61 -0
  65. package/dist/shared/api_response.js.map +1 -0
  66. package/dist/shared/index.d.ts +2 -0
  67. package/dist/shared/index.d.ts.map +1 -1
  68. package/dist/shared/index.js +6 -1
  69. package/dist/shared/index.js.map +1 -1
  70. package/dist/shared/rejection.d.ts +9 -0
  71. package/dist/shared/rejection.d.ts.map +1 -0
  72. package/dist/shared/rejection.js +48 -0
  73. package/dist/shared/rejection.js.map +1 -0
  74. package/dist/ws/index.d.ts +1 -1
  75. package/dist/ws/index.d.ts.map +1 -1
  76. package/dist/ws/index.js +9 -1
  77. package/dist/ws/index.js.map +1 -1
  78. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/program/types.ts"],"names":[],"mappings":";;;AAEA,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E;;GAEG;AACH,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,qDAAW,CAAA;IACX,mDAAU,CAAA;IACV,uDAAY,CAAA;IACZ,yDAAa,CAAA;AACf,CAAC,EALW,YAAY,4BAAZ,YAAY,QAKvB;AAED;;;;GAIG;AACH,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,uCAAO,CAAA;IACP,uCAAO,CAAA;AACT,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB","sourcesContent":["import { PublicKey, Transaction } from \"@solana/web3.js\";\n\n// ============================================================================\n// ENUMS\n// ============================================================================\n\n/**\n * Market status enum matching on-chain representation\n */\nexport enum MarketStatus {\n Pending = 0,\n Active = 1,\n Resolved = 2,\n Cancelled = 3,\n}\n\n/**\n * Order side enum\n * BID = buyer wants base tokens (pays quote)\n * ASK = seller offers base tokens (receives quote)\n */\nexport enum OrderSide {\n BID = 0,\n ASK = 1,\n}\n\n// ============================================================================\n// ACCOUNT TYPES\n// ============================================================================\n\n/**\n * Exchange account - singleton central state\n * PDA: [\"central_state\"]\n * Size: 88 bytes\n */\nexport interface Exchange {\n discriminator: Buffer; // 8 bytes\n authority: PublicKey; // 32 bytes - initial admin\n operator: PublicKey; // 32 bytes - can perform operational tasks\n marketCount: bigint; // u64 - incremented for each market\n paused: boolean; // u8 - 0 = active, 1 = paused\n bump: number; // u8\n depositTokenCount: number; // u16 - number of whitelisted deposit tokens\n}\n\n/**\n * Market account\n * PDA: [\"market\", market_id (u64)]\n * Size: 120 bytes\n */\nexport interface Market {\n discriminator: Buffer; // 8 bytes\n marketId: bigint; // u64 - auto-assigned, sequential\n numOutcomes: number; // u8 - 2-6 outcomes supported\n status: MarketStatus; // u8\n winningOutcome: number; // u8\n hasWinningOutcome: boolean; // u8\n bump: number; // u8\n oracle: PublicKey; // 32 bytes - who can settle the market\n questionId: Buffer; // 32 bytes\n conditionId: Buffer; // 32 bytes - derived from oracle + questionId + numOutcomes\n}\n\n/**\n * Order status account - tracks partial fills and cancellations\n * PDA: [\"order_status\", order_hash (32 bytes)]\n * Size: 24 bytes\n */\nexport interface OrderStatus {\n discriminator: Buffer; // 8 bytes\n remaining: bigint; // u64 - maker_amount not yet filled\n isCancelled: boolean; // u8\n}\n\n/**\n * User nonce account - replay protection\n * PDA: [\"user_nonce\", user_pubkey (32 bytes)]\n * Size: 16 bytes\n */\nexport interface UserNonce {\n discriminator: Buffer; // 8 bytes\n nonce: bigint; // u64 - incremented per order\n}\n\n/**\n * Position account - user's state in a market\n * PDA: [\"position\", owner (32 bytes), market (32 bytes)]\n * Size: 80 bytes\n */\nexport interface Position {\n discriminator: Buffer; // 8 bytes\n owner: PublicKey; // 32 bytes\n market: PublicKey; // 32 bytes\n bump: number; // u8\n}\n\n/**\n * Orderbook account - links market to token pair and lookup table\n * PDA: [\"orderbook\", mint_a (32 bytes), mint_b (32 bytes)]\n * Size: 144 bytes\n */\nexport interface Orderbook {\n discriminator: Buffer; // 8 bytes\n market: PublicKey; // 32 bytes\n mintA: PublicKey; // 32 bytes\n mintB: PublicKey; // 32 bytes\n lookupTable: PublicKey; // 32 bytes\n bump: number; // u8\n}\n\n/**\n * GlobalDepositToken whitelist account.\n * PDA: [\"global_deposit\", mint]\n * Size: 48 bytes\n */\nexport interface GlobalDepositToken {\n discriminator: Buffer; // 8 bytes\n mint: PublicKey; // 32 bytes\n active: boolean; // u8\n bump: number; // u8\n index: number; // u16 - ALT ordering index\n}\n\n// ============================================================================\n// ORDER TYPES\n// ============================================================================\n\n/**\n * Signed order format (233 bytes)\n * Full order with all fields for submission, cancellation, and hashing\n */\nexport interface SignedOrder {\n nonce: number; // u32 - order ID + replay protection (serialized as u64 LE on wire)\n salt: bigint; // u64 - random salt for order uniqueness\n maker: PublicKey; // 32 bytes - signer\n market: PublicKey; // 32 bytes\n baseMint: PublicKey; // 32 bytes - token being bought/sold\n quoteMint: PublicKey; // 32 bytes - payment token\n side: OrderSide; // u8 - 0=BID, 1=ASK\n amountIn: bigint; // u64 - what maker gives\n amountOut: bigint; // u64 - what maker receives\n expiration: bigint; // i64 - unix timestamp, 0=no expiration\n signature: Buffer; // 64 bytes - Ed25519 signature\n}\n\n/**\n * Alias matching Rust v2 naming.\n */\nexport type OrderPayload = SignedOrder;\n\n/**\n * Compact order format (37 bytes)\n * Transaction-optimized version: nonce is u32, no maker field (derived on-chain from Position PDA)\n */\nexport interface Order {\n nonce: number; // u32 (4 bytes) - truncated from SignedOrder's u64 nonce\n salt: bigint; // u64 - random salt for order uniqueness\n side: OrderSide; // u8\n amountIn: bigint; // u64\n amountOut: bigint; // u64\n expiration: bigint; // i64\n}\n\n// ============================================================================\n// PARAMETER TYPES\n// ============================================================================\n\n/**\n * Parameters for initialize instruction\n */\nexport interface InitializeParams {\n authority: PublicKey;\n}\n\n/**\n * Parameters for createMarket instruction\n */\nexport interface CreateMarketParams {\n authority: PublicKey;\n numOutcomes: number; // 2-6\n oracle: PublicKey;\n questionId: Buffer; // 32 bytes\n}\n\n/**\n * Metadata for a single outcome token\n */\nexport interface OutcomeMetadata {\n name: string;\n symbol: string;\n uri: string;\n}\n\n/**\n * Parameters for addDepositMint instruction\n */\nexport interface AddDepositMintParams {\n authority: PublicKey;\n depositMint: PublicKey;\n outcomeMetadata: OutcomeMetadata[];\n}\n\n/**\n * Parameters for deposit (mint complete set) instruction.\n */\nexport interface BuildDepositParams {\n user: PublicKey;\n market: PublicKey;\n depositMint: PublicKey;\n amount: bigint;\n}\n\n/**\n * Parameters for merge (merge complete set) instruction.\n */\nexport interface BuildMergeParams {\n user: PublicKey;\n market: PublicKey;\n depositMint: PublicKey;\n amount: bigint;\n}\n\n/**\n * Parameters for cancelOrder instruction\n */\nexport interface CancelOrderParams {\n maker: PublicKey;\n order: SignedOrder;\n}\n\n/**\n * Parameters for incrementNonce instruction\n */\nexport interface IncrementNonceParams {\n user: PublicKey;\n}\n\n/**\n * Parameters for settleMarket instruction\n */\nexport interface SettleMarketParams {\n oracle: PublicKey;\n marketId: bigint;\n winningOutcome: number;\n}\n\n/**\n * Parameters for redeemWinnings instruction\n */\nexport interface RedeemWinningsParams {\n user: PublicKey;\n market: PublicKey;\n depositMint: PublicKey;\n amount: bigint;\n}\n\n/**\n * Parameters for setPaused instruction\n */\nexport interface SetPausedParams {\n authority: PublicKey;\n paused: boolean;\n}\n\n/**\n * Parameters for setOperator instruction\n */\nexport interface SetOperatorParams {\n authority: PublicKey;\n newOperator: PublicKey;\n}\n\n/**\n * Parameters for withdrawFromPosition instruction\n */\nexport interface WithdrawFromPositionParams {\n user: PublicKey;\n market: PublicKey;\n mint: PublicKey; // Can be deposit mint or conditional mint\n amount: bigint;\n outcomeIndex: number; // u8 outcome index\n}\n\n/**\n * Parameters for activateMarket instruction\n */\nexport interface ActivateMarketParams {\n authority: PublicKey;\n marketId: bigint;\n}\n\n/**\n * Parameters for matchOrdersMulti instruction\n */\nexport interface MatchOrdersMultiParams {\n operator: PublicKey;\n market: PublicKey;\n baseMint: PublicKey;\n quoteMint: PublicKey;\n takerOrder: SignedOrder;\n makerOrders: SignedOrder[];\n makerFillAmounts: bigint[]; // Per maker - what each maker gives\n takerFillAmounts: bigint[]; // Per maker - what taker gives to each maker\n fullFillBitmask: number; // u8 bitmask: bit 7 = taker, bits 0..n = makers\n}\n\n/**\n * Parameters for setAuthority instruction\n */\nexport interface SetAuthorityParams {\n currentAuthority: PublicKey;\n newAuthority: PublicKey;\n}\n\n/**\n * Parameters for createOrderbook instruction\n */\nexport interface CreateOrderbookParams {\n authority: PublicKey;\n market: PublicKey;\n mintA: PublicKey;\n mintB: PublicKey;\n recentSlot: bigint;\n}\n\n/**\n * Parameters for whitelistDepositToken instruction\n */\nexport interface WhitelistDepositTokenParams {\n authority: PublicKey;\n mint: PublicKey;\n}\n\n/**\n * Parameters for depositToGlobal instruction\n */\nexport interface DepositToGlobalParams {\n user: PublicKey;\n mint: PublicKey;\n amount: bigint;\n}\n\n/**\n * Parameters for globalToMarketDeposit instruction\n */\nexport interface GlobalToMarketDepositParams {\n user: PublicKey;\n market: PublicKey;\n depositMint: PublicKey;\n amount: bigint;\n}\n\n/**\n * Parameters for initPositionTokens instruction\n */\nexport interface InitPositionTokensParams {\n payer: PublicKey;\n user: PublicKey;\n market: PublicKey;\n depositMints: PublicKey[];\n recentSlot: bigint;\n}\n\n/**\n * Parameters for depositAndSwap instruction\n */\n/**\n * Parameters for extendPositionTokens instruction\n */\nexport interface ExtendPositionTokensParams {\n payer: PublicKey;\n user: PublicKey;\n market: PublicKey;\n lookupTable: PublicKey;\n depositMints: PublicKey[];\n}\n\nexport interface MakerFill {\n order: SignedOrder;\n makerFillAmount: bigint;\n takerFillAmount: bigint;\n isFullFill: boolean;\n isDeposit: boolean;\n depositMint: PublicKey;\n}\n\nexport interface DepositAndSwapParams {\n operator: PublicKey;\n market: PublicKey;\n baseMint: PublicKey;\n quoteMint: PublicKey;\n takerOrder: SignedOrder;\n takerIsFullFill: boolean;\n takerIsDeposit: boolean;\n takerDepositMint: PublicKey;\n numOutcomes: number;\n makers: MakerFill[];\n}\n\n/**\n * Parameters for withdrawFromGlobal instruction\n */\nexport interface WithdrawFromGlobalParams {\n user: PublicKey;\n mint: PublicKey;\n amount: bigint;\n}\n\n// ============================================================================\n// BUILDER RESULT TYPES\n// ============================================================================\n\n/**\n * Result from transaction builders\n */\nexport interface BuildResult<T = Record<string, PublicKey>> {\n /** Unsigned transaction ready for signing */\n transaction: Transaction;\n /** Key accounts involved in the transaction */\n accounts: T;\n /** Serialize transaction to base64 */\n serialize: () => string;\n}\n\n/**\n * Accounts returned from initialize\n */\nexport interface InitializeAccounts {\n exchange: PublicKey;\n}\n\n/**\n * Accounts returned from createMarket\n */\nexport interface CreateMarketAccounts {\n exchange: PublicKey;\n market: PublicKey;\n}\n\n/**\n * Accounts returned from addDepositMint\n */\nexport interface AddDepositMintAccounts {\n market: PublicKey;\n vault: PublicKey;\n mintAuthority: PublicKey;\n conditionalMints: PublicKey[];\n}\n\n/**\n * Accounts returned from mintCompleteSet\n */\nexport interface MintCompleteSetAccounts {\n position: PublicKey;\n vault: PublicKey;\n conditionalMints: PublicKey[];\n}\n\n/**\n * Accounts returned from mergeCompleteSet\n */\nexport interface MergeCompleteSetAccounts {\n position: PublicKey;\n vault: PublicKey;\n conditionalMints: PublicKey[];\n}\n\n/**\n * Accounts returned from cancelOrder\n */\nexport interface CancelOrderAccounts {\n orderStatus: PublicKey;\n}\n\n/**\n * Accounts returned from incrementNonce\n */\nexport interface IncrementNonceAccounts {\n userNonce: PublicKey;\n}\n\n/**\n * Accounts returned from settleMarket\n */\nexport interface SettleMarketAccounts {\n exchange: PublicKey;\n market: PublicKey;\n}\n\n/**\n * Accounts returned from redeemWinnings\n */\nexport interface RedeemWinningsAccounts {\n position: PublicKey;\n vault: PublicKey;\n winningMint: PublicKey;\n}\n\n/**\n * Accounts returned from activateMarket\n */\nexport interface ActivateMarketAccounts {\n exchange: PublicKey;\n market: PublicKey;\n}\n\n/**\n * Accounts returned from matchOrdersMulti\n */\nexport interface MatchOrdersMultiAccounts {\n takerOrderStatus: PublicKey;\n takerPosition: PublicKey;\n makerOrderStatuses: PublicKey[];\n makerPositions: PublicKey[];\n}\n\n// ============================================================================\n// ORDER CREATION TYPES\n// ============================================================================\n\n/**\n * Parameters for creating a bid order\n */\nexport interface BidOrderParams {\n nonce: number;\n salt?: bigint;\n maker: PublicKey;\n market: PublicKey;\n baseMint: PublicKey; // Token to buy\n quoteMint: PublicKey; // Token to pay with\n amountIn: bigint; // Quote tokens to give\n amountOut: bigint; // Base tokens to receive\n expiration?: bigint; // 0 = no expiration\n}\n\n/**\n * Parameters for creating an ask order\n */\nexport interface AskOrderParams {\n nonce: number;\n salt?: bigint;\n maker: PublicKey;\n market: PublicKey;\n baseMint: PublicKey; // Token to sell\n quoteMint: PublicKey; // Token to receive\n amountIn: bigint; // Base tokens to give\n amountOut: bigint; // Quote tokens to receive\n expiration?: bigint; // 0 = no expiration\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/program/types.ts"],"names":[],"mappings":";;;AAEA,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E;;GAEG;AACH,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,qDAAW,CAAA;IACX,mDAAU,CAAA;IACV,uDAAY,CAAA;IACZ,yDAAa,CAAA;AACf,CAAC,EALW,YAAY,4BAAZ,YAAY,QAKvB;AAED;;;;GAIG;AACH,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,uCAAO,CAAA;IACP,uCAAO,CAAA;AACT,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB","sourcesContent":["import { PublicKey, Transaction } from \"@solana/web3.js\";\n\n// ============================================================================\n// ENUMS\n// ============================================================================\n\n/**\n * Market status enum matching on-chain representation\n */\nexport enum MarketStatus {\n Pending = 0,\n Active = 1,\n Resolved = 2,\n Cancelled = 3,\n}\n\n/**\n * Order side enum\n * BID = buyer wants base tokens (pays quote)\n * ASK = seller offers base tokens (receives quote)\n */\nexport enum OrderSide {\n BID = 0,\n ASK = 1,\n}\n\n// ============================================================================\n// ACCOUNT TYPES\n// ============================================================================\n\n/**\n * Exchange account - singleton central state\n * PDA: [\"central_state\"]\n * Size: 88 bytes\n */\nexport interface Exchange {\n discriminator: Buffer; // 8 bytes\n authority: PublicKey; // 32 bytes - initial admin\n operator: PublicKey; // 32 bytes - can perform operational tasks\n marketCount: bigint; // u64 - incremented for each market\n paused: boolean; // u8 - 0 = active, 1 = paused\n bump: number; // u8\n depositTokenCount: number; // u16 - number of whitelisted deposit tokens\n}\n\n/**\n * Market account\n * PDA: [\"market\", market_id (u64)]\n * Size: 120 bytes\n */\nexport interface Market {\n discriminator: Buffer; // 8 bytes\n marketId: bigint; // u64 - auto-assigned, sequential\n numOutcomes: number; // u8 - 2-6 outcomes supported\n status: MarketStatus; // u8\n winningOutcome: number; // u8\n hasWinningOutcome: boolean; // u8\n bump: number; // u8\n oracle: PublicKey; // 32 bytes - who can settle the market\n questionId: Buffer; // 32 bytes\n conditionId: Buffer; // 32 bytes - derived from oracle + questionId + numOutcomes\n}\n\n/**\n * Order status account - tracks partial fills and cancellations\n * PDA: [\"order_status\", order_hash (32 bytes)]\n * Size: 24 bytes\n */\nexport interface OrderStatus {\n discriminator: Buffer; // 8 bytes\n remaining: bigint; // u64 - maker_amount not yet filled\n isCancelled: boolean; // u8\n}\n\n/**\n * User nonce account - replay protection\n * PDA: [\"user_nonce\", user_pubkey (32 bytes)]\n * Size: 16 bytes\n */\nexport interface UserNonce {\n discriminator: Buffer; // 8 bytes\n nonce: bigint; // u64 - incremented per order\n}\n\n/**\n * Position account - user's state in a market\n * PDA: [\"position\", owner (32 bytes), market (32 bytes)]\n * Size: 80 bytes\n */\nexport interface Position {\n discriminator: Buffer; // 8 bytes\n owner: PublicKey; // 32 bytes\n market: PublicKey; // 32 bytes\n bump: number; // u8\n}\n\n/**\n * Orderbook account - links market to token pair and lookup table\n * PDA: [\"orderbook\", mint_a (32 bytes), mint_b (32 bytes)]\n * Size: 144 bytes\n */\nexport interface Orderbook {\n discriminator: Buffer; // 8 bytes\n market: PublicKey; // 32 bytes\n mintA: PublicKey; // 32 bytes\n mintB: PublicKey; // 32 bytes\n lookupTable: PublicKey; // 32 bytes\n baseIndex: number; // u8\n bump: number; // u8\n}\n\n/**\n * GlobalDepositToken whitelist account.\n * PDA: [\"global_deposit\", mint]\n * Size: 48 bytes\n */\nexport interface GlobalDepositToken {\n discriminator: Buffer; // 8 bytes\n mint: PublicKey; // 32 bytes\n active: boolean; // u8\n bump: number; // u8\n index: number; // u16 - ALT ordering index\n}\n\n// ============================================================================\n// ORDER TYPES\n// ============================================================================\n\n/**\n * Signed order format (233 bytes)\n * Full order with all fields for submission, cancellation, and hashing\n */\nexport interface SignedOrder {\n nonce: number; // u32 - order ID + replay protection (serialized as u64 LE on wire)\n salt: bigint; // u64 - random salt for order uniqueness\n maker: PublicKey; // 32 bytes - signer\n market: PublicKey; // 32 bytes\n baseMint: PublicKey; // 32 bytes - token being bought/sold\n quoteMint: PublicKey; // 32 bytes - payment token\n side: OrderSide; // u8 - 0=BID, 1=ASK\n amountIn: bigint; // u64 - what maker gives\n amountOut: bigint; // u64 - what maker receives\n expiration: bigint; // i64 - unix timestamp, 0=no expiration\n signature: Buffer; // 64 bytes - Ed25519 signature\n}\n\n/**\n * Alias matching Rust v2 naming.\n */\nexport type OrderPayload = SignedOrder;\n\n/**\n * Compact order format (37 bytes)\n * Transaction-optimized version: nonce is u32, no maker field (derived on-chain from Position PDA)\n */\nexport interface Order {\n nonce: number; // u32 (4 bytes) - truncated from SignedOrder's u64 nonce\n salt: bigint; // u64 - random salt for order uniqueness\n side: OrderSide; // u8\n amountIn: bigint; // u64\n amountOut: bigint; // u64\n expiration: bigint; // i64\n}\n\n// ============================================================================\n// PARAMETER TYPES\n// ============================================================================\n\n/**\n * Parameters for initialize instruction\n */\nexport interface InitializeParams {\n authority: PublicKey;\n}\n\n/**\n * Parameters for createMarket instruction\n */\nexport interface CreateMarketParams {\n authority: PublicKey;\n numOutcomes: number; // 2-6\n oracle: PublicKey;\n questionId: Buffer; // 32 bytes\n}\n\n/**\n * Metadata for a single outcome token\n */\nexport interface OutcomeMetadata {\n name: string;\n symbol: string;\n uri: string;\n}\n\n/**\n * Parameters for addDepositMint instruction\n */\nexport interface AddDepositMintParams {\n authority: PublicKey;\n depositMint: PublicKey;\n outcomeMetadata: OutcomeMetadata[];\n}\n\n/**\n * Parameters for deposit (mint complete set) instruction.\n */\nexport interface BuildDepositParams {\n user: PublicKey;\n market: PublicKey;\n depositMint: PublicKey;\n amount: bigint;\n}\n\n/**\n * Parameters for merge (merge complete set) instruction.\n */\nexport interface BuildMergeParams {\n user: PublicKey;\n market: PublicKey;\n depositMint: PublicKey;\n amount: bigint;\n}\n\n/**\n * Parameters for cancelOrder instruction\n */\nexport interface CancelOrderParams {\n maker: PublicKey;\n order: SignedOrder;\n}\n\n/**\n * Parameters for incrementNonce instruction\n */\nexport interface IncrementNonceParams {\n user: PublicKey;\n}\n\n/**\n * Parameters for settleMarket instruction\n */\nexport interface SettleMarketParams {\n oracle: PublicKey;\n marketId: bigint;\n winningOutcome: number;\n}\n\n/**\n * Parameters for redeemWinnings instruction\n */\nexport interface RedeemWinningsParams {\n user: PublicKey;\n market: PublicKey;\n depositMint: PublicKey;\n amount: bigint;\n}\n\n/**\n * Parameters for setPaused instruction\n */\nexport interface SetPausedParams {\n authority: PublicKey;\n paused: boolean;\n}\n\n/**\n * Parameters for setOperator instruction\n */\nexport interface SetOperatorParams {\n authority: PublicKey;\n newOperator: PublicKey;\n}\n\n/**\n * Parameters for withdrawFromPosition instruction\n */\nexport interface WithdrawFromPositionParams {\n user: PublicKey;\n market: PublicKey;\n mint: PublicKey; // Can be deposit mint or conditional mint\n amount: bigint;\n outcomeIndex: number; // u8 outcome index\n}\n\n/**\n * Parameters for activateMarket instruction\n */\nexport interface ActivateMarketParams {\n authority: PublicKey;\n marketId: bigint;\n}\n\n/**\n * Parameters for matchOrdersMulti instruction\n */\nexport interface MatchOrdersMultiParams {\n operator: PublicKey;\n market: PublicKey;\n baseMint: PublicKey;\n quoteMint: PublicKey;\n takerOrder: SignedOrder;\n makerOrders: SignedOrder[];\n makerFillAmounts: bigint[]; // Per maker - what each maker gives\n takerFillAmounts: bigint[]; // Per maker - what taker gives to each maker\n fullFillBitmask: number; // u8 bitmask: bit 7 = taker, bits 0..n = makers\n}\n\n/**\n * Parameters for setAuthority instruction\n */\nexport interface SetAuthorityParams {\n currentAuthority: PublicKey;\n newAuthority: PublicKey;\n}\n\n/**\n * Parameters for createOrderbook instruction\n */\nexport interface CreateOrderbookParams {\n authority: PublicKey;\n market: PublicKey;\n mintA: PublicKey;\n mintB: PublicKey;\n recentSlot: bigint;\n baseIndex: number;\n}\n\n/**\n * Parameters for whitelistDepositToken instruction\n */\nexport interface WhitelistDepositTokenParams {\n authority: PublicKey;\n mint: PublicKey;\n}\n\n/**\n * Parameters for depositToGlobal instruction\n */\nexport interface DepositToGlobalParams {\n user: PublicKey;\n mint: PublicKey;\n amount: bigint;\n}\n\n/**\n * Parameters for globalToMarketDeposit instruction\n */\nexport interface GlobalToMarketDepositParams {\n user: PublicKey;\n market: PublicKey;\n depositMint: PublicKey;\n amount: bigint;\n}\n\n/**\n * Parameters for initPositionTokens instruction\n */\nexport interface InitPositionTokensParams {\n payer: PublicKey;\n user: PublicKey;\n market: PublicKey;\n depositMints: PublicKey[];\n recentSlot: bigint;\n}\n\n/**\n * Parameters for depositAndSwap instruction\n */\n/**\n * Parameters for extendPositionTokens instruction\n */\nexport interface ExtendPositionTokensParams {\n payer: PublicKey;\n user: PublicKey;\n market: PublicKey;\n lookupTable: PublicKey;\n depositMints: PublicKey[];\n}\n\nexport interface MakerFill {\n order: SignedOrder;\n makerFillAmount: bigint;\n takerFillAmount: bigint;\n isFullFill: boolean;\n isDeposit: boolean;\n depositMint: PublicKey;\n}\n\nexport interface DepositAndSwapParams {\n operator: PublicKey;\n market: PublicKey;\n baseMint: PublicKey;\n quoteMint: PublicKey;\n takerOrder: SignedOrder;\n takerIsFullFill: boolean;\n takerIsDeposit: boolean;\n takerDepositMint: PublicKey;\n numOutcomes: number;\n makers: MakerFill[];\n}\n\n/**\n * Parameters for withdrawFromGlobal instruction\n */\nexport interface WithdrawFromGlobalParams {\n user: PublicKey;\n mint: PublicKey;\n amount: bigint;\n}\n\n// ============================================================================\n// BUILDER RESULT TYPES\n// ============================================================================\n\n/**\n * Result from transaction builders\n */\nexport interface BuildResult<T = Record<string, PublicKey>> {\n /** Unsigned transaction ready for signing */\n transaction: Transaction;\n /** Key accounts involved in the transaction */\n accounts: T;\n /** Serialize transaction to base64 */\n serialize: () => string;\n}\n\n/**\n * Accounts returned from initialize\n */\nexport interface InitializeAccounts {\n exchange: PublicKey;\n}\n\n/**\n * Accounts returned from createMarket\n */\nexport interface CreateMarketAccounts {\n exchange: PublicKey;\n market: PublicKey;\n}\n\n/**\n * Accounts returned from addDepositMint\n */\nexport interface AddDepositMintAccounts {\n market: PublicKey;\n vault: PublicKey;\n mintAuthority: PublicKey;\n conditionalMints: PublicKey[];\n}\n\n/**\n * Accounts returned from mintCompleteSet\n */\nexport interface MintCompleteSetAccounts {\n position: PublicKey;\n vault: PublicKey;\n conditionalMints: PublicKey[];\n}\n\n/**\n * Accounts returned from mergeCompleteSet\n */\nexport interface MergeCompleteSetAccounts {\n position: PublicKey;\n vault: PublicKey;\n conditionalMints: PublicKey[];\n}\n\n/**\n * Accounts returned from cancelOrder\n */\nexport interface CancelOrderAccounts {\n orderStatus: PublicKey;\n}\n\n/**\n * Accounts returned from incrementNonce\n */\nexport interface IncrementNonceAccounts {\n userNonce: PublicKey;\n}\n\n/**\n * Accounts returned from settleMarket\n */\nexport interface SettleMarketAccounts {\n exchange: PublicKey;\n market: PublicKey;\n}\n\n/**\n * Accounts returned from redeemWinnings\n */\nexport interface RedeemWinningsAccounts {\n position: PublicKey;\n vault: PublicKey;\n winningMint: PublicKey;\n}\n\n/**\n * Accounts returned from activateMarket\n */\nexport interface ActivateMarketAccounts {\n exchange: PublicKey;\n market: PublicKey;\n}\n\n/**\n * Accounts returned from matchOrdersMulti\n */\nexport interface MatchOrdersMultiAccounts {\n takerOrderStatus: PublicKey;\n takerPosition: PublicKey;\n makerOrderStatuses: PublicKey[];\n makerPositions: PublicKey[];\n}\n\n// ============================================================================\n// ORDER CREATION TYPES\n// ============================================================================\n\n/**\n * Parameters for creating a bid order\n */\nexport interface BidOrderParams {\n nonce: number;\n salt?: bigint;\n maker: PublicKey;\n market: PublicKey;\n baseMint: PublicKey; // Token to buy\n quoteMint: PublicKey; // Token to pay with\n amountIn: bigint; // Quote tokens to give\n amountOut: bigint; // Base tokens to receive\n expiration?: bigint; // 0 = no expiration\n}\n\n/**\n * Parameters for creating an ask order\n */\nexport interface AskOrderParams {\n nonce: number;\n salt?: bigint;\n maker: PublicKey;\n market: PublicKey;\n baseMint: PublicKey; // Token to sell\n quoteMint: PublicKey; // Token to receive\n amountIn: bigint; // Base tokens to give\n amountOut: bigint; // Quote tokens to receive\n expiration?: bigint; // 0 = no expiration\n}\n"]}
@@ -0,0 +1,32 @@
1
+ import { RejectionCode } from "./rejection";
2
+ export interface ApiRejectedDetailsWire {
3
+ reason: string;
4
+ rejection_code?: string;
5
+ error_code?: string;
6
+ error_log_id?: string;
7
+ }
8
+ export type ApiResponse<T> = {
9
+ status: "success";
10
+ body: T;
11
+ } | {
12
+ status: "error";
13
+ error_details: ApiRejectedDetailsWire;
14
+ };
15
+ export declare class ApiRejectedDetails {
16
+ readonly reason: string;
17
+ readonly rejectionCode?: RejectionCode;
18
+ readonly errorCode?: string;
19
+ readonly errorLogId?: string;
20
+ readonly requestId?: string;
21
+ constructor(params: {
22
+ reason: string;
23
+ rejectionCode?: RejectionCode;
24
+ errorCode?: string;
25
+ errorLogId?: string;
26
+ requestId?: string;
27
+ });
28
+ static fromWire(wire: ApiRejectedDetailsWire, requestId?: string): ApiRejectedDetails;
29
+ toString(): string;
30
+ }
31
+ export declare function isApiResponse<T>(value: unknown): value is ApiResponse<T>;
32
+ //# sourceMappingURL=api_response.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api_response.d.ts","sourceRoot":"","sources":["../../src/shared/api_response.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IACrB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC9B;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,sBAAsB,CAAA;CAAE,CAAC;AAE/D,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEhB,MAAM,EAAE;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;IAQD,MAAM,CAAC,QAAQ,CACb,IAAI,EAAE,sBAAsB,EAC5B,SAAS,CAAC,EAAE,MAAM,GACjB,kBAAkB;IAYrB,QAAQ,IAAI,MAAM;CAgBnB;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAaxE"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiRejectedDetails = void 0;
4
+ exports.isApiResponse = isApiResponse;
5
+ const rejection_1 = require("./rejection");
6
+ class ApiRejectedDetails {
7
+ reason;
8
+ rejectionCode;
9
+ errorCode;
10
+ errorLogId;
11
+ requestId;
12
+ constructor(params) {
13
+ this.reason = params.reason;
14
+ this.rejectionCode = params.rejectionCode;
15
+ this.errorCode = params.errorCode;
16
+ this.errorLogId = params.errorLogId;
17
+ this.requestId = params.requestId;
18
+ }
19
+ static fromWire(wire, requestId) {
20
+ return new ApiRejectedDetails({
21
+ reason: wire.reason,
22
+ rejectionCode: wire.rejection_code
23
+ ? rejection_1.RejectionCode.from(wire.rejection_code)
24
+ : undefined,
25
+ errorCode: wire.error_code,
26
+ errorLogId: wire.error_log_id,
27
+ requestId,
28
+ });
29
+ }
30
+ toString() {
31
+ const lines = [`Reason: ${this.reason}`];
32
+ if (this.rejectionCode) {
33
+ lines.push(`Rejection Code: ${this.rejectionCode.label()}`);
34
+ }
35
+ if (this.errorCode) {
36
+ lines.push(`Error Code: ${this.errorCode}`);
37
+ }
38
+ if (this.errorLogId) {
39
+ lines.push(`Error Log ID: ${this.errorLogId}`);
40
+ }
41
+ if (this.requestId) {
42
+ lines.push(`Request ID: ${this.requestId}`);
43
+ }
44
+ return lines.join("\n");
45
+ }
46
+ }
47
+ exports.ApiRejectedDetails = ApiRejectedDetails;
48
+ function isApiResponse(value) {
49
+ if (typeof value !== "object" || value === null || !("status" in value)) {
50
+ return false;
51
+ }
52
+ const status = value.status;
53
+ if (status === "success") {
54
+ return "body" in value;
55
+ }
56
+ if (status === "error") {
57
+ return "error_details" in value;
58
+ }
59
+ return false;
60
+ }
61
+ //# sourceMappingURL=api_response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api_response.js","sourceRoot":"","sources":["../../src/shared/api_response.ts"],"names":[],"mappings":";;;AAmEA,sCAaC;AAhFD,2CAA4C;AAa5C,MAAa,kBAAkB;IACpB,MAAM,CAAS;IACf,aAAa,CAAiB;IAC9B,SAAS,CAAU;IACnB,UAAU,CAAU;IACpB,SAAS,CAAU;IAE5B,YAAY,MAMX;QACC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,QAAQ,CACb,IAA4B,EAC5B,SAAkB;QAElB,OAAO,IAAI,kBAAkB,CAAC;YAC5B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,IAAI,CAAC,cAAc;gBAChC,CAAC,CAAC,yBAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;gBACzC,CAAC,CAAC,SAAS;YACb,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,UAAU,EAAE,IAAI,CAAC,YAAY;YAC7B,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,MAAM,KAAK,GAAG,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF;AApDD,gDAoDC;AAED,SAAgB,aAAa,CAAI,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAI,KAA8B,CAAC,MAAM,CAAC;IACtD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,IAAI,KAAK,CAAC;IACzB,CAAC;IACD,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,OAAO,eAAe,IAAI,KAAK,CAAC;IAClC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import { RejectionCode } from \"./rejection\";\n\nexport interface ApiRejectedDetailsWire {\n reason: string;\n rejection_code?: string;\n error_code?: string;\n error_log_id?: string;\n}\n\nexport type ApiResponse<T> =\n | { status: \"success\"; body: T }\n | { status: \"error\"; error_details: ApiRejectedDetailsWire };\n\nexport class ApiRejectedDetails {\n readonly reason: string;\n readonly rejectionCode?: RejectionCode;\n readonly errorCode?: string;\n readonly errorLogId?: string;\n readonly requestId?: string;\n\n constructor(params: {\n reason: string;\n rejectionCode?: RejectionCode;\n errorCode?: string;\n errorLogId?: string;\n requestId?: string;\n }) {\n this.reason = params.reason;\n this.rejectionCode = params.rejectionCode;\n this.errorCode = params.errorCode;\n this.errorLogId = params.errorLogId;\n this.requestId = params.requestId;\n }\n\n static fromWire(\n wire: ApiRejectedDetailsWire,\n requestId?: string\n ): ApiRejectedDetails {\n return new ApiRejectedDetails({\n reason: wire.reason,\n rejectionCode: wire.rejection_code\n ? RejectionCode.from(wire.rejection_code)\n : undefined,\n errorCode: wire.error_code,\n errorLogId: wire.error_log_id,\n requestId,\n });\n }\n\n toString(): string {\n const lines = [`Reason: ${this.reason}`];\n if (this.rejectionCode) {\n lines.push(`Rejection Code: ${this.rejectionCode.label()}`);\n }\n if (this.errorCode) {\n lines.push(`Error Code: ${this.errorCode}`);\n }\n if (this.errorLogId) {\n lines.push(`Error Log ID: ${this.errorLogId}`);\n }\n if (this.requestId) {\n lines.push(`Request ID: ${this.requestId}`);\n }\n return lines.join(\"\\n\");\n }\n}\n\nexport function isApiResponse<T>(value: unknown): value is ApiResponse<T> {\n if (typeof value !== \"object\" || value === null || !(\"status\" in value)) {\n return false;\n }\n\n const status = (value as { status?: unknown }).status;\n if (status === \"success\") {\n return \"body\" in value;\n }\n if (status === \"error\") {\n return \"error_details\" in value;\n }\n return false;\n}\n"]}
@@ -1,4 +1,6 @@
1
1
  export { asOrderBookId, asPubkeyStr, DepositSource, deriveOrderbookId, parseSide, resolutionSeconds, sideLabel, OrderUpdateType, Resolution, Side, TimeInForce, TriggerResultStatus, TriggerStatus, TriggerType, TriggerUpdateType, type Branded, type OrderBookId, type PubkeyStr, type SubmitOrderRequest, } from "./types";
2
+ export { ApiRejectedDetails, isApiResponse, type ApiRejectedDetailsWire, type ApiResponse, } from "./api_response";
3
+ export { RejectionCode } from "./rejection";
2
4
  export { formatDecimal, isZero, parseDecimal } from "./price";
3
5
  export { alignPriceToTick, scalePriceSize, scalePriceSizeLegacy, ScalingError, type LegacyScaledAmounts, type OrderbookDecimals, type ScaledAmounts, } from "./scaling";
4
6
  export { scalePriceSizeLegacy as scalePriceSizeV1 } from "./scaling";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,UAAU,EACV,IAAI,EACJ,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,kBAAkB,GACxB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE9D,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,aAAa,GACnB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,oBAAoB,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAErE,OAAO,EACL,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,UAAU,EACV,IAAI,EACJ,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,kBAAkB,GACxB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,KAAK,sBAAsB,EAC3B,KAAK,WAAW,GACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE9D,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,aAAa,GACnB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,oBAAoB,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAErE,OAAO,EACL,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isUserCancellation = exports.scalePriceSizeV1 = exports.ScalingError = exports.scalePriceSizeLegacy = exports.scalePriceSize = exports.alignPriceToTick = exports.parseDecimal = exports.isZero = exports.formatDecimal = exports.TriggerUpdateType = exports.TriggerType = exports.TriggerStatus = exports.TriggerResultStatus = exports.TimeInForce = exports.Side = exports.Resolution = exports.OrderUpdateType = exports.sideLabel = exports.resolutionSeconds = exports.parseSide = exports.deriveOrderbookId = exports.DepositSource = exports.asPubkeyStr = exports.asOrderBookId = void 0;
3
+ exports.isUserCancellation = exports.scalePriceSizeV1 = exports.ScalingError = exports.scalePriceSizeLegacy = exports.scalePriceSize = exports.alignPriceToTick = exports.parseDecimal = exports.isZero = exports.formatDecimal = exports.RejectionCode = exports.isApiResponse = exports.ApiRejectedDetails = exports.TriggerUpdateType = exports.TriggerType = exports.TriggerStatus = exports.TriggerResultStatus = exports.TimeInForce = exports.Side = exports.Resolution = exports.OrderUpdateType = exports.sideLabel = exports.resolutionSeconds = exports.parseSide = exports.deriveOrderbookId = exports.DepositSource = exports.asPubkeyStr = exports.asOrderBookId = void 0;
4
4
  var types_1 = require("./types");
5
5
  Object.defineProperty(exports, "asOrderBookId", { enumerable: true, get: function () { return types_1.asOrderBookId; } });
6
6
  Object.defineProperty(exports, "asPubkeyStr", { enumerable: true, get: function () { return types_1.asPubkeyStr; } });
@@ -17,6 +17,11 @@ Object.defineProperty(exports, "TriggerResultStatus", { enumerable: true, get: f
17
17
  Object.defineProperty(exports, "TriggerStatus", { enumerable: true, get: function () { return types_1.TriggerStatus; } });
18
18
  Object.defineProperty(exports, "TriggerType", { enumerable: true, get: function () { return types_1.TriggerType; } });
19
19
  Object.defineProperty(exports, "TriggerUpdateType", { enumerable: true, get: function () { return types_1.TriggerUpdateType; } });
20
+ var api_response_1 = require("./api_response");
21
+ Object.defineProperty(exports, "ApiRejectedDetails", { enumerable: true, get: function () { return api_response_1.ApiRejectedDetails; } });
22
+ Object.defineProperty(exports, "isApiResponse", { enumerable: true, get: function () { return api_response_1.isApiResponse; } });
23
+ var rejection_1 = require("./rejection");
24
+ Object.defineProperty(exports, "RejectionCode", { enumerable: true, get: function () { return rejection_1.RejectionCode; } });
20
25
  var price_1 = require("./price");
21
26
  Object.defineProperty(exports, "formatDecimal", { enumerable: true, get: function () { return price_1.formatDecimal; } });
22
27
  Object.defineProperty(exports, "isZero", { enumerable: true, get: function () { return price_1.isZero; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":";;;AAAA,iCAoBiB;AAnBf,sGAAA,aAAa,OAAA;AACb,oGAAA,WAAW,OAAA;AACX,sGAAA,aAAa,OAAA;AACb,0GAAA,iBAAiB,OAAA;AACjB,kGAAA,SAAS,OAAA;AACT,0GAAA,iBAAiB,OAAA;AACjB,kGAAA,SAAS,OAAA;AACT,wGAAA,eAAe,OAAA;AACf,mGAAA,UAAU,OAAA;AACV,6FAAA,IAAI,OAAA;AACJ,oGAAA,WAAW,OAAA;AACX,4GAAA,mBAAmB,OAAA;AACnB,sGAAA,aAAa,OAAA;AACb,oGAAA,WAAW,OAAA;AACX,0GAAA,iBAAiB,OAAA;AAOnB,iCAA8D;AAArD,sGAAA,aAAa,OAAA;AAAE,+FAAA,MAAM,OAAA;AAAE,qGAAA,YAAY,OAAA;AAE5C,qCAQmB;AAPjB,2GAAA,gBAAgB,OAAA;AAChB,yGAAA,cAAc,OAAA;AACd,+GAAA,oBAAoB,OAAA;AACpB,uGAAA,YAAY,OAAA;AAMd,oCAAoC;AACpC,qCAAqE;AAA5D,2GAAA,oBAAoB,OAAoB;AAEjD,qCAImB;AAHjB,6GAAA,kBAAkB,OAAA","sourcesContent":["export {\n asOrderBookId,\n asPubkeyStr,\n DepositSource,\n deriveOrderbookId,\n parseSide,\n resolutionSeconds,\n sideLabel,\n OrderUpdateType,\n Resolution,\n Side,\n TimeInForce,\n TriggerResultStatus,\n TriggerStatus,\n TriggerType,\n TriggerUpdateType,\n type Branded,\n type OrderBookId,\n type PubkeyStr,\n type SubmitOrderRequest,\n} from \"./types\";\n\nexport { formatDecimal, isZero, parseDecimal } from \"./price\";\n\nexport {\n alignPriceToTick,\n scalePriceSize,\n scalePriceSizeLegacy,\n ScalingError,\n type LegacyScaledAmounts,\n type OrderbookDecimals,\n type ScaledAmounts,\n} from \"./scaling\";\n\n// Backward-compatible name from v1.\nexport { scalePriceSizeLegacy as scalePriceSizeV1 } from \"./scaling\";\n\nexport {\n isUserCancellation,\n type ExternalSigner,\n type SigningStrategy,\n} from \"./signing\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":";;;AAAA,iCAoBiB;AAnBf,sGAAA,aAAa,OAAA;AACb,oGAAA,WAAW,OAAA;AACX,sGAAA,aAAa,OAAA;AACb,0GAAA,iBAAiB,OAAA;AACjB,kGAAA,SAAS,OAAA;AACT,0GAAA,iBAAiB,OAAA;AACjB,kGAAA,SAAS,OAAA;AACT,wGAAA,eAAe,OAAA;AACf,mGAAA,UAAU,OAAA;AACV,6FAAA,IAAI,OAAA;AACJ,oGAAA,WAAW,OAAA;AACX,4GAAA,mBAAmB,OAAA;AACnB,sGAAA,aAAa,OAAA;AACb,oGAAA,WAAW,OAAA;AACX,0GAAA,iBAAiB,OAAA;AAOnB,+CAKwB;AAJtB,kHAAA,kBAAkB,OAAA;AAClB,6GAAA,aAAa,OAAA;AAKf,yCAA4C;AAAnC,0GAAA,aAAa,OAAA;AAEtB,iCAA8D;AAArD,sGAAA,aAAa,OAAA;AAAE,+FAAA,MAAM,OAAA;AAAE,qGAAA,YAAY,OAAA;AAE5C,qCAQmB;AAPjB,2GAAA,gBAAgB,OAAA;AAChB,yGAAA,cAAc,OAAA;AACd,+GAAA,oBAAoB,OAAA;AACpB,uGAAA,YAAY,OAAA;AAMd,oCAAoC;AACpC,qCAAqE;AAA5D,2GAAA,oBAAoB,OAAoB;AAEjD,qCAImB;AAHjB,6GAAA,kBAAkB,OAAA","sourcesContent":["export {\n asOrderBookId,\n asPubkeyStr,\n DepositSource,\n deriveOrderbookId,\n parseSide,\n resolutionSeconds,\n sideLabel,\n OrderUpdateType,\n Resolution,\n Side,\n TimeInForce,\n TriggerResultStatus,\n TriggerStatus,\n TriggerType,\n TriggerUpdateType,\n type Branded,\n type OrderBookId,\n type PubkeyStr,\n type SubmitOrderRequest,\n} from \"./types\";\n\nexport {\n ApiRejectedDetails,\n isApiResponse,\n type ApiRejectedDetailsWire,\n type ApiResponse,\n} from \"./api_response\";\n\nexport { RejectionCode } from \"./rejection\";\n\nexport { formatDecimal, isZero, parseDecimal } from \"./price\";\n\nexport {\n alignPriceToTick,\n scalePriceSize,\n scalePriceSizeLegacy,\n ScalingError,\n type LegacyScaledAmounts,\n type OrderbookDecimals,\n type ScaledAmounts,\n} from \"./scaling\";\n\n// Backward-compatible name from v1.\nexport { scalePriceSizeLegacy as scalePriceSizeV1 } from \"./scaling\";\n\nexport {\n isUserCancellation,\n type ExternalSigner,\n type SigningStrategy,\n} from \"./signing\";\n"]}
@@ -0,0 +1,9 @@
1
+ export declare class RejectionCode {
2
+ readonly raw: string;
3
+ private constructor();
4
+ static from(raw: string): RejectionCode;
5
+ label(): string;
6
+ wireName(): string;
7
+ toString(): string;
8
+ }
9
+ //# sourceMappingURL=rejection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rejection.d.ts","sourceRoot":"","sources":["../../src/shared/rejection.ts"],"names":[],"mappings":"AAqBA,qBAAa,aAAa;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,OAAO;IAIP,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa;IAIvC,KAAK,IAAI,MAAM;IAQf,QAAQ,IAAI,MAAM;IAQlB,QAAQ,IAAI,MAAM;CAGnB"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RejectionCode = void 0;
4
+ const REJECTION_CODE_LABELS = {
5
+ INSUFFICIENT_BALANCE: "Insufficient Balance",
6
+ EXPIRED: "Expired",
7
+ NONCE_MISMATCH: "Nonce Mismatch",
8
+ SELF_TRADE: "Self Trade",
9
+ MARKET_INACTIVE: "Market Inactive",
10
+ BELOW_MIN_ORDER_SIZE: "Below Min Order Size",
11
+ INVALID_NONCE: "Invalid Nonce",
12
+ BROADCAST_FAILURE: "Broadcast Failure",
13
+ ORDER_NOT_FOUND: "Order Not Found",
14
+ NOT_ORDER_MAKER: "Not Order Maker",
15
+ ORDER_ALREADY_FILLED: "Order Already Filled",
16
+ ORDER_ALREADY_CANCELLED: "Order Already Cancelled",
17
+ };
18
+ function normalizeRejectionCode(raw) {
19
+ return raw.toUpperCase();
20
+ }
21
+ class RejectionCode {
22
+ raw;
23
+ constructor(raw) {
24
+ this.raw = raw;
25
+ }
26
+ static from(raw) {
27
+ return new RejectionCode(raw);
28
+ }
29
+ label() {
30
+ const normalized = normalizeRejectionCode(this.raw);
31
+ if (normalized in REJECTION_CODE_LABELS) {
32
+ return REJECTION_CODE_LABELS[normalized];
33
+ }
34
+ return this.raw;
35
+ }
36
+ wireName() {
37
+ const normalized = normalizeRejectionCode(this.raw);
38
+ if (normalized in REJECTION_CODE_LABELS) {
39
+ return normalized;
40
+ }
41
+ return this.raw;
42
+ }
43
+ toString() {
44
+ return this.label();
45
+ }
46
+ }
47
+ exports.RejectionCode = RejectionCode;
48
+ //# sourceMappingURL=rejection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rejection.js","sourceRoot":"","sources":["../../src/shared/rejection.ts"],"names":[],"mappings":";;;AAAA,MAAM,qBAAqB,GAAG;IAC5B,oBAAoB,EAAE,sBAAsB;IAC5C,OAAO,EAAE,SAAS;IAClB,cAAc,EAAE,gBAAgB;IAChC,UAAU,EAAE,YAAY;IACxB,eAAe,EAAE,iBAAiB;IAClC,oBAAoB,EAAE,sBAAsB;IAC5C,aAAa,EAAE,eAAe;IAC9B,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,oBAAoB,EAAE,sBAAsB;IAC5C,uBAAuB,EAAE,yBAAyB;CAC1C,CAAC;AAIX,SAAS,sBAAsB,CAAC,GAAW;IACzC,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;AAC3B,CAAC;AAED,MAAa,aAAa;IACf,GAAG,CAAS;IAErB,YAAoB,GAAW;QAC7B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,GAAW;QACrB,OAAO,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,KAAK;QACH,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,UAAU,IAAI,qBAAqB,EAAE,CAAC;YACxC,OAAO,qBAAqB,CAAC,UAAgC,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,QAAQ;QACN,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,UAAU,IAAI,qBAAqB,EAAE,CAAC;YACxC,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF;AA9BD,sCA8BC","sourcesContent":["const REJECTION_CODE_LABELS = {\n INSUFFICIENT_BALANCE: \"Insufficient Balance\",\n EXPIRED: \"Expired\",\n NONCE_MISMATCH: \"Nonce Mismatch\",\n SELF_TRADE: \"Self Trade\",\n MARKET_INACTIVE: \"Market Inactive\",\n BELOW_MIN_ORDER_SIZE: \"Below Min Order Size\",\n INVALID_NONCE: \"Invalid Nonce\",\n BROADCAST_FAILURE: \"Broadcast Failure\",\n ORDER_NOT_FOUND: \"Order Not Found\",\n NOT_ORDER_MAKER: \"Not Order Maker\",\n ORDER_ALREADY_FILLED: \"Order Already Filled\",\n ORDER_ALREADY_CANCELLED: \"Order Already Cancelled\",\n} as const;\n\ntype KnownRejectionCode = keyof typeof REJECTION_CODE_LABELS;\n\nfunction normalizeRejectionCode(raw: string): string {\n return raw.toUpperCase();\n}\n\nexport class RejectionCode {\n readonly raw: string;\n\n private constructor(raw: string) {\n this.raw = raw;\n }\n\n static from(raw: string): RejectionCode {\n return new RejectionCode(raw);\n }\n\n label(): string {\n const normalized = normalizeRejectionCode(this.raw);\n if (normalized in REJECTION_CODE_LABELS) {\n return REJECTION_CODE_LABELS[normalized as KnownRejectionCode];\n }\n return this.raw;\n }\n\n wireName(): string {\n const normalized = normalizeRejectionCode(this.raw);\n if (normalized in REJECTION_CODE_LABELS) {\n return normalized;\n }\n return this.raw;\n }\n\n toString(): string {\n return this.label();\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import type { MarketEvent } from "../domain/market";
2
- import type { AuthUpdate, UserUpdate } from "../domain/order";
2
+ import { type AuthUpdate, type UserUpdate } from "../domain/order/wire";
3
3
  import type { OrderBook, WsTickerData } from "../domain/orderbook";
4
4
  import type { DepositPrice, PriceHistory } from "../domain/price_history";
5
5
  import type { WsTrade } from "../domain/trade";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ws/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ws/index.ts"],"names":[],"mappings":"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"}
package/dist/ws/index.js CHANGED
@@ -32,6 +32,7 @@ exports.unsubscribeMarket = unsubscribeMarket;
32
32
  exports.subscribeDepositPrice = subscribeDepositPrice;
33
33
  exports.unsubscribeDepositPrice = unsubscribeDepositPrice;
34
34
  exports.parseMessageIn = parseMessageIn;
35
+ const wire_1 = require("../domain/order/wire");
35
36
  const error_1 = require("../error");
36
37
  const env_1 = require("../env");
37
38
  __exportStar(require("./client.node"), exports);
@@ -225,6 +226,13 @@ function parseMessageIn(input) {
225
226
  if (!("data" in obj) || typeof obj.data !== "object" || obj.data === null) {
226
227
  throw new error_1.WsError("ProtocolError", `Invalid WS message: missing or invalid "data" field`);
227
228
  }
228
- return parsed;
229
+ const message = parsed;
230
+ if (message.type === "user") {
231
+ return {
232
+ ...message,
233
+ data: (0, wire_1.normalizeUserUpdate)(message.data),
234
+ };
235
+ }
236
+ return message;
229
237
  }
230
238
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ws/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AA0EA,wCAYC;AAED,oBAEC;AAED,wCAQC;AAED,4CAQC;AAED,0CAQC;AAED,8CAQC;AAED,sCAQC;AAED,0CAQC;AAED,sDAUC;AAED,0DASC;AAED,0CAQC;AAED,8CAQC;AAED,0CAQC;AAED,8CAQC;AAED,sDASC;AAED,0DASC;AAeD,wCAgBC;AArQD,oCAAmD;AACnD,gCAA6C;AAG7C,gDAA8B;AAC9B,kDAAgC;AAgDnB,QAAA,iBAAiB,GAAa;IACzC,GAAG,EAAE,IAAA,WAAK,EAAC,kBAAY,CAAC,IAAI,CAAC;IAC7B,SAAS,EAAE,IAAI;IACf,oBAAoB,EAAE,EAAE;IACxB,oBAAoB,EAAE,KAAK;IAC3B,cAAc,EAAE,MAAM;IACtB,aAAa,EAAE,MAAM;CACtB,CAAC;AAEF,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,uDAAc,CAAA;IACd,2CAAQ,CAAA;IACR,iDAAW,CAAA;IACX,+CAAU,CAAA;AACZ,CAAC,EALW,UAAU,0BAAV,UAAU,QAKrB;AAED,SAAgB,cAAc,CAAC,KAAa;IAC1C,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,CAAC;YACJ,OAAO,UAAU,CAAC,UAAU,CAAC;QAC/B,KAAK,CAAC;YACJ,OAAO,UAAU,CAAC,IAAI,CAAC;QACzB,KAAK,CAAC;YACJ,OAAO,UAAU,CAAC,OAAO,CAAC;QAC5B,KAAK,CAAC,CAAC;QACP;YACE,OAAO,UAAU,CAAC,MAAM,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAgB,IAAI;IAClB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED,SAAgB,cAAc,CAAC,YAA2B;IACxD,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE;YACN,IAAI,EAAE,aAAa;YACnB,aAAa,EAAE,YAAY;SAC5B;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,YAA2B;IAC1D,OAAO;QACL,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE;YACN,IAAI,EAAE,aAAa;YACnB,aAAa,EAAE,YAAY;SAC5B;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,eAAe,CAAC,YAA2B;IACzD,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,aAAa,EAAE,YAAY;SAC5B;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,YAA2B;IAC3D,OAAO;QACL,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,aAAa,EAAE,YAAY;SAC5B;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,aAAwB;IACpD,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE;YACN,IAAI,EAAE,MAAM;YACZ,cAAc,EAAE,aAAa;SAC9B;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,eAAe,CAAC,aAAwB;IACtD,OAAO;QACL,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE;YACN,IAAI,EAAE,MAAM;YACZ,cAAc,EAAE,aAAa;SAC9B;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,qBAAqB,CAAC,WAAwB,EAAE,UAAsB;IACpF,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE;YACN,IAAI,EAAE,eAAe;YACrB,YAAY,EAAE,WAAW;YACzB,UAAU;YACV,aAAa,EAAE,KAAK;SACrB;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,uBAAuB,CAAC,WAAwB,EAAE,UAAsB;IACtF,OAAO;QACL,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE;YACN,IAAI,EAAE,eAAe;YACrB,YAAY,EAAE,WAAW;YACzB,UAAU;SACX;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,eAAe,CAAC,YAA2B;IACzD,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,aAAa,EAAE,YAAY;SAC5B;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,YAA2B;IAC3D,OAAO;QACL,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,aAAa,EAAE,YAAY;SAC5B;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,eAAe,CAAC,YAAuB;IACrD,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,aAAa,EAAE,YAAY;SAC5B;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,YAAuB;IACvD,OAAO;QACL,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,aAAa,EAAE,YAAY;SAC5B;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,qBAAqB,CAAC,YAAoB,EAAE,UAAsB;IAChF,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE;YACN,IAAI,EAAE,eAAe;YACrB,aAAa,EAAE,YAAY;YAC3B,UAAU;SACX;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,uBAAuB,CAAC,YAAoB,EAAE,UAAsB;IAClF,OAAO;QACL,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE;YACN,IAAI,EAAE,eAAe;YACrB,aAAa,EAAE,YAAY;YAC3B,UAAU;SACX;KACF,CAAC;AACJ,CAAC;AAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,aAAa;IACb,MAAM;IACN,MAAM;IACN,OAAO;IACP,eAAe;IACf,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,eAAe;CAChB,CAAC,CAAC;AAEH,SAAgB,cAAc,CAAC,KAAa;IAC1C,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,eAAY,CAAC,eAAe,EAAE,0CAA0C,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,GAAG,GAAG,MAAiC,CAAC;IAC9C,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,eAAY,CAAC,eAAe,EAAE,6BAA6B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC3D,MAAM,IAAI,eAAY,CAAC,eAAe,EAAE,wDAAwD,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC1E,MAAM,IAAI,eAAY,CAAC,eAAe,EAAE,qDAAqD,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,MAAmB,CAAC;AAC7B,CAAC","sourcesContent":["import type { MarketEvent } from \"../domain/market\";\nimport type { AuthUpdate, UserUpdate } from \"../domain/order\";\nimport type { OrderBook, WsTickerData } from \"../domain/orderbook\";\nimport type { DepositPrice, PriceHistory } from \"../domain/price_history\";\nimport type { WsTrade } from \"../domain/trade\";\nimport { WsError as WsErrorClass } from \"../error\";\nimport { LightconeEnv, wsUrl } from \"../env\";\nimport type { OrderBookId, PubkeyStr, Resolution } from \"../shared\";\n\nexport * from \"./client.node\";\nexport * from \"./subscriptions\";\nexport type { IWsClient } from \"./types\";\n\nexport type MessageOut =\n | { method: \"subscribe\"; params: import(\"./subscriptions\").SubscribeParams }\n | { method: \"unsubscribe\"; params: import(\"./subscriptions\").UnsubscribeParams }\n | { method: \"ping\" };\n\nexport type MessageIn =\n | { type: \"book_update\"; version: number; data: OrderBook }\n | { type: \"pong\"; version: number; data: Record<string, never> }\n | { type: \"user\"; version: number; data: UserUpdate }\n | { type: \"error\"; version: number; data: WsError }\n | { type: \"price_history\"; version: number; data: PriceHistory }\n | { type: \"trades\"; version: number; data: WsTrade }\n | { type: \"auth\"; version: number; data: AuthUpdate }\n | { type: \"ticker\"; version: number; data: WsTickerData }\n | { type: \"market\"; version: number; data: MarketEvent }\n | { type: \"deposit_price\"; version: number; data: DepositPrice };\n\nexport type Kind = MessageIn;\n\nexport interface WsError {\n error: string;\n code?: string;\n orderbook_id?: string;\n wallet_address?: string;\n deposit_asset?: string;\n hint?: string;\n details?: string;\n}\n\nexport type WsEvent =\n | { type: \"Message\"; message: MessageIn }\n | { type: \"Connected\" }\n | { type: \"Disconnected\"; code?: number; reason: string }\n | { type: \"Error\"; error: string }\n | { type: \"MaxReconnectReached\" };\n\nexport interface WsConfig {\n url: string;\n reconnect: boolean;\n maxReconnectAttempts: number;\n baseReconnectDelayMs: number;\n pingIntervalMs: number;\n pongTimeoutMs: number;\n}\n\nexport const WS_DEFAULT_CONFIG: WsConfig = {\n url: wsUrl(LightconeEnv.Prod),\n reconnect: true,\n maxReconnectAttempts: 10,\n baseReconnectDelayMs: 1_000,\n pingIntervalMs: 30_000,\n pongTimeoutMs: 10_000,\n};\n\nexport enum ReadyState {\n Connecting = 0,\n Open = 1,\n Closing = 2,\n Closed = 3,\n}\n\nexport function readyStateFrom(value: number): ReadyState {\n switch (value) {\n case 0:\n return ReadyState.Connecting;\n case 1:\n return ReadyState.Open;\n case 2:\n return ReadyState.Closing;\n case 3:\n default:\n return ReadyState.Closed;\n }\n}\n\nexport function ping(): MessageOut {\n return { method: \"ping\" };\n}\n\nexport function subscribeBooks(orderbookIds: OrderBookId[]): MessageOut {\n return {\n method: \"subscribe\",\n params: {\n type: \"book_update\",\n orderbook_ids: orderbookIds,\n },\n };\n}\n\nexport function unsubscribeBooks(orderbookIds: OrderBookId[]): MessageOut {\n return {\n method: \"unsubscribe\",\n params: {\n type: \"book_update\",\n orderbook_ids: orderbookIds,\n },\n };\n}\n\nexport function subscribeTrades(orderbookIds: OrderBookId[]): MessageOut {\n return {\n method: \"subscribe\",\n params: {\n type: \"trades\",\n orderbook_ids: orderbookIds,\n },\n };\n}\n\nexport function unsubscribeTrades(orderbookIds: OrderBookId[]): MessageOut {\n return {\n method: \"unsubscribe\",\n params: {\n type: \"trades\",\n orderbook_ids: orderbookIds,\n },\n };\n}\n\nexport function subscribeUser(walletAddress: PubkeyStr): MessageOut {\n return {\n method: \"subscribe\",\n params: {\n type: \"user\",\n wallet_address: walletAddress,\n },\n };\n}\n\nexport function unsubscribeUser(walletAddress: PubkeyStr): MessageOut {\n return {\n method: \"unsubscribe\",\n params: {\n type: \"user\",\n wallet_address: walletAddress,\n },\n };\n}\n\nexport function subscribePriceHistory(orderbookId: OrderBookId, resolution: Resolution): MessageOut {\n return {\n method: \"subscribe\",\n params: {\n type: \"price_history\",\n orderbook_id: orderbookId,\n resolution,\n include_ohlcv: false,\n },\n };\n}\n\nexport function unsubscribePriceHistory(orderbookId: OrderBookId, resolution: Resolution): MessageOut {\n return {\n method: \"unsubscribe\",\n params: {\n type: \"price_history\",\n orderbook_id: orderbookId,\n resolution,\n },\n };\n}\n\nexport function subscribeTicker(orderbookIds: OrderBookId[]): MessageOut {\n return {\n method: \"subscribe\",\n params: {\n type: \"ticker\",\n orderbook_ids: orderbookIds,\n },\n };\n}\n\nexport function unsubscribeTicker(orderbookIds: OrderBookId[]): MessageOut {\n return {\n method: \"unsubscribe\",\n params: {\n type: \"ticker\",\n orderbook_ids: orderbookIds,\n },\n };\n}\n\nexport function subscribeMarket(marketPubkey: PubkeyStr): MessageOut {\n return {\n method: \"subscribe\",\n params: {\n type: \"market\",\n market_pubkey: marketPubkey,\n },\n };\n}\n\nexport function unsubscribeMarket(marketPubkey: PubkeyStr): MessageOut {\n return {\n method: \"unsubscribe\",\n params: {\n type: \"market\",\n market_pubkey: marketPubkey,\n },\n };\n}\n\nexport function subscribeDepositPrice(depositAsset: string, resolution: Resolution): MessageOut {\n return {\n method: \"subscribe\",\n params: {\n type: \"deposit_price\",\n deposit_asset: depositAsset,\n resolution,\n },\n };\n}\n\nexport function unsubscribeDepositPrice(depositAsset: string, resolution: Resolution): MessageOut {\n return {\n method: \"unsubscribe\",\n params: {\n type: \"deposit_price\",\n deposit_asset: depositAsset,\n resolution,\n },\n };\n}\n\nconst VALID_MESSAGE_TYPES = new Set([\n \"book_update\",\n \"pong\",\n \"user\",\n \"error\",\n \"price_history\",\n \"trades\",\n \"auth\",\n \"ticker\",\n \"market\",\n \"deposit_price\",\n]);\n\nexport function parseMessageIn(input: string): MessageIn {\n const parsed: unknown = JSON.parse(input);\n if (typeof parsed !== \"object\" || parsed === null || !(\"type\" in parsed)) {\n throw new WsErrorClass(\"ProtocolError\", `Invalid WS message: missing \"type\" field`);\n }\n const obj = parsed as Record<string, unknown>;\n if (typeof obj.type !== \"string\" || !VALID_MESSAGE_TYPES.has(obj.type)) {\n throw new WsErrorClass(\"ProtocolError\", `Invalid WS message type: \"${String(obj.type)}\"`);\n }\n if (!(\"version\" in obj) || typeof obj.version !== \"number\") {\n throw new WsErrorClass(\"ProtocolError\", `Invalid WS message: missing or invalid \"version\" field`);\n }\n if (!(\"data\" in obj) || typeof obj.data !== \"object\" || obj.data === null) {\n throw new WsErrorClass(\"ProtocolError\", `Invalid WS message: missing or invalid \"data\" field`);\n }\n return parsed as MessageIn;\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ws/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { MarketEvent } from \"../domain/market\";\nimport { normalizeUserUpdate, type AuthUpdate, type UserUpdate } from \"../domain/order/wire\";\nimport type { OrderBook, WsTickerData } from \"../domain/orderbook\";\nimport type { DepositPrice, PriceHistory } from \"../domain/price_history\";\nimport type { WsTrade } from \"../domain/trade\";\nimport { WsError as WsErrorClass } from \"../error\";\nimport { LightconeEnv, wsUrl } from \"../env\";\nimport type { OrderBookId, PubkeyStr, Resolution } from \"../shared\";\n\nexport * from \"./client.node\";\nexport * from \"./subscriptions\";\nexport type { IWsClient } from \"./types\";\n\nexport type MessageOut =\n | { method: \"subscribe\"; params: import(\"./subscriptions\").SubscribeParams }\n | { method: \"unsubscribe\"; params: import(\"./subscriptions\").UnsubscribeParams }\n | { method: \"ping\" };\n\nexport type MessageIn =\n | { type: \"book_update\"; version: number; data: OrderBook }\n | { type: \"pong\"; version: number; data: Record<string, never> }\n | { type: \"user\"; version: number; data: UserUpdate }\n | { type: \"error\"; version: number; data: WsError }\n | { type: \"price_history\"; version: number; data: PriceHistory }\n | { type: \"trades\"; version: number; data: WsTrade }\n | { type: \"auth\"; version: number; data: AuthUpdate }\n | { type: \"ticker\"; version: number; data: WsTickerData }\n | { type: \"market\"; version: number; data: MarketEvent }\n | { type: \"deposit_price\"; version: number; data: DepositPrice };\n\nexport type Kind = MessageIn;\n\nexport interface WsError {\n error: string;\n code?: string;\n orderbook_id?: string;\n wallet_address?: string;\n deposit_asset?: string;\n hint?: string;\n details?: string;\n}\n\nexport type WsEvent =\n | { type: \"Message\"; message: MessageIn }\n | { type: \"Connected\" }\n | { type: \"Disconnected\"; code?: number; reason: string }\n | { type: \"Error\"; error: string }\n | { type: \"MaxReconnectReached\" };\n\nexport interface WsConfig {\n url: string;\n reconnect: boolean;\n maxReconnectAttempts: number;\n baseReconnectDelayMs: number;\n pingIntervalMs: number;\n pongTimeoutMs: number;\n}\n\nexport const WS_DEFAULT_CONFIG: WsConfig = {\n url: wsUrl(LightconeEnv.Prod),\n reconnect: true,\n maxReconnectAttempts: 10,\n baseReconnectDelayMs: 1_000,\n pingIntervalMs: 30_000,\n pongTimeoutMs: 10_000,\n};\n\nexport enum ReadyState {\n Connecting = 0,\n Open = 1,\n Closing = 2,\n Closed = 3,\n}\n\nexport function readyStateFrom(value: number): ReadyState {\n switch (value) {\n case 0:\n return ReadyState.Connecting;\n case 1:\n return ReadyState.Open;\n case 2:\n return ReadyState.Closing;\n case 3:\n default:\n return ReadyState.Closed;\n }\n}\n\nexport function ping(): MessageOut {\n return { method: \"ping\" };\n}\n\nexport function subscribeBooks(orderbookIds: OrderBookId[]): MessageOut {\n return {\n method: \"subscribe\",\n params: {\n type: \"book_update\",\n orderbook_ids: orderbookIds,\n },\n };\n}\n\nexport function unsubscribeBooks(orderbookIds: OrderBookId[]): MessageOut {\n return {\n method: \"unsubscribe\",\n params: {\n type: \"book_update\",\n orderbook_ids: orderbookIds,\n },\n };\n}\n\nexport function subscribeTrades(orderbookIds: OrderBookId[]): MessageOut {\n return {\n method: \"subscribe\",\n params: {\n type: \"trades\",\n orderbook_ids: orderbookIds,\n },\n };\n}\n\nexport function unsubscribeTrades(orderbookIds: OrderBookId[]): MessageOut {\n return {\n method: \"unsubscribe\",\n params: {\n type: \"trades\",\n orderbook_ids: orderbookIds,\n },\n };\n}\n\nexport function subscribeUser(walletAddress: PubkeyStr): MessageOut {\n return {\n method: \"subscribe\",\n params: {\n type: \"user\",\n wallet_address: walletAddress,\n },\n };\n}\n\nexport function unsubscribeUser(walletAddress: PubkeyStr): MessageOut {\n return {\n method: \"unsubscribe\",\n params: {\n type: \"user\",\n wallet_address: walletAddress,\n },\n };\n}\n\nexport function subscribePriceHistory(orderbookId: OrderBookId, resolution: Resolution): MessageOut {\n return {\n method: \"subscribe\",\n params: {\n type: \"price_history\",\n orderbook_id: orderbookId,\n resolution,\n include_ohlcv: false,\n },\n };\n}\n\nexport function unsubscribePriceHistory(orderbookId: OrderBookId, resolution: Resolution): MessageOut {\n return {\n method: \"unsubscribe\",\n params: {\n type: \"price_history\",\n orderbook_id: orderbookId,\n resolution,\n },\n };\n}\n\nexport function subscribeTicker(orderbookIds: OrderBookId[]): MessageOut {\n return {\n method: \"subscribe\",\n params: {\n type: \"ticker\",\n orderbook_ids: orderbookIds,\n },\n };\n}\n\nexport function unsubscribeTicker(orderbookIds: OrderBookId[]): MessageOut {\n return {\n method: \"unsubscribe\",\n params: {\n type: \"ticker\",\n orderbook_ids: orderbookIds,\n },\n };\n}\n\nexport function subscribeMarket(marketPubkey: PubkeyStr): MessageOut {\n return {\n method: \"subscribe\",\n params: {\n type: \"market\",\n market_pubkey: marketPubkey,\n },\n };\n}\n\nexport function unsubscribeMarket(marketPubkey: PubkeyStr): MessageOut {\n return {\n method: \"unsubscribe\",\n params: {\n type: \"market\",\n market_pubkey: marketPubkey,\n },\n };\n}\n\nexport function subscribeDepositPrice(depositAsset: string, resolution: Resolution): MessageOut {\n return {\n method: \"subscribe\",\n params: {\n type: \"deposit_price\",\n deposit_asset: depositAsset,\n resolution,\n },\n };\n}\n\nexport function unsubscribeDepositPrice(depositAsset: string, resolution: Resolution): MessageOut {\n return {\n method: \"unsubscribe\",\n params: {\n type: \"deposit_price\",\n deposit_asset: depositAsset,\n resolution,\n },\n };\n}\n\nconst VALID_MESSAGE_TYPES = new Set([\n \"book_update\",\n \"pong\",\n \"user\",\n \"error\",\n \"price_history\",\n \"trades\",\n \"auth\",\n \"ticker\",\n \"market\",\n \"deposit_price\",\n]);\n\nexport function parseMessageIn(input: string): MessageIn {\n const parsed: unknown = JSON.parse(input);\n if (typeof parsed !== \"object\" || parsed === null || !(\"type\" in parsed)) {\n throw new WsErrorClass(\"ProtocolError\", `Invalid WS message: missing \"type\" field`);\n }\n const obj = parsed as Record<string, unknown>;\n if (typeof obj.type !== \"string\" || !VALID_MESSAGE_TYPES.has(obj.type)) {\n throw new WsErrorClass(\"ProtocolError\", `Invalid WS message type: \"${String(obj.type)}\"`);\n }\n if (!(\"version\" in obj) || typeof obj.version !== \"number\") {\n throw new WsErrorClass(\"ProtocolError\", `Invalid WS message: missing or invalid \"version\" field`);\n }\n if (!(\"data\" in obj) || typeof obj.data !== \"object\" || obj.data === null) {\n throw new WsErrorClass(\"ProtocolError\", `Invalid WS message: missing or invalid \"data\" field`);\n }\n const message = parsed as MessageIn;\n if (message.type === \"user\") {\n return {\n ...message,\n data: normalizeUserUpdate(message.data as Parameters<typeof normalizeUserUpdate>[0]),\n };\n }\n return message;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lightconexyz/lightcone-sdk",
3
- "version": "0.4.16",
3
+ "version": "0.5.1",
4
4
  "description": "TypeScript SDK for Lightcone",
5
5
  "author": "Lightcone",
6
6
  "license": "MIT",