@lightconexyz/lightcone-sdk 0.1.0

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 (158) hide show
  1. package/README.md +232 -0
  2. package/dist/api/client.d.ts +225 -0
  3. package/dist/api/client.d.ts.map +1 -0
  4. package/dist/api/client.js +452 -0
  5. package/dist/api/client.js.map +1 -0
  6. package/dist/api/error.d.ts +58 -0
  7. package/dist/api/error.d.ts.map +1 -0
  8. package/dist/api/error.js +98 -0
  9. package/dist/api/error.js.map +1 -0
  10. package/dist/api/index.d.ts +23 -0
  11. package/dist/api/index.d.ts.map +1 -0
  12. package/dist/api/index.js +51 -0
  13. package/dist/api/index.js.map +1 -0
  14. package/dist/api/types/admin.d.ts +49 -0
  15. package/dist/api/types/admin.d.ts.map +1 -0
  16. package/dist/api/types/admin.js +13 -0
  17. package/dist/api/types/admin.js.map +1 -0
  18. package/dist/api/types/index.d.ts +14 -0
  19. package/dist/api/types/index.d.ts.map +1 -0
  20. package/dist/api/types/index.js +13 -0
  21. package/dist/api/types/index.js.map +1 -0
  22. package/dist/api/types/market.d.ts +186 -0
  23. package/dist/api/types/market.d.ts.map +1 -0
  24. package/dist/api/types/market.js +6 -0
  25. package/dist/api/types/market.js.map +1 -0
  26. package/dist/api/types/order.d.ts +190 -0
  27. package/dist/api/types/order.d.ts.map +1 -0
  28. package/dist/api/types/order.js +6 -0
  29. package/dist/api/types/order.js.map +1 -0
  30. package/dist/api/types/orderbook.d.ts +36 -0
  31. package/dist/api/types/orderbook.d.ts.map +1 -0
  32. package/dist/api/types/orderbook.js +6 -0
  33. package/dist/api/types/orderbook.js.map +1 -0
  34. package/dist/api/types/position.d.ts +60 -0
  35. package/dist/api/types/position.d.ts.map +1 -0
  36. package/dist/api/types/position.js +6 -0
  37. package/dist/api/types/position.js.map +1 -0
  38. package/dist/api/types/price_history.d.ts +68 -0
  39. package/dist/api/types/price_history.d.ts.map +1 -0
  40. package/dist/api/types/price_history.js +13 -0
  41. package/dist/api/types/price_history.js.map +1 -0
  42. package/dist/api/types/trade.d.ts +67 -0
  43. package/dist/api/types/trade.d.ts.map +1 -0
  44. package/dist/api/types/trade.js +13 -0
  45. package/dist/api/types/trade.js.map +1 -0
  46. package/dist/api/validation.d.ts +24 -0
  47. package/dist/api/validation.d.ts.map +1 -0
  48. package/dist/api/validation.js +53 -0
  49. package/dist/api/validation.js.map +1 -0
  50. package/dist/auth.d.ts +80 -0
  51. package/dist/auth.d.ts.map +1 -0
  52. package/dist/auth.js +149 -0
  53. package/dist/auth.js.map +1 -0
  54. package/dist/index.d.ts +55 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +107 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/network.d.ts +5 -0
  59. package/dist/network.d.ts.map +1 -0
  60. package/dist/network.js +8 -0
  61. package/dist/network.js.map +1 -0
  62. package/dist/program/accounts.d.ts +98 -0
  63. package/dist/program/accounts.d.ts.map +1 -0
  64. package/dist/program/accounts.js +319 -0
  65. package/dist/program/accounts.js.map +1 -0
  66. package/dist/program/builder.d.ts +94 -0
  67. package/dist/program/builder.d.ts.map +1 -0
  68. package/dist/program/builder.js +175 -0
  69. package/dist/program/builder.js.map +1 -0
  70. package/dist/program/client.d.ts +56 -0
  71. package/dist/program/client.d.ts.map +1 -0
  72. package/dist/program/client.js +288 -0
  73. package/dist/program/client.js.map +1 -0
  74. package/dist/program/constants.d.ts +108 -0
  75. package/dist/program/constants.d.ts.map +1 -0
  76. package/dist/program/constants.js +112 -0
  77. package/dist/program/constants.js.map +1 -0
  78. package/dist/program/index.d.ts +14 -0
  79. package/dist/program/index.d.ts.map +1 -0
  80. package/dist/program/index.js +149 -0
  81. package/dist/program/index.js.map +1 -0
  82. package/dist/program/instructions.d.ts +248 -0
  83. package/dist/program/instructions.d.ts.map +1 -0
  84. package/dist/program/instructions.js +692 -0
  85. package/dist/program/instructions.js.map +1 -0
  86. package/dist/program/orders.d.ts +151 -0
  87. package/dist/program/orders.d.ts.map +1 -0
  88. package/dist/program/orders.js +417 -0
  89. package/dist/program/orders.js.map +1 -0
  90. package/dist/program/pda.d.ts +73 -0
  91. package/dist/program/pda.d.ts.map +1 -0
  92. package/dist/program/pda.js +131 -0
  93. package/dist/program/pda.js.map +1 -0
  94. package/dist/program/types.d.ts +380 -0
  95. package/dist/program/types.d.ts.map +1 -0
  96. package/dist/program/types.js +27 -0
  97. package/dist/program/types.js.map +1 -0
  98. package/dist/program/utils.d.ts +91 -0
  99. package/dist/program/utils.d.ts.map +1 -0
  100. package/dist/program/utils.js +219 -0
  101. package/dist/program/utils.js.map +1 -0
  102. package/dist/shared/index.d.ts +8 -0
  103. package/dist/shared/index.d.ts.map +1 -0
  104. package/dist/shared/index.js +18 -0
  105. package/dist/shared/index.js.map +1 -0
  106. package/dist/shared/price.d.ts +41 -0
  107. package/dist/shared/price.d.ts.map +1 -0
  108. package/dist/shared/price.js +57 -0
  109. package/dist/shared/price.js.map +1 -0
  110. package/dist/shared/scaling.d.ts +45 -0
  111. package/dist/shared/scaling.d.ts.map +1 -0
  112. package/dist/shared/scaling.js +84 -0
  113. package/dist/shared/scaling.js.map +1 -0
  114. package/dist/shared/types.d.ts +19 -0
  115. package/dist/shared/types.d.ts.map +1 -0
  116. package/dist/shared/types.js +23 -0
  117. package/dist/shared/types.js.map +1 -0
  118. package/dist/websocket/client.d.ts +238 -0
  119. package/dist/websocket/client.d.ts.map +1 -0
  120. package/dist/websocket/client.js +580 -0
  121. package/dist/websocket/client.js.map +1 -0
  122. package/dist/websocket/error.d.ts +47 -0
  123. package/dist/websocket/error.d.ts.map +1 -0
  124. package/dist/websocket/error.js +83 -0
  125. package/dist/websocket/error.js.map +1 -0
  126. package/dist/websocket/handlers.d.ts +97 -0
  127. package/dist/websocket/handlers.d.ts.map +1 -0
  128. package/dist/websocket/handlers.js +277 -0
  129. package/dist/websocket/handlers.js.map +1 -0
  130. package/dist/websocket/index.d.ts +38 -0
  131. package/dist/websocket/index.d.ts.map +1 -0
  132. package/dist/websocket/index.js +75 -0
  133. package/dist/websocket/index.js.map +1 -0
  134. package/dist/websocket/state/index.d.ts +7 -0
  135. package/dist/websocket/state/index.d.ts.map +1 -0
  136. package/dist/websocket/state/index.js +14 -0
  137. package/dist/websocket/state/index.js.map +1 -0
  138. package/dist/websocket/state/orderbook.d.ts +107 -0
  139. package/dist/websocket/state/orderbook.d.ts.map +1 -0
  140. package/dist/websocket/state/orderbook.js +293 -0
  141. package/dist/websocket/state/orderbook.js.map +1 -0
  142. package/dist/websocket/state/price.d.ts +108 -0
  143. package/dist/websocket/state/price.d.ts.map +1 -0
  144. package/dist/websocket/state/price.js +243 -0
  145. package/dist/websocket/state/price.js.map +1 -0
  146. package/dist/websocket/state/user.d.ts +83 -0
  147. package/dist/websocket/state/user.d.ts.map +1 -0
  148. package/dist/websocket/state/user.js +228 -0
  149. package/dist/websocket/state/user.js.map +1 -0
  150. package/dist/websocket/subscriptions.d.ts +143 -0
  151. package/dist/websocket/subscriptions.d.ts.map +1 -0
  152. package/dist/websocket/subscriptions.js +244 -0
  153. package/dist/websocket/subscriptions.js.map +1 -0
  154. package/dist/websocket/types.d.ts +417 -0
  155. package/dist/websocket/types.d.ts.map +1 -0
  156. package/dist/websocket/types.js +195 -0
  157. package/dist/websocket/types.js.map +1 -0
  158. package/package.json +75 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orders.js","sourceRoot":"","sources":["../../src/program/orders.ts"],"names":[],"mappings":"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","sourcesContent":["import { PublicKey, Keypair } from \"@solana/web3.js\";\nimport { sign } from \"tweetnacl\";\nimport {\n SignedOrder,\n Order,\n OrderSide,\n BidOrderParams,\n AskOrderParams,\n} from \"./types\";\nimport { ORDER_SIZE } from \"./constants\";\nimport { keccak256, toU64Le, toI64Le, toU8, toU32Le, fromLeBytes, fromI64Le } from \"./utils\";\n\n// ============================================================================\n// ORDER HASHING\n// ============================================================================\n\n/**\n * Hash an order using keccak256\n * Layout (161 bytes - order without signature):\n * nonce (8) || maker (32) || market (32) || baseMint (32) || quoteMint (32) ||\n * side (1) || makerAmount (8) || takerAmount (8) || expiration (8)\n *\n * @returns 32-byte keccak256 hash\n */\nexport function hashOrder(order: SignedOrder): Buffer {\n const data = Buffer.concat([\n toU64Le(BigInt(order.nonce)),\n order.maker.toBuffer(),\n order.market.toBuffer(),\n order.baseMint.toBuffer(),\n order.quoteMint.toBuffer(),\n toU8(order.side),\n toU64Le(order.makerAmount),\n toU64Le(order.takerAmount),\n toI64Le(order.expiration),\n ]);\n\n return keccak256(data);\n}\n\n/**\n * Get the hex-encoded hash of an order\n */\nexport function hashOrderHex(order: SignedOrder): string {\n return hashOrder(order).toString(\"hex\");\n}\n\n/**\n * Get the message to sign for an order (the order hash)\n */\nexport function getOrderMessage(order: SignedOrder): Buffer {\n return hashOrder(order);\n}\n\n// ============================================================================\n// ORDER SIGNING\n// ============================================================================\n\n/**\n * Sign an order with a Keypair.\n * Signs the hex-encoded keccak hash (64-char ASCII string) for cross-compatibility with Rust.\n * Returns 64-byte Ed25519 signature.\n */\nexport function signOrder(order: SignedOrder, signer: Keypair): Buffer {\n const hash = hashOrder(order);\n const hexString = hash.toString(\"hex\");\n const messageBytes = Buffer.from(hexString, \"ascii\");\n const signature = sign.detached(messageBytes, signer.secretKey);\n return Buffer.from(signature);\n}\n\n/**\n * Sign an order and return a new order with the signature attached\n */\nexport function signOrderFull(\n order: Omit<SignedOrder, \"signature\">,\n signer: Keypair\n): SignedOrder {\n const orderWithEmptySig: SignedOrder = {\n ...order,\n signature: Buffer.alloc(64),\n };\n const signature = signOrder(orderWithEmptySig, signer);\n return {\n ...order,\n signature,\n };\n}\n\n/**\n * Verify an order's signature.\n * Verifies against the hex-encoded keccak hash.\n */\nexport function verifyOrderSignature(order: SignedOrder): boolean {\n const hash = hashOrder(order);\n const hexString = hash.toString(\"hex\");\n const messageBytes = Buffer.from(hexString, \"ascii\");\n return sign.detached.verify(\n messageBytes,\n order.signature,\n order.maker.toBytes()\n );\n}\n\n// ============================================================================\n// SIGNED ORDER SERIALIZATION (225 bytes)\n// ============================================================================\n\n/**\n * Serialize a signed order to bytes (225 bytes)\n *\n * Layout:\n * [0..8] nonce (u64)\n * [8..40] maker (Pubkey)\n * [40..72] market (Pubkey)\n * [72..104] baseMint (Pubkey)\n * [104..136] quoteMint (Pubkey)\n * [136] side (u8)\n * [137..145] makerAmount (u64)\n * [145..153] takerAmount (u64)\n * [153..161] expiration (i64)\n * [161..225] signature (64 bytes)\n */\nexport function serializeSignedOrder(order: SignedOrder): Buffer {\n const buffer = Buffer.alloc(ORDER_SIZE.SIGNED_ORDER);\n let offset = 0;\n\n toU64Le(BigInt(order.nonce)).copy(buffer, offset);\n offset += 8;\n\n order.maker.toBuffer().copy(buffer, offset);\n offset += 32;\n\n order.market.toBuffer().copy(buffer, offset);\n offset += 32;\n\n order.baseMint.toBuffer().copy(buffer, offset);\n offset += 32;\n\n order.quoteMint.toBuffer().copy(buffer, offset);\n offset += 32;\n\n buffer[offset] = order.side;\n offset += 1;\n\n toU64Le(order.makerAmount).copy(buffer, offset);\n offset += 8;\n\n toU64Le(order.takerAmount).copy(buffer, offset);\n offset += 8;\n\n toI64Le(order.expiration).copy(buffer, offset);\n offset += 8;\n\n order.signature.copy(buffer, offset);\n\n return buffer;\n}\n\n/**\n * Deserialize a signed order from bytes\n */\nexport function deserializeSignedOrder(data: Buffer): SignedOrder {\n if (data.length < ORDER_SIZE.SIGNED_ORDER) {\n throw new Error(\n `Invalid signed order length: ${data.length}, expected ${ORDER_SIZE.SIGNED_ORDER}`\n );\n }\n\n let offset = 0;\n\n const nonceU64 = fromLeBytes(data.subarray(offset, offset + 8));\n if (nonceU64 > 0xFFFFFFFFn) {\n throw new Error(`Nonce exceeds u32 range: ${nonceU64}`);\n }\n const nonce = Number(nonceU64);\n offset += 8;\n\n const maker = new PublicKey(data.subarray(offset, offset + 32));\n offset += 32;\n\n const market = new PublicKey(data.subarray(offset, offset + 32));\n offset += 32;\n\n const baseMint = new PublicKey(data.subarray(offset, offset + 32));\n offset += 32;\n\n const quoteMint = new PublicKey(data.subarray(offset, offset + 32));\n offset += 32;\n\n const side = data[offset] as OrderSide;\n offset += 1;\n\n const makerAmount = fromLeBytes(data.subarray(offset, offset + 8));\n offset += 8;\n\n const takerAmount = fromLeBytes(data.subarray(offset, offset + 8));\n offset += 8;\n\n const expiration = fromI64Le(data.subarray(offset, offset + 8));\n offset += 8;\n\n const signature = Buffer.from(data.subarray(offset, offset + 64));\n\n return {\n nonce,\n maker,\n market,\n baseMint,\n quoteMint,\n side,\n makerAmount,\n takerAmount,\n expiration,\n signature,\n };\n}\n\n// ============================================================================\n// ORDER SERIALIZATION (29 bytes)\n// ============================================================================\n\n/**\n * Serialize a compact order to bytes (29 bytes)\n *\n * Layout:\n * [0..4] nonce (u32)\n * [4] side (u8)\n * [5..13] makerAmount (u64)\n * [13..21] takerAmount (u64)\n * [21..29] expiration (i64)\n */\nexport function serializeOrder(order: Order): Buffer {\n const buffer = Buffer.alloc(ORDER_SIZE.ORDER);\n let offset = 0;\n\n toU32Le(order.nonce).copy(buffer, offset);\n offset += 4;\n\n buffer[offset] = order.side;\n offset += 1;\n\n toU64Le(order.makerAmount).copy(buffer, offset);\n offset += 8;\n\n toU64Le(order.takerAmount).copy(buffer, offset);\n offset += 8;\n\n toI64Le(order.expiration).copy(buffer, offset);\n\n return buffer;\n}\n\n/**\n * Deserialize a compact order from bytes\n */\nexport function deserializeOrder(data: Buffer): Order {\n if (data.length < ORDER_SIZE.ORDER) {\n throw new Error(\n `Invalid order length: ${data.length}, expected ${ORDER_SIZE.ORDER}`\n );\n }\n\n let offset = 0;\n\n const nonce = data.readUInt32LE(offset);\n offset += 4;\n\n const side = data[offset] as OrderSide;\n offset += 1;\n\n const makerAmount = fromLeBytes(data.subarray(offset, offset + 8));\n offset += 8;\n\n const takerAmount = fromLeBytes(data.subarray(offset, offset + 8));\n offset += 8;\n\n const expiration = fromI64Le(data.subarray(offset, offset + 8));\n\n return {\n nonce,\n side,\n makerAmount,\n takerAmount,\n expiration,\n };\n}\n\n/**\n * Convert a SignedOrder to a compact Order (drop maker)\n */\nexport function signedOrderToOrder(order: SignedOrder): Order {\n return {\n nonce: order.nonce,\n side: order.side,\n makerAmount: order.makerAmount,\n takerAmount: order.takerAmount,\n expiration: order.expiration,\n };\n}\n\n// ============================================================================\n// ORDER CREATION HELPERS\n// ============================================================================\n\n/**\n * Create a BID order (buyer wants base tokens, pays with quote tokens)\n */\nexport function createBidOrder(\n params: BidOrderParams\n): Omit<SignedOrder, \"signature\"> {\n return {\n nonce: params.nonce,\n maker: params.maker,\n market: params.market,\n baseMint: params.baseMint,\n quoteMint: params.quoteMint,\n side: OrderSide.BID,\n makerAmount: params.makerAmount,\n takerAmount: params.takerAmount,\n expiration: params.expiration ?? 0n,\n };\n}\n\n/**\n * Create an ASK order (seller offers base tokens, receives quote tokens)\n */\nexport function createAskOrder(\n params: AskOrderParams\n): Omit<SignedOrder, \"signature\"> {\n return {\n nonce: params.nonce,\n maker: params.maker,\n market: params.market,\n baseMint: params.baseMint,\n quoteMint: params.quoteMint,\n side: OrderSide.ASK,\n makerAmount: params.makerAmount,\n takerAmount: params.takerAmount,\n expiration: params.expiration ?? 0n,\n };\n}\n\n/**\n * Create and sign a BID order in one step\n */\nexport function createSignedBidOrder(\n params: BidOrderParams,\n signer: Keypair\n): SignedOrder {\n const order = createBidOrder(params);\n return signOrderFull(order, signer);\n}\n\n/**\n * Create and sign an ASK order in one step\n */\nexport function createSignedAskOrder(\n params: AskOrderParams,\n signer: Keypair\n): SignedOrder {\n const order = createAskOrder(params);\n return signOrderFull(order, signer);\n}\n\n// ============================================================================\n// ORDER VALIDATION\n// ============================================================================\n\n/**\n * Check if an order has expired\n */\nexport function isOrderExpired(\n order: SignedOrder | Order,\n currentTime?: bigint\n): boolean {\n if (order.expiration === 0n) {\n return false;\n }\n const now = currentTime ?? BigInt(Math.floor(Date.now() / 1000));\n return order.expiration < now;\n}\n\n/**\n * Validate order crossing (orders are compatible for matching)\n */\nexport function ordersCanCross(\n buyOrder: SignedOrder,\n sellOrder: SignedOrder\n): boolean {\n if (buyOrder.side !== OrderSide.BID || sellOrder.side !== OrderSide.ASK) {\n return false;\n }\n return (\n buyOrder.makerAmount * sellOrder.makerAmount >=\n buyOrder.takerAmount * sellOrder.takerAmount\n );\n}\n\n/**\n * Calculate the fill amounts for a trade\n */\nexport function calculateTakerFill(\n makerOrder: SignedOrder,\n makerFillAmount: bigint\n): bigint {\n return (makerFillAmount * makerOrder.takerAmount) / makerOrder.makerAmount;\n}\n\n// ============================================================================\n// SIGNED ORDER HELPERS\n// ============================================================================\n\n/**\n * Get signature as hex string (128 chars)\n */\nexport function signatureHex(order: SignedOrder): string {\n return order.signature.toString(\"hex\");\n}\n\n/**\n * Check if a signed order has a non-zero signature\n */\nexport function isSigned(order: SignedOrder): boolean {\n return !order.signature.every((b) => b === 0);\n}\n\n/**\n * Derive orderbook ID from base and quote token addresses\n * Format: \"{base[0:8]}_{quote[0:8]}\"\n */\nexport function deriveOrderbookId(\n baseToken: string,\n quoteToken: string\n): string {\n return `${baseToken.slice(0, 8)}_${quoteToken.slice(0, 8)}`;\n}\n\n// ============================================================================\n// CANCEL ORDER SIGNING\n// ============================================================================\n\n/**\n * Build the message bytes for cancelling an order.\n * The message is the order hash hex string as UTF-8 bytes (same protocol as order signing).\n */\nexport function cancelOrderMessage(orderHash: string): Uint8Array {\n return Buffer.from(orderHash, \"ascii\");\n}\n\n/**\n * Sign a cancel order request.\n * Returns the signature as a 128-char hex string.\n */\nexport function signCancelOrder(orderHash: string, signer: Keypair): string {\n const message = cancelOrderMessage(orderHash);\n const signature = sign.detached(message, signer.secretKey);\n return Buffer.from(signature).toString(\"hex\");\n}\n\n/**\n * Build the message string for cancelling all orders.\n * Format: \"cancel_all:{pubkey}:{timestamp}\"\n */\nexport function cancelAllMessage(userPubkey: string, timestamp: number): string {\n return `cancel_all:${userPubkey}:${timestamp}`;\n}\n\n/**\n * Sign a cancel-all orders request.\n * Returns the signature as a 128-char hex string.\n */\nexport function signCancelAll(userPubkey: string, timestamp: number, signer: Keypair): string {\n const message = cancelAllMessage(userPubkey, timestamp);\n const messageBytes = Buffer.from(message, \"ascii\");\n const signature = sign.detached(messageBytes, signer.secretKey);\n return Buffer.from(signature).toString(\"hex\");\n}\n\n// ============================================================================\n// SUBMIT REQUEST HELPERS\n// ============================================================================\n\n/**\n * Convert a SignedOrder to a SubmitOrderRequest-compatible object\n */\nexport function toSubmitRequest(\n order: SignedOrder,\n orderbookId: string\n): {\n maker: string;\n nonce: string;\n market_pubkey: string;\n base_token: string;\n quote_token: string;\n side: number;\n maker_amount: string;\n taker_amount: string;\n expiration: number;\n signature: string;\n orderbook_id: string;\n} {\n return {\n maker: order.maker.toBase58(),\n nonce: order.nonce.toString(),\n market_pubkey: order.market.toBase58(),\n base_token: order.baseMint.toBase58(),\n quote_token: order.quoteMint.toBase58(),\n side: order.side,\n maker_amount: order.makerAmount.toString(),\n taker_amount: order.takerAmount.toString(),\n expiration: Number(order.expiration),\n signature: signatureHex(order),\n orderbook_id: orderbookId,\n };\n}\n"]}
@@ -0,0 +1,73 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ /**
3
+ * Derive Exchange PDA (singleton central state)
4
+ * Seeds: ["central_state"]
5
+ */
6
+ export declare function getExchangePda(programId?: PublicKey): [PublicKey, number];
7
+ /**
8
+ * Derive Market PDA
9
+ * Seeds: ["market", market_id (u64 little-endian)]
10
+ */
11
+ export declare function getMarketPda(marketId: bigint, programId?: PublicKey): [PublicKey, number];
12
+ /**
13
+ * Derive Vault PDA (deposit token storage)
14
+ * Seeds: ["market_deposit_token_account", deposit_mint, market]
15
+ */
16
+ export declare function getVaultPda(depositMint: PublicKey, market: PublicKey, programId?: PublicKey): [PublicKey, number];
17
+ /**
18
+ * Derive Mint Authority PDA (signs mint/burn operations)
19
+ * Seeds: ["market_mint_authority", market]
20
+ */
21
+ export declare function getMintAuthorityPda(market: PublicKey, programId?: PublicKey): [PublicKey, number];
22
+ /**
23
+ * Derive Conditional Mint PDA (per outcome)
24
+ * Seeds: ["conditional_mint", market, deposit_mint, outcome_index (u8)]
25
+ */
26
+ export declare function getConditionalMintPda(market: PublicKey, depositMint: PublicKey, outcomeIndex: number, programId?: PublicKey): [PublicKey, number];
27
+ /**
28
+ * Derive all Conditional Mint PDAs for a market
29
+ */
30
+ export declare function getAllConditionalMintPdas(market: PublicKey, depositMint: PublicKey, numOutcomes: number, programId?: PublicKey): [PublicKey, number][];
31
+ /**
32
+ * Derive Order Status PDA
33
+ * Seeds: ["order_status", order_hash (32 bytes)]
34
+ */
35
+ export declare function getOrderStatusPda(orderHash: Buffer, programId?: PublicKey): [PublicKey, number];
36
+ /**
37
+ * Derive User Nonce PDA
38
+ * Seeds: ["user_nonce", user (32 bytes)]
39
+ */
40
+ export declare function getUserNoncePda(user: PublicKey, programId?: PublicKey): [PublicKey, number];
41
+ /**
42
+ * Derive Position PDA
43
+ * Seeds: ["position", owner (32 bytes), market (32 bytes)]
44
+ */
45
+ export declare function getPositionPda(owner: PublicKey, market: PublicKey, programId?: PublicKey): [PublicKey, number];
46
+ /**
47
+ * Derive Orderbook PDA
48
+ * Seeds: ["orderbook", mint_a (32 bytes), mint_b (32 bytes)]
49
+ */
50
+ export declare function getOrderbookPda(mintA: PublicKey, mintB: PublicKey, programId?: PublicKey): [PublicKey, number];
51
+ /**
52
+ * Derive Address Lookup Table PDA
53
+ * Seeds: [orderbook (32 bytes), recent_slot (u64 little-endian)]
54
+ * Program: ALT_PROGRAM_ID
55
+ */
56
+ export declare function getAltPda(orderbook: PublicKey, recentSlot: bigint): [PublicKey, number];
57
+ /**
58
+ * Collection of all PDA functions for easy access
59
+ */
60
+ export declare const pda: {
61
+ getExchangePda: typeof getExchangePda;
62
+ getMarketPda: typeof getMarketPda;
63
+ getVaultPda: typeof getVaultPda;
64
+ getMintAuthorityPda: typeof getMintAuthorityPda;
65
+ getConditionalMintPda: typeof getConditionalMintPda;
66
+ getAllConditionalMintPdas: typeof getAllConditionalMintPdas;
67
+ getOrderStatusPda: typeof getOrderStatusPda;
68
+ getUserNoncePda: typeof getUserNoncePda;
69
+ getPositionPda: typeof getPositionPda;
70
+ getOrderbookPda: typeof getOrderbookPda;
71
+ getAltPda: typeof getAltPda;
72
+ };
73
+ //# sourceMappingURL=pda.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pda.d.ts","sourceRoot":"","sources":["../../src/program/pda.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,WAAW,EAAE,SAAS,EACtB,MAAM,EAAE,SAAS,EACjB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CASrB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,SAAS,EACtB,YAAY,EAAE,MAAM,EACpB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAUrB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,SAAS,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAMvB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAQrB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,SAAS,EACjB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EAChB,SAAS,GAAE,SAAsB,GAChC,CAAC,SAAS,EAAE,MAAM,CAAC,CASrB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,GACjB,CAAC,SAAS,EAAE,MAAM,CAAC,CAKrB;AAED;;GAEG;AACH,eAAO,MAAM,GAAG;;;;;;;;;;;;CAYf,CAAC"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pda = void 0;
4
+ exports.getExchangePda = getExchangePda;
5
+ exports.getMarketPda = getMarketPda;
6
+ exports.getVaultPda = getVaultPda;
7
+ exports.getMintAuthorityPda = getMintAuthorityPda;
8
+ exports.getConditionalMintPda = getConditionalMintPda;
9
+ exports.getAllConditionalMintPdas = getAllConditionalMintPdas;
10
+ exports.getOrderStatusPda = getOrderStatusPda;
11
+ exports.getUserNoncePda = getUserNoncePda;
12
+ exports.getPositionPda = getPositionPda;
13
+ exports.getOrderbookPda = getOrderbookPda;
14
+ exports.getAltPda = getAltPda;
15
+ const web3_js_1 = require("@solana/web3.js");
16
+ const constants_1 = require("./constants");
17
+ const utils_1 = require("./utils");
18
+ /**
19
+ * Derive Exchange PDA (singleton central state)
20
+ * Seeds: ["central_state"]
21
+ */
22
+ function getExchangePda(programId = constants_1.PROGRAM_ID) {
23
+ return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.SEEDS.CENTRAL_STATE)], programId);
24
+ }
25
+ /**
26
+ * Derive Market PDA
27
+ * Seeds: ["market", market_id (u64 little-endian)]
28
+ */
29
+ function getMarketPda(marketId, programId = constants_1.PROGRAM_ID) {
30
+ return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.SEEDS.MARKET), (0, utils_1.toU64Le)(marketId)], programId);
31
+ }
32
+ /**
33
+ * Derive Vault PDA (deposit token storage)
34
+ * Seeds: ["market_deposit_token_account", deposit_mint, market]
35
+ */
36
+ function getVaultPda(depositMint, market, programId = constants_1.PROGRAM_ID) {
37
+ return web3_js_1.PublicKey.findProgramAddressSync([
38
+ Buffer.from(constants_1.SEEDS.MARKET_DEPOSIT_TOKEN_ACCOUNT),
39
+ depositMint.toBuffer(),
40
+ market.toBuffer(),
41
+ ], programId);
42
+ }
43
+ /**
44
+ * Derive Mint Authority PDA (signs mint/burn operations)
45
+ * Seeds: ["market_mint_authority", market]
46
+ */
47
+ function getMintAuthorityPda(market, programId = constants_1.PROGRAM_ID) {
48
+ return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.SEEDS.MARKET_MINT_AUTHORITY), market.toBuffer()], programId);
49
+ }
50
+ /**
51
+ * Derive Conditional Mint PDA (per outcome)
52
+ * Seeds: ["conditional_mint", market, deposit_mint, outcome_index (u8)]
53
+ */
54
+ function getConditionalMintPda(market, depositMint, outcomeIndex, programId = constants_1.PROGRAM_ID) {
55
+ return web3_js_1.PublicKey.findProgramAddressSync([
56
+ Buffer.from(constants_1.SEEDS.CONDITIONAL_MINT),
57
+ market.toBuffer(),
58
+ depositMint.toBuffer(),
59
+ (0, utils_1.toU8)(outcomeIndex),
60
+ ], programId);
61
+ }
62
+ /**
63
+ * Derive all Conditional Mint PDAs for a market
64
+ */
65
+ function getAllConditionalMintPdas(market, depositMint, numOutcomes, programId = constants_1.PROGRAM_ID) {
66
+ const pdas = [];
67
+ for (let i = 0; i < numOutcomes; i++) {
68
+ pdas.push(getConditionalMintPda(market, depositMint, i, programId));
69
+ }
70
+ return pdas;
71
+ }
72
+ /**
73
+ * Derive Order Status PDA
74
+ * Seeds: ["order_status", order_hash (32 bytes)]
75
+ */
76
+ function getOrderStatusPda(orderHash, programId = constants_1.PROGRAM_ID) {
77
+ if (orderHash.length !== 32) {
78
+ throw new Error("Order hash must be 32 bytes");
79
+ }
80
+ return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.SEEDS.ORDER_STATUS), orderHash], programId);
81
+ }
82
+ /**
83
+ * Derive User Nonce PDA
84
+ * Seeds: ["user_nonce", user (32 bytes)]
85
+ */
86
+ function getUserNoncePda(user, programId = constants_1.PROGRAM_ID) {
87
+ return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.SEEDS.USER_NONCE), user.toBuffer()], programId);
88
+ }
89
+ /**
90
+ * Derive Position PDA
91
+ * Seeds: ["position", owner (32 bytes), market (32 bytes)]
92
+ */
93
+ function getPositionPda(owner, market, programId = constants_1.PROGRAM_ID) {
94
+ return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.SEEDS.POSITION), owner.toBuffer(), market.toBuffer()], programId);
95
+ }
96
+ /**
97
+ * Derive Orderbook PDA
98
+ * Seeds: ["orderbook", mint_a (32 bytes), mint_b (32 bytes)]
99
+ */
100
+ function getOrderbookPda(mintA, mintB, programId = constants_1.PROGRAM_ID) {
101
+ return web3_js_1.PublicKey.findProgramAddressSync([
102
+ Buffer.from(constants_1.SEEDS.ORDERBOOK),
103
+ mintA.toBuffer(),
104
+ mintB.toBuffer(),
105
+ ], programId);
106
+ }
107
+ /**
108
+ * Derive Address Lookup Table PDA
109
+ * Seeds: [orderbook (32 bytes), recent_slot (u64 little-endian)]
110
+ * Program: ALT_PROGRAM_ID
111
+ */
112
+ function getAltPda(orderbook, recentSlot) {
113
+ return web3_js_1.PublicKey.findProgramAddressSync([orderbook.toBuffer(), (0, utils_1.toU64Le)(recentSlot)], constants_1.ALT_PROGRAM_ID);
114
+ }
115
+ /**
116
+ * Collection of all PDA functions for easy access
117
+ */
118
+ exports.pda = {
119
+ getExchangePda,
120
+ getMarketPda,
121
+ getVaultPda,
122
+ getMintAuthorityPda,
123
+ getConditionalMintPda,
124
+ getAllConditionalMintPdas,
125
+ getOrderStatusPda,
126
+ getUserNoncePda,
127
+ getPositionPda,
128
+ getOrderbookPda,
129
+ getAltPda,
130
+ };
131
+ //# sourceMappingURL=pda.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pda.js","sourceRoot":"","sources":["../../src/program/pda.ts"],"names":[],"mappings":"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","sourcesContent":["import { PublicKey } from \"@solana/web3.js\";\nimport { PROGRAM_ID, ALT_PROGRAM_ID, SEEDS } from \"./constants\";\nimport { toU64Le, toU8 } from \"./utils\";\n\n/**\n * Derive Exchange PDA (singleton central state)\n * Seeds: [\"central_state\"]\n */\nexport function getExchangePda(\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.CENTRAL_STATE)],\n programId\n );\n}\n\n/**\n * Derive Market PDA\n * Seeds: [\"market\", market_id (u64 little-endian)]\n */\nexport function getMarketPda(\n marketId: bigint,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.MARKET), toU64Le(marketId)],\n programId\n );\n}\n\n/**\n * Derive Vault PDA (deposit token storage)\n * Seeds: [\"market_deposit_token_account\", deposit_mint, market]\n */\nexport function getVaultPda(\n depositMint: PublicKey,\n market: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEEDS.MARKET_DEPOSIT_TOKEN_ACCOUNT),\n depositMint.toBuffer(),\n market.toBuffer(),\n ],\n programId\n );\n}\n\n/**\n * Derive Mint Authority PDA (signs mint/burn operations)\n * Seeds: [\"market_mint_authority\", market]\n */\nexport function getMintAuthorityPda(\n market: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.MARKET_MINT_AUTHORITY), market.toBuffer()],\n programId\n );\n}\n\n/**\n * Derive Conditional Mint PDA (per outcome)\n * Seeds: [\"conditional_mint\", market, deposit_mint, outcome_index (u8)]\n */\nexport function getConditionalMintPda(\n market: PublicKey,\n depositMint: PublicKey,\n outcomeIndex: number,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEEDS.CONDITIONAL_MINT),\n market.toBuffer(),\n depositMint.toBuffer(),\n toU8(outcomeIndex),\n ],\n programId\n );\n}\n\n/**\n * Derive all Conditional Mint PDAs for a market\n */\nexport function getAllConditionalMintPdas(\n market: PublicKey,\n depositMint: PublicKey,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number][] {\n const pdas: [PublicKey, number][] = [];\n for (let i = 0; i < numOutcomes; i++) {\n pdas.push(getConditionalMintPda(market, depositMint, i, programId));\n }\n return pdas;\n}\n\n/**\n * Derive Order Status PDA\n * Seeds: [\"order_status\", order_hash (32 bytes)]\n */\nexport function getOrderStatusPda(\n orderHash: Buffer,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n if (orderHash.length !== 32) {\n throw new Error(\"Order hash must be 32 bytes\");\n }\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.ORDER_STATUS), orderHash],\n programId\n );\n}\n\n/**\n * Derive User Nonce PDA\n * Seeds: [\"user_nonce\", user (32 bytes)]\n */\nexport function getUserNoncePda(\n user: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.USER_NONCE), user.toBuffer()],\n programId\n );\n}\n\n/**\n * Derive Position PDA\n * Seeds: [\"position\", owner (32 bytes), market (32 bytes)]\n */\nexport function getPositionPda(\n owner: PublicKey,\n market: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [Buffer.from(SEEDS.POSITION), owner.toBuffer(), market.toBuffer()],\n programId\n );\n}\n\n/**\n * Derive Orderbook PDA\n * Seeds: [\"orderbook\", mint_a (32 bytes), mint_b (32 bytes)]\n */\nexport function getOrderbookPda(\n mintA: PublicKey,\n mintB: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [\n Buffer.from(SEEDS.ORDERBOOK),\n mintA.toBuffer(),\n mintB.toBuffer(),\n ],\n programId\n );\n}\n\n/**\n * Derive Address Lookup Table PDA\n * Seeds: [orderbook (32 bytes), recent_slot (u64 little-endian)]\n * Program: ALT_PROGRAM_ID\n */\nexport function getAltPda(\n orderbook: PublicKey,\n recentSlot: bigint\n): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [orderbook.toBuffer(), toU64Le(recentSlot)],\n ALT_PROGRAM_ID\n );\n}\n\n/**\n * Collection of all PDA functions for easy access\n */\nexport const pda = {\n getExchangePda,\n getMarketPda,\n getVaultPda,\n getMintAuthorityPda,\n getConditionalMintPda,\n getAllConditionalMintPdas,\n getOrderStatusPda,\n getUserNoncePda,\n getPositionPda,\n getOrderbookPda,\n getAltPda,\n};\n"]}
@@ -0,0 +1,380 @@
1
+ import { PublicKey, Transaction } from "@solana/web3.js";
2
+ /**
3
+ * Market status enum matching on-chain representation
4
+ */
5
+ export declare enum MarketStatus {
6
+ Pending = 0,
7
+ Active = 1,
8
+ Resolved = 2,
9
+ Cancelled = 3
10
+ }
11
+ /**
12
+ * Order side enum
13
+ * BID = buyer wants base tokens (pays quote)
14
+ * ASK = seller offers base tokens (receives quote)
15
+ */
16
+ export declare enum OrderSide {
17
+ BID = 0,
18
+ ASK = 1
19
+ }
20
+ /**
21
+ * Exchange account - singleton central state
22
+ * PDA: ["central_state"]
23
+ * Size: 88 bytes
24
+ */
25
+ export interface Exchange {
26
+ discriminator: Buffer;
27
+ authority: PublicKey;
28
+ operator: PublicKey;
29
+ marketCount: bigint;
30
+ paused: boolean;
31
+ bump: number;
32
+ }
33
+ /**
34
+ * Market account
35
+ * PDA: ["market", market_id (u64)]
36
+ * Size: 120 bytes
37
+ */
38
+ export interface Market {
39
+ discriminator: Buffer;
40
+ marketId: bigint;
41
+ numOutcomes: number;
42
+ status: MarketStatus;
43
+ winningOutcome: number;
44
+ hasWinningOutcome: boolean;
45
+ bump: number;
46
+ oracle: PublicKey;
47
+ questionId: Buffer;
48
+ conditionId: Buffer;
49
+ }
50
+ /**
51
+ * Order status account - tracks partial fills and cancellations
52
+ * PDA: ["order_status", order_hash (32 bytes)]
53
+ * Size: 24 bytes
54
+ */
55
+ export interface OrderStatus {
56
+ discriminator: Buffer;
57
+ remaining: bigint;
58
+ isCancelled: boolean;
59
+ }
60
+ /**
61
+ * User nonce account - replay protection
62
+ * PDA: ["user_nonce", user_pubkey (32 bytes)]
63
+ * Size: 16 bytes
64
+ */
65
+ export interface UserNonce {
66
+ discriminator: Buffer;
67
+ nonce: bigint;
68
+ }
69
+ /**
70
+ * Position account - user's state in a market
71
+ * PDA: ["position", owner (32 bytes), market (32 bytes)]
72
+ * Size: 80 bytes
73
+ */
74
+ export interface Position {
75
+ discriminator: Buffer;
76
+ owner: PublicKey;
77
+ market: PublicKey;
78
+ bump: number;
79
+ }
80
+ /**
81
+ * Orderbook account - links market to token pair and lookup table
82
+ * PDA: ["orderbook", mint_a (32 bytes), mint_b (32 bytes)]
83
+ * Size: 144 bytes
84
+ */
85
+ export interface Orderbook {
86
+ discriminator: Buffer;
87
+ market: PublicKey;
88
+ mintA: PublicKey;
89
+ mintB: PublicKey;
90
+ lookupTable: PublicKey;
91
+ bump: number;
92
+ }
93
+ /**
94
+ * Signed order format (225 bytes)
95
+ * Full order with all fields for submission, cancellation, and hashing
96
+ */
97
+ export interface SignedOrder {
98
+ nonce: number;
99
+ maker: PublicKey;
100
+ market: PublicKey;
101
+ baseMint: PublicKey;
102
+ quoteMint: PublicKey;
103
+ side: OrderSide;
104
+ makerAmount: bigint;
105
+ takerAmount: bigint;
106
+ expiration: bigint;
107
+ signature: Buffer;
108
+ }
109
+ /**
110
+ * Compact order format (29 bytes)
111
+ * Transaction-optimized version: nonce is u32, no maker field (derived on-chain from Position PDA)
112
+ */
113
+ export interface Order {
114
+ nonce: number;
115
+ side: OrderSide;
116
+ makerAmount: bigint;
117
+ takerAmount: bigint;
118
+ expiration: bigint;
119
+ }
120
+ /**
121
+ * Parameters for initialize instruction
122
+ */
123
+ export interface InitializeParams {
124
+ authority: PublicKey;
125
+ }
126
+ /**
127
+ * Parameters for createMarket instruction
128
+ */
129
+ export interface CreateMarketParams {
130
+ authority: PublicKey;
131
+ numOutcomes: number;
132
+ oracle: PublicKey;
133
+ questionId: Buffer;
134
+ }
135
+ /**
136
+ * Metadata for a single outcome token
137
+ */
138
+ export interface OutcomeMetadata {
139
+ name: string;
140
+ symbol: string;
141
+ uri: string;
142
+ }
143
+ /**
144
+ * Parameters for addDepositMint instruction
145
+ */
146
+ export interface AddDepositMintParams {
147
+ authority: PublicKey;
148
+ marketId: bigint;
149
+ depositMint: PublicKey;
150
+ outcomeMetadata: OutcomeMetadata[];
151
+ }
152
+ /**
153
+ * Parameters for mintCompleteSet instruction
154
+ */
155
+ export interface MintCompleteSetParams {
156
+ user: PublicKey;
157
+ market: PublicKey;
158
+ depositMint: PublicKey;
159
+ amount: bigint;
160
+ }
161
+ /**
162
+ * Parameters for mergeCompleteSet instruction
163
+ */
164
+ export interface MergeCompleteSetParams {
165
+ user: PublicKey;
166
+ market: PublicKey;
167
+ depositMint: PublicKey;
168
+ amount: bigint;
169
+ }
170
+ /**
171
+ * Parameters for cancelOrder instruction
172
+ */
173
+ export interface CancelOrderParams {
174
+ maker: PublicKey;
175
+ order: SignedOrder;
176
+ }
177
+ /**
178
+ * Parameters for incrementNonce instruction
179
+ */
180
+ export interface IncrementNonceParams {
181
+ user: PublicKey;
182
+ }
183
+ /**
184
+ * Parameters for settleMarket instruction
185
+ */
186
+ export interface SettleMarketParams {
187
+ oracle: PublicKey;
188
+ marketId: bigint;
189
+ winningOutcome: number;
190
+ }
191
+ /**
192
+ * Parameters for redeemWinnings instruction
193
+ */
194
+ export interface RedeemWinningsParams {
195
+ user: PublicKey;
196
+ market: PublicKey;
197
+ depositMint: PublicKey;
198
+ amount: bigint;
199
+ }
200
+ /**
201
+ * Parameters for setPaused instruction
202
+ */
203
+ export interface SetPausedParams {
204
+ authority: PublicKey;
205
+ paused: boolean;
206
+ }
207
+ /**
208
+ * Parameters for setOperator instruction
209
+ */
210
+ export interface SetOperatorParams {
211
+ authority: PublicKey;
212
+ newOperator: PublicKey;
213
+ }
214
+ /**
215
+ * Parameters for withdrawFromPosition instruction
216
+ */
217
+ export interface WithdrawFromPositionParams {
218
+ user: PublicKey;
219
+ market: PublicKey;
220
+ mint: PublicKey;
221
+ amount: bigint;
222
+ outcomeIndex: number;
223
+ }
224
+ /**
225
+ * Parameters for activateMarket instruction
226
+ */
227
+ export interface ActivateMarketParams {
228
+ authority: PublicKey;
229
+ marketId: bigint;
230
+ }
231
+ /**
232
+ * Parameters for matchOrdersMulti instruction
233
+ */
234
+ export interface MatchOrdersMultiParams {
235
+ operator: PublicKey;
236
+ market: PublicKey;
237
+ baseMint: PublicKey;
238
+ quoteMint: PublicKey;
239
+ takerOrder: SignedOrder;
240
+ makerOrders: SignedOrder[];
241
+ makerFillAmounts: bigint[];
242
+ takerFillAmounts: bigint[];
243
+ fullFillBitmask: number;
244
+ }
245
+ /**
246
+ * Parameters for setAuthority instruction
247
+ */
248
+ export interface SetAuthorityParams {
249
+ currentAuthority: PublicKey;
250
+ newAuthority: PublicKey;
251
+ }
252
+ /**
253
+ * Parameters for createOrderbook instruction
254
+ */
255
+ export interface CreateOrderbookParams {
256
+ payer: PublicKey;
257
+ market: PublicKey;
258
+ mintA: PublicKey;
259
+ mintB: PublicKey;
260
+ recentSlot: bigint;
261
+ }
262
+ /**
263
+ * Result from transaction builders
264
+ */
265
+ export interface BuildResult<T = Record<string, PublicKey>> {
266
+ /** Unsigned transaction ready for signing */
267
+ transaction: Transaction;
268
+ /** Key accounts involved in the transaction */
269
+ accounts: T;
270
+ /** Serialize transaction to base64 */
271
+ serialize: () => string;
272
+ }
273
+ /**
274
+ * Accounts returned from initialize
275
+ */
276
+ export interface InitializeAccounts {
277
+ exchange: PublicKey;
278
+ }
279
+ /**
280
+ * Accounts returned from createMarket
281
+ */
282
+ export interface CreateMarketAccounts {
283
+ exchange: PublicKey;
284
+ market: PublicKey;
285
+ }
286
+ /**
287
+ * Accounts returned from addDepositMint
288
+ */
289
+ export interface AddDepositMintAccounts {
290
+ market: PublicKey;
291
+ vault: PublicKey;
292
+ mintAuthority: PublicKey;
293
+ conditionalMints: PublicKey[];
294
+ }
295
+ /**
296
+ * Accounts returned from mintCompleteSet
297
+ */
298
+ export interface MintCompleteSetAccounts {
299
+ position: PublicKey;
300
+ vault: PublicKey;
301
+ conditionalMints: PublicKey[];
302
+ }
303
+ /**
304
+ * Accounts returned from mergeCompleteSet
305
+ */
306
+ export interface MergeCompleteSetAccounts {
307
+ position: PublicKey;
308
+ vault: PublicKey;
309
+ conditionalMints: PublicKey[];
310
+ }
311
+ /**
312
+ * Accounts returned from cancelOrder
313
+ */
314
+ export interface CancelOrderAccounts {
315
+ orderStatus: PublicKey;
316
+ }
317
+ /**
318
+ * Accounts returned from incrementNonce
319
+ */
320
+ export interface IncrementNonceAccounts {
321
+ userNonce: PublicKey;
322
+ }
323
+ /**
324
+ * Accounts returned from settleMarket
325
+ */
326
+ export interface SettleMarketAccounts {
327
+ exchange: PublicKey;
328
+ market: PublicKey;
329
+ }
330
+ /**
331
+ * Accounts returned from redeemWinnings
332
+ */
333
+ export interface RedeemWinningsAccounts {
334
+ position: PublicKey;
335
+ vault: PublicKey;
336
+ winningMint: PublicKey;
337
+ }
338
+ /**
339
+ * Accounts returned from activateMarket
340
+ */
341
+ export interface ActivateMarketAccounts {
342
+ exchange: PublicKey;
343
+ market: PublicKey;
344
+ }
345
+ /**
346
+ * Accounts returned from matchOrdersMulti
347
+ */
348
+ export interface MatchOrdersMultiAccounts {
349
+ takerOrderStatus: PublicKey;
350
+ takerPosition: PublicKey;
351
+ makerOrderStatuses: PublicKey[];
352
+ makerPositions: PublicKey[];
353
+ }
354
+ /**
355
+ * Parameters for creating a bid order
356
+ */
357
+ export interface BidOrderParams {
358
+ nonce: number;
359
+ maker: PublicKey;
360
+ market: PublicKey;
361
+ baseMint: PublicKey;
362
+ quoteMint: PublicKey;
363
+ makerAmount: bigint;
364
+ takerAmount: bigint;
365
+ expiration?: bigint;
366
+ }
367
+ /**
368
+ * Parameters for creating an ask order
369
+ */
370
+ export interface AskOrderParams {
371
+ nonce: number;
372
+ maker: PublicKey;
373
+ market: PublicKey;
374
+ baseMint: PublicKey;
375
+ quoteMint: PublicKey;
376
+ makerAmount: bigint;
377
+ takerAmount: bigint;
378
+ expiration?: bigint;
379
+ }
380
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/program/types.ts"],"names":[],"mappings":"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"}