@lightconexyz/lightcone-sdk 0.2.3 → 0.2.41

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 (177) hide show
  1. package/README.md +30 -37
  2. package/dist/auth/client.d.ts.map +1 -1
  3. package/dist/auth/client.js +3 -10
  4. package/dist/auth/client.js.map +1 -1
  5. package/dist/auth/index.d.ts +3 -1
  6. package/dist/auth/index.d.ts.map +1 -1
  7. package/dist/auth/index.js.map +1 -1
  8. package/dist/client.d.ts +14 -15
  9. package/dist/client.d.ts.map +1 -1
  10. package/dist/client.js +33 -31
  11. package/dist/client.js.map +1 -1
  12. package/dist/context.d.ts +9 -0
  13. package/dist/context.d.ts.map +1 -0
  14. package/dist/context.js +10 -0
  15. package/dist/context.js.map +1 -0
  16. package/dist/domain/admin/client.d.ts +27 -5
  17. package/dist/domain/admin/client.d.ts.map +1 -1
  18. package/dist/domain/admin/client.js +89 -0
  19. package/dist/domain/admin/client.js.map +1 -1
  20. package/dist/domain/index.d.ts +0 -1
  21. package/dist/domain/index.d.ts.map +1 -1
  22. package/dist/domain/index.js +1 -2
  23. package/dist/domain/index.js.map +1 -1
  24. package/dist/domain/market/client.d.ts +13 -5
  25. package/dist/domain/market/client.d.ts.map +1 -1
  26. package/dist/domain/market/client.js +86 -0
  27. package/dist/domain/market/client.js.map +1 -1
  28. package/dist/domain/order/client.d.ts +23 -5
  29. package/dist/domain/order/client.d.ts.map +1 -1
  30. package/dist/domain/order/client.js +99 -0
  31. package/dist/domain/order/client.js.map +1 -1
  32. package/dist/domain/order/index.d.ts +8 -2
  33. package/dist/domain/order/index.d.ts.map +1 -1
  34. package/dist/domain/order/index.js +23 -0
  35. package/dist/domain/order/index.js.map +1 -1
  36. package/dist/domain/orderbook/client.d.ts +6 -14
  37. package/dist/domain/orderbook/client.d.ts.map +1 -1
  38. package/dist/domain/orderbook/client.js +16 -11
  39. package/dist/domain/orderbook/client.js.map +1 -1
  40. package/dist/domain/orderbook/index.d.ts +7 -0
  41. package/dist/domain/orderbook/index.d.ts.map +1 -1
  42. package/dist/domain/orderbook/index.js +17 -0
  43. package/dist/domain/orderbook/index.js.map +1 -1
  44. package/dist/domain/orderbook/state.d.ts +2 -0
  45. package/dist/domain/orderbook/state.d.ts.map +1 -1
  46. package/dist/domain/orderbook/state.js +25 -2
  47. package/dist/domain/orderbook/state.js.map +1 -1
  48. package/dist/domain/position/client.d.ts +19 -5
  49. package/dist/domain/position/client.d.ts.map +1 -1
  50. package/dist/domain/position/client.js +71 -0
  51. package/dist/domain/position/client.js.map +1 -1
  52. package/dist/domain/position/index.d.ts +4 -1
  53. package/dist/domain/position/index.d.ts.map +1 -1
  54. package/dist/domain/position/index.js +20 -0
  55. package/dist/domain/position/index.js.map +1 -1
  56. package/dist/domain/position/wire.d.ts +6 -0
  57. package/dist/domain/position/wire.d.ts.map +1 -1
  58. package/dist/domain/position/wire.js.map +1 -1
  59. package/dist/domain/price_history/client.d.ts +14 -1
  60. package/dist/domain/price_history/client.d.ts.map +1 -1
  61. package/dist/domain/price_history/client.js +53 -0
  62. package/dist/domain/price_history/client.js.map +1 -1
  63. package/dist/domain/price_history/index.d.ts +4 -0
  64. package/dist/domain/price_history/index.d.ts.map +1 -1
  65. package/dist/domain/price_history/index.js.map +1 -1
  66. package/dist/domain/price_history/state.d.ts +16 -0
  67. package/dist/domain/price_history/state.d.ts.map +1 -1
  68. package/dist/domain/price_history/state.js +42 -1
  69. package/dist/domain/price_history/state.js.map +1 -1
  70. package/dist/domain/price_history/wire.d.ts +34 -0
  71. package/dist/domain/price_history/wire.d.ts.map +1 -1
  72. package/dist/domain/price_history/wire.js.map +1 -1
  73. package/dist/http/client.d.ts +0 -1
  74. package/dist/http/client.d.ts.map +1 -1
  75. package/dist/http/client.js +29 -39
  76. package/dist/http/client.js.map +1 -1
  77. package/dist/index.d.ts +4 -1
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +5 -1
  80. package/dist/index.js.map +1 -1
  81. package/dist/prelude.d.ts +5 -6
  82. package/dist/prelude.d.ts.map +1 -1
  83. package/dist/prelude.js +4 -5
  84. package/dist/prelude.js.map +1 -1
  85. package/dist/privy/client.d.ts +1 -0
  86. package/dist/privy/client.d.ts.map +1 -1
  87. package/dist/privy/client.js +10 -0
  88. package/dist/privy/client.js.map +1 -1
  89. package/dist/privy/index.d.ts +1 -0
  90. package/dist/privy/index.d.ts.map +1 -1
  91. package/dist/privy/index.js +4 -0
  92. package/dist/privy/index.js.map +1 -1
  93. package/dist/program/accounts.d.ts +2 -1
  94. package/dist/program/accounts.d.ts.map +1 -1
  95. package/dist/program/accounts.js +2 -1
  96. package/dist/program/accounts.js.map +1 -1
  97. package/dist/program/builder.d.ts +3 -0
  98. package/dist/program/builder.d.ts.map +1 -1
  99. package/dist/program/builder.js +8 -0
  100. package/dist/program/builder.js.map +1 -1
  101. package/dist/program/constants.d.ts +3 -2
  102. package/dist/program/constants.d.ts.map +1 -1
  103. package/dist/program/constants.js +3 -2
  104. package/dist/program/constants.js.map +1 -1
  105. package/dist/program/envelope.d.ts +19 -9
  106. package/dist/program/envelope.d.ts.map +1 -1
  107. package/dist/program/envelope.js +54 -20
  108. package/dist/program/envelope.js.map +1 -1
  109. package/dist/program/index.d.ts +3 -4
  110. package/dist/program/index.d.ts.map +1 -1
  111. package/dist/program/index.js +34 -6
  112. package/dist/program/index.js.map +1 -1
  113. package/dist/program/instructions.d.ts +40 -3
  114. package/dist/program/instructions.d.ts.map +1 -1
  115. package/dist/program/instructions.js +158 -3
  116. package/dist/program/instructions.js.map +1 -1
  117. package/dist/program/orders.d.ts +36 -18
  118. package/dist/program/orders.d.ts.map +1 -1
  119. package/dist/program/orders.js +97 -20
  120. package/dist/program/orders.js.map +1 -1
  121. package/dist/program/types.d.ts +14 -2
  122. package/dist/program/types.d.ts.map +1 -1
  123. package/dist/program/types.js.map +1 -1
  124. package/dist/rpc.d.ts +19 -0
  125. package/dist/rpc.d.ts.map +1 -0
  126. package/dist/rpc.js +51 -0
  127. package/dist/rpc.js.map +1 -0
  128. package/dist/shared/fmt/decimal.d.ts +1 -1
  129. package/dist/shared/fmt/decimal.d.ts.map +1 -1
  130. package/dist/shared/fmt/decimal.js +2 -2
  131. package/dist/shared/fmt/decimal.js.map +1 -1
  132. package/dist/shared/index.d.ts +1 -1
  133. package/dist/shared/index.d.ts.map +1 -1
  134. package/dist/shared/index.js +2 -1
  135. package/dist/shared/index.js.map +1 -1
  136. package/dist/shared/scaling.d.ts.map +1 -1
  137. package/dist/shared/scaling.js +7 -3
  138. package/dist/shared/scaling.js.map +1 -1
  139. package/dist/shared/types.d.ts +2 -0
  140. package/dist/shared/types.d.ts.map +1 -1
  141. package/dist/shared/types.js +9 -1
  142. package/dist/shared/types.js.map +1 -1
  143. package/dist/ws/client.browser.d.ts +2 -0
  144. package/dist/ws/client.browser.d.ts.map +1 -1
  145. package/dist/ws/client.browser.js +43 -6
  146. package/dist/ws/client.browser.js.map +1 -1
  147. package/dist/ws/client.node.d.ts +2 -0
  148. package/dist/ws/client.node.d.ts.map +1 -1
  149. package/dist/ws/client.node.js +43 -6
  150. package/dist/ws/client.node.js.map +1 -1
  151. package/dist/ws/index.d.ts +1 -2
  152. package/dist/ws/index.d.ts.map +1 -1
  153. package/dist/ws/index.js.map +1 -1
  154. package/dist/ws/types.d.ts +2 -0
  155. package/dist/ws/types.d.ts.map +1 -1
  156. package/dist/ws/types.js.map +1 -1
  157. package/package.json +1 -1
  158. package/dist/domain/deposit_price/client.d.ts +0 -21
  159. package/dist/domain/deposit_price/client.d.ts.map +0 -1
  160. package/dist/domain/deposit_price/client.js +0 -68
  161. package/dist/domain/deposit_price/client.js.map +0 -1
  162. package/dist/domain/deposit_price/index.d.ts +0 -9
  163. package/dist/domain/deposit_price/index.d.ts.map +0 -1
  164. package/dist/domain/deposit_price/index.js +0 -20
  165. package/dist/domain/deposit_price/index.js.map +0 -1
  166. package/dist/domain/deposit_price/state.d.ts +0 -17
  167. package/dist/domain/deposit_price/state.d.ts.map +0 -1
  168. package/dist/domain/deposit_price/state.js +0 -45
  169. package/dist/domain/deposit_price/state.js.map +0 -1
  170. package/dist/domain/deposit_price/wire.d.ts +0 -36
  171. package/dist/domain/deposit_price/wire.d.ts.map +0 -1
  172. package/dist/domain/deposit_price/wire.js +0 -3
  173. package/dist/domain/deposit_price/wire.js.map +0 -1
  174. package/dist/program/client.d.ts +0 -96
  175. package/dist/program/client.d.ts.map +0 -1
  176. package/dist/program/client.js +0 -372
  177. package/dist/program/client.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/program/instructions.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n PublicKey,\n TransactionInstruction,\n AccountMeta,\n} from \"@solana/web3.js\";\nimport {\n PROGRAM_ID,\n INSTRUCTION,\n SYSTEM_PROGRAM_ID,\n TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n ALT_PROGRAM_ID,\n MAX_MAKERS,\n} from \"./constants\";\nimport {\n InitializeParams,\n CreateMarketParams,\n AddDepositMintParams,\n MintCompleteSetParams,\n MergeCompleteSetParams,\n SettleMarketParams,\n RedeemWinningsParams,\n WithdrawFromPositionParams,\n ActivateMarketParams,\n MatchOrdersMultiParams,\n SetAuthorityParams,\n CreateOrderbookParams,\n WhitelistDepositTokenParams,\n DepositToGlobalParams,\n GlobalToMarketDepositParams,\n InitPositionTokensParams,\n ExtendPositionTokensParams,\n DepositAndSwapParams,\n SignedOrder,\n OutcomeMetadata,\n OrderSide,\n} from \"./types\";\nimport {\n getExchangePda,\n getMarketPda,\n getVaultPda,\n getMintAuthorityPda,\n getAllConditionalMintPdas,\n getOrderStatusPda,\n getUserNoncePda,\n getPositionPda,\n getOrderbookPda,\n getAltPda,\n getGlobalDepositTokenPda,\n getUserGlobalDepositPda,\n getPositionAltPda,\n} from \"./pda\";\nimport {\n toU8,\n toU64Le,\n serializeString,\n getConditionalTokenAta,\n getDepositTokenAta,\n validateOutcomes,\n} from \"./utils\";\nimport { hashOrder, serializeSignedOrder, serializeOrder, signedOrderToOrder } from \"./orders\";\n\n// ============================================================================\n// HELPER FUNCTIONS\n// ============================================================================\n\nfunction signerMut(pubkey: PublicKey): AccountMeta {\n return { pubkey, isSigner: true, isWritable: true };\n}\n\nfunction writable(pubkey: PublicKey): AccountMeta {\n return { pubkey, isSigner: false, isWritable: true };\n}\n\nfunction readonly(pubkey: PublicKey): AccountMeta {\n return { pubkey, isSigner: false, isWritable: false };\n}\n\n// ============================================================================\n// INSTRUCTION BUILDERS\n// ============================================================================\n\n/**\n * Build Initialize instruction\n * Creates the exchange account (singleton)\n *\n * Accounts:\n * 0. authority (signer, mut) - Initial admin\n * 1. exchange (mut) - Exchange PDA\n * 2. system_program (readonly)\n *\n * Data: [discriminator (1 byte)]\n */\nexport function buildInitializeIx(\n params: InitializeParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n writable(exchange),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.from([INSTRUCTION.INITIALIZE]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build CreateMarket instruction\n * Creates a new market in Pending status\n *\n * Accounts:\n * 0. authority (signer, mut) - Must be exchange authority\n * 1. exchange (mut) - Exchange PDA\n * 2. market (mut) - Market PDA\n * 3. system_program (readonly)\n *\n * Data: [discriminator, num_outcomes (u8), oracle (32), question_id (32)]\n */\nexport function buildCreateMarketIx(\n params: CreateMarketParams,\n marketId: bigint,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n validateOutcomes(params.numOutcomes);\n\n const [exchange] = getExchangePda(programId);\n const [market] = getMarketPda(marketId, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n writable(exchange),\n writable(market),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.CREATE_MARKET]),\n toU8(params.numOutcomes),\n params.oracle.toBuffer(),\n params.questionId,\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Serialize outcome metadata for addDepositMint instruction\n */\nfunction serializeOutcomeMetadata(metadata: OutcomeMetadata[]): Buffer {\n const buffers: Buffer[] = [];\n for (const m of metadata) {\n buffers.push(serializeString(m.name));\n buffers.push(serializeString(m.symbol));\n buffers.push(serializeString(m.uri));\n }\n return Buffer.concat(buffers);\n}\n\n/**\n * Build AddDepositMint instruction\n *\n * Accounts:\n * 0. authority (signer)\n * 1. exchange\n * 2. market\n * 2. deposit_mint\n * 3. vault\n * 4. mint_authority\n * 5. token_program (SPL Token)\n * 6. token_2022_program\n * 7. system_program\n * 8+ conditional_mints[0..num_outcomes]\n *\n * Data: [discriminator, ...serialized_metadata]\n */\nexport function buildAddDepositMintIx(\n params: AddDepositMintParams,\n market: PublicKey,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n if (params.outcomeMetadata.length !== numOutcomes) {\n throw new Error(\n `Outcome metadata count (${params.outcomeMetadata.length}) must match numOutcomes (${numOutcomes})`\n );\n }\n\n const [vault] = getVaultPda(params.depositMint, market, programId);\n const [mintAuthority] = getMintAuthorityPda(market, programId);\n const conditionalMints = getAllConditionalMintPdas(\n market,\n params.depositMint,\n numOutcomes,\n programId\n );\n\n const [exchange] = getExchangePda(programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n readonly(exchange),\n writable(market),\n readonly(params.depositMint),\n writable(vault),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n for (const [mint] of conditionalMints) {\n keys.push(writable(mint));\n }\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.ADD_DEPOSIT_MINT]),\n serializeOutcomeMetadata(params.outcomeMetadata),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build MintCompleteSet instruction\n *\n * Accounts:\n * 0. user (signer)\n * 1. exchange\n * 2. market\n * 3. deposit_mint\n * 4. vault\n * 5. user_deposit_ata\n * 6. position\n * 7. position_collateral_ata\n * 8. mint_authority\n * 9. token_program\n * 10. token_2022_program\n * 11. associated_token_program\n * 12. system_program\n * Remaining: [conditional_mint[i], position_conditional_ata[i]]\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildMintCompleteSetIx(\n params: MintCompleteSetParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [vault] = getVaultPda(params.depositMint, params.market, programId);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n const userDepositAta = getDepositTokenAta(params.depositMint, params.user);\n const positionCollateralAta = getDepositTokenAta(params.depositMint, position);\n const conditionalMints = getAllConditionalMintPdas(\n params.market,\n params.depositMint,\n numOutcomes,\n programId\n );\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(exchange),\n readonly(params.market),\n readonly(params.depositMint),\n writable(vault),\n writable(userDepositAta),\n writable(position),\n writable(positionCollateralAta),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n readonly(ASSOCIATED_TOKEN_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n for (const [mint] of conditionalMints) {\n keys.push(writable(mint));\n const positionAta = getConditionalTokenAta(mint, position);\n keys.push(writable(positionAta));\n }\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.MINT_COMPLETE_SET]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build MergeCompleteSet instruction\n *\n * Accounts:\n * 0. user (signer)\n * 1. exchange\n * 2. market\n * 3. deposit_mint\n * 4. vault\n * 5. position\n * 6. user_deposit_ata\n * 7. mint_authority\n * 8. token_program\n * 9. token_2022_program\n * Remaining: [conditional_mint[i], position_conditional_ata[i]]\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildMergeCompleteSetIx(\n params: MergeCompleteSetParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [vault] = getVaultPda(params.depositMint, params.market, programId);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n const userDepositAta = getDepositTokenAta(params.depositMint, params.user);\n const conditionalMints = getAllConditionalMintPdas(\n params.market,\n params.depositMint,\n numOutcomes,\n programId\n );\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(exchange),\n readonly(params.market),\n readonly(params.depositMint),\n writable(vault),\n writable(position),\n writable(userDepositAta),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n ];\n\n for (const [mint] of conditionalMints) {\n keys.push(writable(mint));\n const positionAta = getConditionalTokenAta(mint, position);\n keys.push(writable(positionAta));\n }\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.MERGE_COMPLETE_SET]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build CancelOrder instruction\n *\n * Accounts:\n * 0. maker (signer, mut)\n * 1. market (readonly)\n * 2. order_status (mut)\n * 3. system_program (readonly)\n *\n * Data: [discriminator, order_hash (32), signed_order (225)]\n */\nexport function buildCancelOrderIx(\n maker: PublicKey,\n order: SignedOrder,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const orderHash = hashOrder(order);\n const [orderStatus] = getOrderStatusPda(orderHash, programId);\n\n const keys: AccountMeta[] = [\n signerMut(maker),\n readonly(order.market),\n writable(orderStatus),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.CANCEL_ORDER]),\n orderHash,\n serializeSignedOrder(order),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build IncrementNonce instruction\n *\n * Accounts:\n * 0. user (signer, mut)\n * 1. user_nonce (mut)\n * 2. system_program (readonly)\n *\n * Data: [discriminator]\n */\nexport function buildIncrementNonceIx(\n user: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [userNonce] = getUserNoncePda(user, programId);\n\n const keys: AccountMeta[] = [\n signerMut(user),\n writable(userNonce),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.from([INSTRUCTION.INCREMENT_NONCE]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build SettleMarket instruction\n *\n * Accounts:\n * 0. oracle (signer)\n * 1. exchange (readonly)\n * 2. market (mut)\n *\n * Data: [discriminator, winning_outcome (u8)]\n */\nexport function buildSettleMarketIx(\n params: SettleMarketParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [market] = getMarketPda(params.marketId, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.oracle),\n readonly(exchange),\n writable(market),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.SETTLE_MARKET]),\n toU8(params.winningOutcome),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build RedeemWinnings instruction\n *\n * Accounts:\n * 0. user (signer)\n * 1. market\n * 2. deposit_mint\n * 3. vault\n * 4. winning_conditional_mint\n * 5. position\n * 6. position_conditional_ata\n * 7. user_deposit_ata\n * 8. mint_authority\n * 9. token_program\n * 10. token_2022_program\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildRedeemWinningsIx(\n params: RedeemWinningsParams,\n winningOutcome: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [vault] = getVaultPda(params.depositMint, params.market, programId);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n const [winningMint] = getAllConditionalMintPdas(\n params.market,\n params.depositMint,\n winningOutcome + 1,\n programId\n )[winningOutcome];\n const positionWinningAta = getConditionalTokenAta(winningMint, position);\n const userDepositAta = getDepositTokenAta(params.depositMint, params.user);\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(params.market),\n readonly(params.depositMint),\n writable(vault),\n writable(winningMint),\n writable(position),\n writable(positionWinningAta),\n writable(userDepositAta),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.REDEEM_WINNINGS]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build SetPaused instruction\n *\n * Accounts:\n * 0. authority (signer)\n * 1. exchange (mut)\n *\n * Data: [discriminator, paused (u8)]\n */\nexport function buildSetPausedIx(\n authority: PublicKey,\n paused: boolean,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n\n const keys: AccountMeta[] = [signerMut(authority), writable(exchange)];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.SET_PAUSED]),\n toU8(paused ? 1 : 0),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build SetOperator instruction\n *\n * Accounts:\n * 0. authority (signer)\n * 1. exchange (mut)\n *\n * Data: [discriminator, new_operator (32)]\n */\nexport function buildSetOperatorIx(\n authority: PublicKey,\n newOperator: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n\n const keys: AccountMeta[] = [signerMut(authority), writable(exchange)];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.SET_OPERATOR]),\n newOperator.toBuffer(),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build WithdrawFromPosition instruction\n *\n * Accounts:\n * 0. user (signer, mut)\n * 1. market (readonly)\n * 2. position (mut)\n * 3. mint (readonly)\n * 4. position_ata (mut)\n * 5. user_ata (mut)\n * 6. token_program (readonly)\n *\n * Data: [discriminator, amount (u64), outcome_index (u8)]\n */\nexport function buildWithdrawFromPositionIx(\n params: WithdrawFromPositionParams,\n isToken2022: boolean,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [position] = getPositionPda(params.user, params.market, programId);\n const positionAta = isToken2022\n ? getConditionalTokenAta(params.mint, position)\n : getDepositTokenAta(params.mint, position);\n const userAta = isToken2022\n ? getConditionalTokenAta(params.mint, params.user)\n : getDepositTokenAta(params.mint, params.user);\n const tokenProgram = isToken2022 ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID;\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(params.market),\n writable(position),\n readonly(params.mint),\n writable(positionAta),\n writable(userAta),\n readonly(tokenProgram),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.WITHDRAW_FROM_POSITION]),\n toU64Le(params.amount),\n toU8(params.outcomeIndex),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build ActivateMarket instruction\n *\n * Accounts:\n * 0. authority (signer)\n * 1. exchange (readonly)\n * 2. market (mut)\n *\n * Data: [discriminator]\n */\nexport function buildActivateMarketIx(\n params: ActivateMarketParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [market] = getMarketPda(params.marketId, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n readonly(exchange),\n writable(market),\n ];\n\n const data = Buffer.from([INSTRUCTION.ACTIVATE_MARKET]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build MatchOrdersMulti instruction\n *\n * Dynamic accounts based on full_fill_bitmask:\n * 0. operator (signer)\n * 1. exchange (readonly)\n * 2. market (readonly)\n * [taker_order_status if bit7=0] (mut)\n * taker_nonce (readonly)\n * taker_position (mut)\n * base_mint (readonly)\n * quote_mint (readonly)\n * taker_base_ata (mut)\n * taker_quote_ata (mut)\n * token_2022_program (readonly)\n * system_program (readonly)\n * Per maker:\n * [maker_order_status if bit_i=0] (mut)\n * maker_nonce (readonly)\n * maker_position (mut)\n * maker_base_ata (mut)\n * maker_quote_ata (mut)\n *\n * Data:\n * [0] discriminator\n * [1..30] taker Order (29 bytes)\n * [30..94] taker_signature (64 bytes)\n * [94] num_makers\n * [95] full_fill_bitmask\n * Per maker (109 bytes):\n * [+0..+29] maker Order (29)\n * [+29..+93] maker_signature (64)\n * [+93..+101] maker_fill_amount (8)\n * [+101..+109] taker_fill_amount (8)\n */\nexport function buildMatchOrdersMultiIx(\n params: MatchOrdersMultiParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n if (params.makerOrders.length === 0) {\n throw new Error(\"At least one maker order is required\");\n }\n if (params.makerOrders.length > MAX_MAKERS) {\n throw new Error(`Maximum ${MAX_MAKERS} maker orders allowed`);\n }\n if (params.makerOrders.length !== params.makerFillAmounts.length) {\n throw new Error(\"Maker fill amounts must match maker orders count\");\n }\n if (params.makerOrders.length !== params.takerFillAmounts.length) {\n throw new Error(\"Taker fill amounts must match maker orders count\");\n }\n\n const [exchange] = getExchangePda(programId);\n const takerOrderHash = hashOrder(params.takerOrder);\n const [takerNonce] = getUserNoncePda(params.takerOrder.maker, programId);\n const [takerPosition] = getPositionPda(\n params.takerOrder.maker,\n params.market,\n programId\n );\n const takerBaseAta = getConditionalTokenAta(params.baseMint, takerPosition);\n const takerQuoteAta = getConditionalTokenAta(params.quoteMint, takerPosition);\n\n const keys: AccountMeta[] = [\n signerMut(params.operator),\n readonly(exchange),\n readonly(params.market),\n ];\n\n // Taker order status if not fully filled (bit 7 = 0)\n const takerFullFill = (params.fullFillBitmask & 0x80) !== 0;\n if (!takerFullFill) {\n const [takerOrderStatus] = getOrderStatusPda(takerOrderHash, programId);\n keys.push(writable(takerOrderStatus));\n }\n\n keys.push(readonly(takerNonce));\n keys.push(writable(takerPosition));\n keys.push(readonly(params.baseMint));\n keys.push(readonly(params.quoteMint));\n keys.push(writable(takerBaseAta));\n keys.push(writable(takerQuoteAta));\n keys.push(readonly(TOKEN_2022_PROGRAM_ID));\n keys.push(readonly(SYSTEM_PROGRAM_ID));\n\n // Add maker accounts\n for (let i = 0; i < params.makerOrders.length; i++) {\n const makerOrder = params.makerOrders[i];\n const makerFullFill = (params.fullFillBitmask & (1 << i)) !== 0;\n\n if (!makerFullFill) {\n const makerOrderHash = hashOrder(makerOrder);\n const [makerOrderStatus] = getOrderStatusPda(makerOrderHash, programId);\n keys.push(writable(makerOrderStatus));\n }\n\n const [makerNonce] = getUserNoncePda(makerOrder.maker, programId);\n const [makerPosition] = getPositionPda(\n makerOrder.maker,\n params.market,\n programId\n );\n const makerBaseAta = getConditionalTokenAta(params.baseMint, makerPosition);\n const makerQuoteAta = getConditionalTokenAta(params.quoteMint, makerPosition);\n\n keys.push(readonly(makerNonce));\n keys.push(writable(makerPosition));\n keys.push(writable(makerBaseAta));\n keys.push(writable(makerQuoteAta));\n }\n\n // Build data\n const takerCompact = signedOrderToOrder(params.takerOrder);\n const dataBuffers: Buffer[] = [\n Buffer.from([INSTRUCTION.MATCH_ORDERS_MULTI]),\n serializeOrder(takerCompact),\n params.takerOrder.signature,\n toU8(params.makerOrders.length),\n toU8(params.fullFillBitmask),\n ];\n\n // Add maker data\n for (let i = 0; i < params.makerOrders.length; i++) {\n const makerOrder = params.makerOrders[i];\n const makerCompact = signedOrderToOrder(makerOrder);\n\n dataBuffers.push(serializeOrder(makerCompact));\n dataBuffers.push(makerOrder.signature);\n dataBuffers.push(toU64Le(params.makerFillAmounts[i]));\n dataBuffers.push(toU64Le(params.takerFillAmounts[i]));\n }\n\n const data = Buffer.concat(dataBuffers);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build SetAuthority instruction\n *\n * Accounts:\n * 0. authority (signer)\n * 1. exchange (mut)\n *\n * Data: [discriminator, new_authority (32)]\n */\nexport function buildSetAuthorityIx(\n params: SetAuthorityParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.currentAuthority),\n writable(exchange),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.SET_AUTHORITY]),\n params.newAuthority.toBuffer(),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build CreateOrderbook instruction\n *\n * Accounts:\n * 0. authority (signer, mut)\n * 1. market (readonly)\n * 2. mint_a (readonly)\n * 3. mint_b (readonly)\n * 4. orderbook (mut)\n * 5. lookup_table (mut)\n * 6. exchange (readonly)\n * 7. alt_program (readonly)\n * 8. system_program (readonly)\n *\n * Data: [discriminator, recent_slot (u64)]\n */\nexport function buildCreateOrderbookIx(\n params: CreateOrderbookParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [orderbook] = getOrderbookPda(params.mintA, params.mintB, programId);\n const [alt] = getAltPda(orderbook, params.recentSlot);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n readonly(params.market),\n readonly(params.mintA),\n readonly(params.mintB),\n writable(orderbook),\n writable(alt),\n readonly(exchange),\n readonly(ALT_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.CREATE_ORDERBOOK]),\n toU64Le(params.recentSlot),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build WhitelistDepositToken instruction\n *\n * Accounts:\n * 0. authority (signer, mut)\n * 1. exchange (readonly)\n * 2. mint (readonly)\n * 3. global_deposit_token (mut)\n * 4. system_program (readonly)\n *\n * Data: [discriminator]\n */\nexport function buildWhitelistDepositTokenIx(\n params: WhitelistDepositTokenParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [globalDepositToken] = getGlobalDepositTokenPda(params.mint, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n readonly(exchange),\n readonly(params.mint),\n writable(globalDepositToken),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n return new TransactionInstruction({\n keys,\n programId,\n data: Buffer.from([INSTRUCTION.WHITELIST_DEPOSIT_TOKEN]),\n });\n}\n\n/**\n * Build DepositToGlobal instruction\n *\n * Accounts:\n * 0. user (signer, mut)\n * 1. global_deposit_token (readonly)\n * 2. mint (readonly)\n * 3. user_global_deposit (mut)\n * 4. user_token_account (mut)\n * 5. token_program (readonly)\n * 6. system_program (readonly)\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildDepositToGlobalIx(\n params: DepositToGlobalParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [globalDepositToken] = getGlobalDepositTokenPda(params.mint, programId);\n const [userGlobalDeposit] = getUserGlobalDepositPda(params.user, params.mint, programId);\n const userTokenAccount = getDepositTokenAta(params.mint, params.user);\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(globalDepositToken),\n readonly(params.mint),\n writable(userGlobalDeposit),\n writable(userTokenAccount),\n readonly(TOKEN_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.DEPOSIT_TO_GLOBAL]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build GlobalToMarketDeposit instruction\n *\n * Accounts:\n * 0. user (signer, mut)\n * 1. exchange (readonly)\n * 2. market (readonly)\n * 3. deposit_mint (readonly)\n * 4. vault (mut)\n * 5. global_deposit_token (readonly)\n * 6. user_global_deposit (mut)\n * 7. position (mut)\n * 8. position_collateral_ata (mut)\n * 9. mint_authority (readonly)\n * 10. token_program (readonly)\n * 11. token_2022_program (readonly)\n * 12. ata_program (readonly)\n * 13. system_program (readonly)\n * + per outcome: conditional_mint[i] (mut), position_conditional_ata[i] (mut)\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildGlobalToMarketDepositIx(\n params: GlobalToMarketDepositParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [vault] = getVaultPda(params.depositMint, params.market, programId);\n const [globalDepositToken] = getGlobalDepositTokenPda(params.depositMint, programId);\n const [userGlobalDeposit] = getUserGlobalDepositPda(params.user, params.depositMint, programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n const positionCollateralAta = getDepositTokenAta(params.depositMint, position);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(exchange),\n readonly(params.market),\n readonly(params.depositMint),\n writable(vault),\n readonly(globalDepositToken),\n writable(userGlobalDeposit),\n writable(position),\n writable(positionCollateralAta),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n readonly(ASSOCIATED_TOKEN_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n for (let i = 0; i < numOutcomes; i += 1) {\n const [conditionalMint] = getAllConditionalMintPdas(\n params.market,\n params.depositMint,\n numOutcomes,\n programId\n )[i];\n keys.push(writable(conditionalMint));\n keys.push(writable(getConditionalTokenAta(conditionalMint, position)));\n }\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.GLOBAL_TO_MARKET_DEPOSIT]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build InitPositionTokens instruction\n *\n * Accounts:\n * 0. user (signer, mut)\n * 1. exchange (readonly)\n * 2. market (readonly)\n * 3. deposit_mint (readonly)\n * 4. vault (readonly)\n * 5. position (mut)\n * 6. lookup_table (mut)\n * 7. mint_authority (readonly)\n * 8. token_2022_program (readonly)\n * 9. ata_program (readonly)\n * 10. alt_program (readonly)\n * 11. system_program (readonly)\n * + per outcome: conditional_mint[i] (readonly), position_conditional_ata[i] (mut)\n *\n * Data: [discriminator, recent_slot (u64)]\n */\nexport function buildInitPositionTokensIx(\n params: InitPositionTokensParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n const [lookupTable] = getPositionAltPda(position, params.recentSlot);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.payer),\n readonly(params.user),\n readonly(exchange),\n readonly(params.market),\n writable(position),\n writable(lookupTable),\n readonly(mintAuthority),\n readonly(TOKEN_2022_PROGRAM_ID),\n readonly(ASSOCIATED_TOKEN_PROGRAM_ID),\n readonly(ALT_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n for (const depositMint of params.depositMints) {\n const [vault] = getVaultPda(depositMint, params.market, programId);\n const [gdt] = getGlobalDepositTokenPda(depositMint, programId);\n keys.push(readonly(depositMint));\n keys.push(readonly(vault));\n keys.push(readonly(gdt));\n\n for (let i = 0; i < numOutcomes; i += 1) {\n const [conditionalMint] = getAllConditionalMintPdas(\n params.market,\n depositMint,\n numOutcomes,\n programId\n )[i];\n keys.push(readonly(conditionalMint));\n keys.push(writable(getConditionalTokenAta(conditionalMint, position)));\n }\n }\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.INIT_POSITION_TOKENS]),\n toU64Le(params.recentSlot),\n toU8(params.depositMints.length),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build ExtendPositionTokens instruction\n *\n * Extends an existing position's lookup table with new deposit mints.\n *\n * Accounts:\n * 0. payer (signer, mut)\n * 1. user (readonly)\n * 2. exchange (readonly)\n * 3. market (readonly)\n * 4. position (readonly)\n * 5. lookup_table (mut)\n * 6. token_2022_program (readonly)\n * 7. ata_program (readonly)\n * 8. alt_program (readonly)\n * 9. system_program (readonly)\n * Per deposit_mint:\n * deposit_mint (readonly), vault (readonly), gdt (readonly),\n * per outcome: conditional_mint (readonly), position_ata (mut)\n *\n * Data: [discriminator, num_deposit_mints (u8)]\n */\nexport function buildExtendPositionTokensIx(\n params: ExtendPositionTokensParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n if (params.depositMints.length === 0) {\n throw new Error(\"deposit_mints is required\");\n }\n\n const [exchange] = getExchangePda(programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.payer),\n readonly(params.user),\n readonly(exchange),\n readonly(params.market),\n readonly(position),\n writable(params.lookupTable),\n readonly(TOKEN_2022_PROGRAM_ID),\n readonly(ASSOCIATED_TOKEN_PROGRAM_ID),\n readonly(ALT_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n for (const depositMint of params.depositMints) {\n const [vault] = getVaultPda(depositMint, params.market, programId);\n const [gdt] = getGlobalDepositTokenPda(depositMint, programId);\n keys.push(readonly(depositMint));\n keys.push(readonly(vault));\n keys.push(readonly(gdt));\n\n for (let i = 0; i < numOutcomes; i += 1) {\n const [conditionalMint] = getAllConditionalMintPdas(\n params.market,\n depositMint,\n numOutcomes,\n programId\n )[i];\n keys.push(readonly(conditionalMint));\n keys.push(writable(getConditionalTokenAta(conditionalMint, position)));\n }\n }\n\n const data = Buffer.from([\n INSTRUCTION.EXTEND_POSITION_TOKENS,\n params.depositMints.length,\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build DepositAndSwap instruction.\n * Supports a mix of global deposits and token swaps in a single instruction.\n */\nexport function buildDepositAndSwapIx(\n params: DepositAndSwapParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n validateOutcomes(params.numOutcomes);\n\n if (params.makers.length === 0) {\n throw new Error(\"makers is required\");\n }\n if (params.makers.length > MAX_MAKERS) {\n throw new Error(`Too many makers: ${params.makers.length}`);\n }\n\n const [exchange] = getExchangePda(programId);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n const [takerNonce] = getUserNoncePda(params.takerOrder.maker, programId);\n const [takerPosition] = getPositionPda(params.takerOrder.maker, params.market, programId);\n const [receiveMint, giveMint] =\n params.takerOrder.side === OrderSide.BID\n ? [params.baseMint, params.quoteMint]\n : [params.quoteMint, params.baseMint];\n\n let fullFillBitmask = 0;\n let depositBitmask = 0;\n\n if (params.takerIsFullFill) {\n fullFillBitmask |= 0x80;\n }\n if (params.takerIsDeposit) {\n depositBitmask |= 0x80;\n }\n\n for (let i = 0; i < params.makers.length; i += 1) {\n const maker = params.makers[i];\n if (maker.isFullFill) {\n fullFillBitmask |= 1 << i;\n }\n if (maker.isDeposit) {\n depositBitmask |= 1 << i;\n }\n }\n\n const keys: AccountMeta[] = [\n signerMut(params.operator),\n readonly(exchange),\n readonly(params.market),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n ];\n\n if (!params.takerIsFullFill) {\n const takerOrderHash = hashOrder(params.takerOrder);\n const [takerOrderStatus] = getOrderStatusPda(takerOrderHash, programId);\n keys.push(writable(takerOrderStatus));\n }\n\n keys.push(readonly(takerNonce));\n keys.push(writable(takerPosition));\n keys.push(readonly(params.baseMint));\n keys.push(readonly(params.quoteMint));\n keys.push(writable(getConditionalTokenAta(receiveMint, takerPosition)));\n keys.push(writable(getConditionalTokenAta(giveMint, takerPosition)));\n keys.push(readonly(TOKEN_2022_PROGRAM_ID));\n keys.push(readonly(SYSTEM_PROGRAM_ID));\n\n if (params.takerIsDeposit) {\n const [vault] = getVaultPda(\n params.takerDepositMint,\n params.market,\n programId\n );\n const [globalDepositToken] = getGlobalDepositTokenPda(\n params.takerDepositMint,\n programId\n );\n const [takerGlobalDeposit] = getUserGlobalDepositPda(\n params.takerOrder.maker,\n params.takerDepositMint,\n programId\n );\n\n keys.push(readonly(params.takerDepositMint));\n keys.push(writable(vault));\n keys.push(readonly(globalDepositToken));\n keys.push(writable(takerGlobalDeposit));\n\n for (const [conditionalMint] of getAllConditionalMintPdas(\n params.market,\n params.takerDepositMint,\n params.numOutcomes,\n programId\n )) {\n keys.push(writable(conditionalMint));\n keys.push(writable(getConditionalTokenAta(conditionalMint, takerPosition)));\n }\n }\n\n for (const maker of params.makers) {\n const [makerNonce] = getUserNoncePda(maker.order.maker, programId);\n const [makerPosition] = getPositionPda(maker.order.maker, params.market, programId);\n\n if (!maker.isFullFill) {\n const makerOrderHash = hashOrder(maker.order);\n const [makerOrderStatus] = getOrderStatusPda(makerOrderHash, programId);\n keys.push(writable(makerOrderStatus));\n }\n\n keys.push(readonly(makerNonce));\n keys.push(writable(makerPosition));\n\n if (maker.isDeposit) {\n const [vault] = getVaultPda(maker.depositMint, params.market, programId);\n const [globalDepositToken] = getGlobalDepositTokenPda(\n maker.depositMint,\n programId\n );\n const [makerGlobalDeposit] = getUserGlobalDepositPda(\n maker.order.maker,\n maker.depositMint,\n programId\n );\n\n keys.push(readonly(maker.depositMint));\n keys.push(writable(vault));\n keys.push(readonly(globalDepositToken));\n keys.push(writable(makerGlobalDeposit));\n\n for (const [conditionalMint] of getAllConditionalMintPdas(\n params.market,\n maker.depositMint,\n params.numOutcomes,\n programId\n )) {\n keys.push(writable(conditionalMint));\n keys.push(writable(getConditionalTokenAta(conditionalMint, makerPosition)));\n }\n }\n\n keys.push(writable(getConditionalTokenAta(receiveMint, makerPosition)));\n keys.push(writable(getConditionalTokenAta(giveMint, makerPosition)));\n }\n\n const buffers: Buffer[] = [\n Buffer.from([INSTRUCTION.DEPOSIT_AND_SWAP]),\n serializeOrder(signedOrderToOrder(params.takerOrder)),\n params.takerOrder.signature,\n toU8(params.makers.length),\n toU8(fullFillBitmask),\n toU8(depositBitmask),\n ];\n\n for (const maker of params.makers) {\n buffers.push(serializeOrder(signedOrderToOrder(maker.order)));\n buffers.push(maker.order.signature);\n buffers.push(toU64Le(maker.makerFillAmount));\n buffers.push(toU64Le(maker.takerFillAmount));\n }\n\n return new TransactionInstruction({\n keys,\n programId,\n data: Buffer.concat(buffers),\n });\n}\n"]}
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/program/instructions.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n PublicKey,\n Transaction,\n TransactionInstruction,\n AccountMeta,\n} from \"@solana/web3.js\";\nimport {\n PROGRAM_ID,\n INSTRUCTION,\n SYSTEM_PROGRAM_ID,\n TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n ALT_PROGRAM_ID,\n MAX_MAKERS,\n} from \"./constants\";\nimport {\n InitializeParams,\n CreateMarketParams,\n AddDepositMintParams,\n MintCompleteSetParams,\n MergeCompleteSetParams,\n SettleMarketParams,\n RedeemWinningsParams,\n WithdrawFromPositionParams,\n ActivateMarketParams,\n MatchOrdersMultiParams,\n SetAuthorityParams,\n CreateOrderbookParams,\n WhitelistDepositTokenParams,\n DepositToGlobalParams,\n GlobalToMarketDepositParams,\n InitPositionTokensParams,\n ExtendPositionTokensParams,\n DepositAndSwapParams,\n WithdrawFromGlobalParams,\n SignedOrder,\n OutcomeMetadata,\n OrderSide,\n} from \"./types\";\nimport {\n getExchangePda,\n getMarketPda,\n getVaultPda,\n getMintAuthorityPda,\n getAllConditionalMintPdas,\n getOrderStatusPda,\n getUserNoncePda,\n getPositionPda,\n getOrderbookPda,\n getAltPda,\n getGlobalDepositTokenPda,\n getUserGlobalDepositPda,\n getPositionAltPda,\n} from \"./pda\";\nimport {\n toU8,\n toU64Le,\n serializeString,\n getConditionalTokenAta,\n getDepositTokenAta,\n validateOutcomes,\n} from \"./utils\";\nimport { hashOrder, serializeSignedOrder, serializeOrder, signedOrderToOrder } from \"./orders\";\n\n// ============================================================================\n// HELPER FUNCTIONS\n// ============================================================================\n\nfunction signerMut(pubkey: PublicKey): AccountMeta {\n return { pubkey, isSigner: true, isWritable: true };\n}\n\nfunction writable(pubkey: PublicKey): AccountMeta {\n return { pubkey, isSigner: false, isWritable: true };\n}\n\nfunction readonly(pubkey: PublicKey): AccountMeta {\n return { pubkey, isSigner: false, isWritable: false };\n}\n\n// ============================================================================\n// INSTRUCTION BUILDERS\n// ============================================================================\n\n/**\n * Build Initialize instruction\n * Creates the exchange account (singleton)\n *\n * Accounts:\n * 0. authority (signer, mut) - Initial admin\n * 1. exchange (mut) - Exchange PDA\n * 2. system_program (readonly)\n *\n * Data: [discriminator (1 byte)]\n */\nexport function buildInitializeIx(\n params: InitializeParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n writable(exchange),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.from([INSTRUCTION.INITIALIZE]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build CreateMarket instruction\n * Creates a new market in Pending status\n *\n * Accounts:\n * 0. authority (signer, mut) - Must be exchange authority\n * 1. exchange (mut) - Exchange PDA\n * 2. market (mut) - Market PDA\n * 3. system_program (readonly)\n *\n * Data: [discriminator, num_outcomes (u8), oracle (32), question_id (32)]\n */\nexport function buildCreateMarketIx(\n params: CreateMarketParams,\n marketId: bigint,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n validateOutcomes(params.numOutcomes);\n\n const [exchange] = getExchangePda(programId);\n const [market] = getMarketPda(marketId, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n writable(exchange),\n writable(market),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.CREATE_MARKET]),\n toU8(params.numOutcomes),\n params.oracle.toBuffer(),\n params.questionId,\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Serialize outcome metadata for addDepositMint instruction\n */\nfunction serializeOutcomeMetadata(metadata: OutcomeMetadata[]): Buffer {\n const buffers: Buffer[] = [];\n for (const m of metadata) {\n buffers.push(serializeString(m.name));\n buffers.push(serializeString(m.symbol));\n buffers.push(serializeString(m.uri));\n }\n return Buffer.concat(buffers);\n}\n\n/**\n * Build AddDepositMint instruction\n *\n * Accounts:\n * 0. authority (signer)\n * 1. exchange\n * 2. market\n * 2. deposit_mint\n * 3. vault\n * 4. mint_authority\n * 5. token_program (SPL Token)\n * 6. token_2022_program\n * 7. system_program\n * 8+ conditional_mints[0..num_outcomes]\n *\n * Data: [discriminator, ...serialized_metadata]\n */\nexport function buildAddDepositMintIx(\n params: AddDepositMintParams,\n market: PublicKey,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n if (params.outcomeMetadata.length !== numOutcomes) {\n throw new Error(\n `Outcome metadata count (${params.outcomeMetadata.length}) must match numOutcomes (${numOutcomes})`\n );\n }\n\n const [vault] = getVaultPda(params.depositMint, market, programId);\n const [mintAuthority] = getMintAuthorityPda(market, programId);\n const conditionalMints = getAllConditionalMintPdas(\n market,\n params.depositMint,\n numOutcomes,\n programId\n );\n\n const [exchange] = getExchangePda(programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n readonly(exchange),\n writable(market),\n readonly(params.depositMint),\n writable(vault),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n for (const [mint] of conditionalMints) {\n keys.push(writable(mint));\n }\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.ADD_DEPOSIT_MINT]),\n serializeOutcomeMetadata(params.outcomeMetadata),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build MintCompleteSet instruction\n *\n * Accounts:\n * 0. user (signer)\n * 1. exchange\n * 2. market\n * 3. deposit_mint\n * 4. vault\n * 5. user_deposit_ata\n * 6. position\n * 7. position_collateral_ata\n * 8. mint_authority\n * 9. token_program\n * 10. token_2022_program\n * 11. associated_token_program\n * 12. system_program\n * Remaining: [conditional_mint[i], position_conditional_ata[i]]\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildMintCompleteSetIx(\n params: MintCompleteSetParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [vault] = getVaultPda(params.depositMint, params.market, programId);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n const userDepositAta = getDepositTokenAta(params.depositMint, params.user);\n const positionCollateralAta = getDepositTokenAta(params.depositMint, position);\n const conditionalMints = getAllConditionalMintPdas(\n params.market,\n params.depositMint,\n numOutcomes,\n programId\n );\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(exchange),\n readonly(params.market),\n readonly(params.depositMint),\n writable(vault),\n writable(userDepositAta),\n writable(position),\n writable(positionCollateralAta),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n readonly(ASSOCIATED_TOKEN_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n for (const [mint] of conditionalMints) {\n keys.push(writable(mint));\n const positionAta = getConditionalTokenAta(mint, position);\n keys.push(writable(positionAta));\n }\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.MINT_COMPLETE_SET]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build MergeCompleteSet instruction\n *\n * Accounts:\n * 0. user (signer)\n * 1. exchange\n * 2. market\n * 3. deposit_mint\n * 4. vault\n * 5. position\n * 6. user_deposit_ata\n * 7. mint_authority\n * 8. token_program\n * 9. token_2022_program\n * Remaining: [conditional_mint[i], position_conditional_ata[i]]\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildMergeCompleteSetIx(\n params: MergeCompleteSetParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [vault] = getVaultPda(params.depositMint, params.market, programId);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n const userDepositAta = getDepositTokenAta(params.depositMint, params.user);\n const conditionalMints = getAllConditionalMintPdas(\n params.market,\n params.depositMint,\n numOutcomes,\n programId\n );\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(exchange),\n readonly(params.market),\n readonly(params.depositMint),\n writable(vault),\n writable(position),\n writable(userDepositAta),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n ];\n\n for (const [mint] of conditionalMints) {\n keys.push(writable(mint));\n const positionAta = getConditionalTokenAta(mint, position);\n keys.push(writable(positionAta));\n }\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.MERGE_COMPLETE_SET]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build CancelOrder instruction\n *\n * Accounts:\n * 0. maker (signer, mut)\n * 1. market (readonly)\n * 2. order_status (mut)\n * 3. system_program (readonly)\n *\n * Data: [discriminator, order_hash (32), signed_order (225)]\n */\nexport function buildCancelOrderIx(\n maker: PublicKey,\n market: PublicKey,\n order: SignedOrder,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const orderHash = hashOrder(order);\n const [orderStatus] = getOrderStatusPda(orderHash, programId);\n\n const keys: AccountMeta[] = [\n signerMut(maker),\n readonly(market),\n writable(orderStatus),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.CANCEL_ORDER]),\n orderHash,\n serializeSignedOrder(order),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build IncrementNonce instruction\n *\n * Accounts:\n * 0. user (signer, mut)\n * 1. user_nonce (mut)\n * 2. system_program (readonly)\n *\n * Data: [discriminator]\n */\nexport function buildIncrementNonceIx(\n user: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [userNonce] = getUserNoncePda(user, programId);\n\n const keys: AccountMeta[] = [\n signerMut(user),\n writable(userNonce),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.from([INSTRUCTION.INCREMENT_NONCE]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build SettleMarket instruction\n *\n * Accounts:\n * 0. oracle (signer)\n * 1. exchange (readonly)\n * 2. market (mut)\n *\n * Data: [discriminator, winning_outcome (u8)]\n */\nexport function buildSettleMarketIx(\n params: SettleMarketParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [market] = getMarketPda(params.marketId, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.oracle),\n readonly(exchange),\n writable(market),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.SETTLE_MARKET]),\n toU8(params.winningOutcome),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build RedeemWinnings instruction\n *\n * Accounts:\n * 0. user (signer)\n * 1. market\n * 2. deposit_mint\n * 3. vault\n * 4. winning_conditional_mint\n * 5. position\n * 6. position_conditional_ata\n * 7. user_deposit_ata\n * 8. mint_authority\n * 9. token_program\n * 10. token_2022_program\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildRedeemWinningsIx(\n params: RedeemWinningsParams,\n winningOutcome: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [vault] = getVaultPda(params.depositMint, params.market, programId);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n const [winningMint] = getAllConditionalMintPdas(\n params.market,\n params.depositMint,\n winningOutcome + 1,\n programId\n )[winningOutcome];\n const positionWinningAta = getConditionalTokenAta(winningMint, position);\n const userDepositAta = getDepositTokenAta(params.depositMint, params.user);\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(params.market),\n readonly(params.depositMint),\n writable(vault),\n writable(winningMint),\n writable(position),\n writable(positionWinningAta),\n writable(userDepositAta),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.REDEEM_WINNINGS]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build SetPaused instruction\n *\n * Accounts:\n * 0. authority (signer)\n * 1. exchange (mut)\n *\n * Data: [discriminator, paused (u8)]\n */\nexport function buildSetPausedIx(\n authority: PublicKey,\n paused: boolean,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n\n const keys: AccountMeta[] = [signerMut(authority), writable(exchange)];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.SET_PAUSED]),\n toU8(paused ? 1 : 0),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build SetOperator instruction\n *\n * Accounts:\n * 0. authority (signer)\n * 1. exchange (mut)\n *\n * Data: [discriminator, new_operator (32)]\n */\nexport function buildSetOperatorIx(\n authority: PublicKey,\n newOperator: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n\n const keys: AccountMeta[] = [signerMut(authority), writable(exchange)];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.SET_OPERATOR]),\n newOperator.toBuffer(),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build WithdrawFromPosition instruction\n *\n * Accounts:\n * 0. user (signer, mut)\n * 1. market (readonly)\n * 2. position (mut)\n * 3. mint (readonly)\n * 4. position_ata (mut)\n * 5. user_ata (mut)\n * 6. token_program (readonly)\n *\n * Data: [discriminator, amount (u64), outcome_index (u8)]\n */\nexport function buildWithdrawFromPositionIx(\n params: WithdrawFromPositionParams,\n isToken2022: boolean,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [position] = getPositionPda(params.user, params.market, programId);\n const positionAta = isToken2022\n ? getConditionalTokenAta(params.mint, position)\n : getDepositTokenAta(params.mint, position);\n const userAta = isToken2022\n ? getConditionalTokenAta(params.mint, params.user)\n : getDepositTokenAta(params.mint, params.user);\n const tokenProgram = isToken2022 ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID;\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(params.market),\n writable(position),\n readonly(params.mint),\n writable(positionAta),\n writable(userAta),\n readonly(tokenProgram),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.WITHDRAW_FROM_POSITION]),\n toU64Le(params.amount),\n toU8(params.outcomeIndex),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build ActivateMarket instruction\n *\n * Accounts:\n * 0. authority (signer)\n * 1. exchange (readonly)\n * 2. market (mut)\n *\n * Data: [discriminator]\n */\nexport function buildActivateMarketIx(\n params: ActivateMarketParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [market] = getMarketPda(params.marketId, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n readonly(exchange),\n writable(market),\n ];\n\n const data = Buffer.from([INSTRUCTION.ACTIVATE_MARKET]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build MatchOrdersMulti instruction\n *\n * Dynamic accounts based on full_fill_bitmask:\n * 0. operator (signer)\n * 1. exchange (readonly)\n * 2. market (readonly)\n * [taker_order_status if bit7=0] (mut)\n * taker_nonce (readonly)\n * taker_position (mut)\n * base_mint (readonly)\n * quote_mint (readonly)\n * taker_base_ata (mut)\n * taker_quote_ata (mut)\n * token_2022_program (readonly)\n * system_program (readonly)\n * Per maker:\n * [maker_order_status if bit_i=0] (mut)\n * maker_nonce (readonly)\n * maker_position (mut)\n * maker_base_ata (mut)\n * maker_quote_ata (mut)\n *\n * Data:\n * [0] discriminator\n * [1..30] taker Order (29 bytes)\n * [30..94] taker_signature (64 bytes)\n * [94] num_makers\n * [95] full_fill_bitmask\n * Per maker (109 bytes):\n * [+0..+29] maker Order (29)\n * [+29..+93] maker_signature (64)\n * [+93..+101] maker_fill_amount (8)\n * [+101..+109] taker_fill_amount (8)\n */\nexport function buildMatchOrdersMultiIx(\n params: MatchOrdersMultiParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n if (params.makerOrders.length === 0) {\n throw new Error(\"At least one maker order is required\");\n }\n if (params.makerOrders.length > MAX_MAKERS) {\n throw new Error(`Maximum ${MAX_MAKERS} maker orders allowed`);\n }\n if (params.makerOrders.length !== params.makerFillAmounts.length) {\n throw new Error(\"Maker fill amounts must match maker orders count\");\n }\n if (params.makerOrders.length !== params.takerFillAmounts.length) {\n throw new Error(\"Taker fill amounts must match maker orders count\");\n }\n\n const [exchange] = getExchangePda(programId);\n const takerOrderHash = hashOrder(params.takerOrder);\n const [takerNonce] = getUserNoncePda(params.takerOrder.maker, programId);\n const [takerPosition] = getPositionPda(\n params.takerOrder.maker,\n params.market,\n programId\n );\n const takerBaseAta = getConditionalTokenAta(params.baseMint, takerPosition);\n const takerQuoteAta = getConditionalTokenAta(params.quoteMint, takerPosition);\n\n const keys: AccountMeta[] = [\n signerMut(params.operator),\n readonly(exchange),\n readonly(params.market),\n ];\n\n // Taker order status if not fully filled (bit 7 = 0)\n const takerFullFill = (params.fullFillBitmask & 0x80) !== 0;\n if (!takerFullFill) {\n const [takerOrderStatus] = getOrderStatusPda(takerOrderHash, programId);\n keys.push(writable(takerOrderStatus));\n }\n\n keys.push(readonly(takerNonce));\n keys.push(writable(takerPosition));\n keys.push(readonly(params.baseMint));\n keys.push(readonly(params.quoteMint));\n keys.push(writable(takerBaseAta));\n keys.push(writable(takerQuoteAta));\n keys.push(readonly(TOKEN_2022_PROGRAM_ID));\n keys.push(readonly(SYSTEM_PROGRAM_ID));\n\n // Add maker accounts\n for (let i = 0; i < params.makerOrders.length; i++) {\n const makerOrder = params.makerOrders[i];\n const makerFullFill = (params.fullFillBitmask & (1 << i)) !== 0;\n\n if (!makerFullFill) {\n const makerOrderHash = hashOrder(makerOrder);\n const [makerOrderStatus] = getOrderStatusPda(makerOrderHash, programId);\n keys.push(writable(makerOrderStatus));\n }\n\n const [makerNonce] = getUserNoncePda(makerOrder.maker, programId);\n const [makerPosition] = getPositionPda(\n makerOrder.maker,\n params.market,\n programId\n );\n const makerBaseAta = getConditionalTokenAta(params.baseMint, makerPosition);\n const makerQuoteAta = getConditionalTokenAta(params.quoteMint, makerPosition);\n\n keys.push(readonly(makerNonce));\n keys.push(writable(makerPosition));\n keys.push(writable(makerBaseAta));\n keys.push(writable(makerQuoteAta));\n }\n\n // Build data\n const takerCompact = signedOrderToOrder(params.takerOrder);\n const dataBuffers: Buffer[] = [\n Buffer.from([INSTRUCTION.MATCH_ORDERS_MULTI]),\n serializeOrder(takerCompact),\n params.takerOrder.signature,\n toU8(params.makerOrders.length),\n toU8(params.fullFillBitmask),\n ];\n\n // Add maker data\n for (let i = 0; i < params.makerOrders.length; i++) {\n const makerOrder = params.makerOrders[i];\n const makerCompact = signedOrderToOrder(makerOrder);\n\n dataBuffers.push(serializeOrder(makerCompact));\n dataBuffers.push(makerOrder.signature);\n dataBuffers.push(toU64Le(params.makerFillAmounts[i]));\n dataBuffers.push(toU64Le(params.takerFillAmounts[i]));\n }\n\n const data = Buffer.concat(dataBuffers);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build SetAuthority instruction\n *\n * Accounts:\n * 0. authority (signer)\n * 1. exchange (mut)\n *\n * Data: [discriminator, new_authority (32)]\n */\nexport function buildSetAuthorityIx(\n params: SetAuthorityParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.currentAuthority),\n writable(exchange),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.SET_AUTHORITY]),\n params.newAuthority.toBuffer(),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build CreateOrderbook instruction\n *\n * Accounts:\n * 0. authority (signer, mut)\n * 1. market (readonly)\n * 2. mint_a (readonly)\n * 3. mint_b (readonly)\n * 4. orderbook (mut)\n * 5. lookup_table (mut)\n * 6. exchange (readonly)\n * 7. alt_program (readonly)\n * 8. system_program (readonly)\n *\n * Data: [discriminator, recent_slot (u64)]\n */\nexport function buildCreateOrderbookIx(\n params: CreateOrderbookParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [orderbook] = getOrderbookPda(params.mintA, params.mintB, programId);\n const [alt] = getAltPda(orderbook, params.recentSlot);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n readonly(params.market),\n readonly(params.mintA),\n readonly(params.mintB),\n writable(orderbook),\n writable(alt),\n readonly(exchange),\n readonly(ALT_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.CREATE_ORDERBOOK]),\n toU64Le(params.recentSlot),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build WhitelistDepositToken instruction\n *\n * Accounts:\n * 0. authority (signer, mut)\n * 1. exchange (readonly)\n * 2. mint (readonly)\n * 3. global_deposit_token (mut)\n * 4. system_program (readonly)\n *\n * Data: [discriminator]\n */\nexport function buildWhitelistDepositTokenIx(\n params: WhitelistDepositTokenParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [globalDepositToken] = getGlobalDepositTokenPda(params.mint, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.authority),\n writable(exchange),\n readonly(params.mint),\n writable(globalDepositToken),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n return new TransactionInstruction({\n keys,\n programId,\n data: Buffer.from([INSTRUCTION.WHITELIST_DEPOSIT_TOKEN]),\n });\n}\n\n/**\n * Build DepositToGlobal instruction\n *\n * Accounts:\n * 0. user (signer, mut)\n * 1. global_deposit_token (readonly)\n * 2. mint (readonly)\n * 3. user_global_deposit (mut)\n * 4. user_token_account (mut)\n * 5. token_program (readonly)\n * 6. system_program (readonly)\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildDepositToGlobalIx(\n params: DepositToGlobalParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [globalDepositToken] = getGlobalDepositTokenPda(params.mint, programId);\n const [userGlobalDeposit] = getUserGlobalDepositPda(params.user, params.mint, programId);\n const userTokenAccount = getDepositTokenAta(params.mint, params.user);\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(globalDepositToken),\n readonly(params.mint),\n writable(userGlobalDeposit),\n writable(userTokenAccount),\n readonly(TOKEN_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.DEPOSIT_TO_GLOBAL]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build GlobalToMarketDeposit instruction\n *\n * Accounts:\n * 0. user (signer, mut)\n * 1. exchange (readonly)\n * 2. market (readonly)\n * 3. deposit_mint (readonly)\n * 4. vault (mut)\n * 5. global_deposit_token (readonly)\n * 6. user_global_deposit (mut)\n * 7. position (mut)\n * 8. position_collateral_ata (mut)\n * 9. mint_authority (readonly)\n * 10. token_program (readonly)\n * 11. token_2022_program (readonly)\n * 12. ata_program (readonly)\n * 13. system_program (readonly)\n * + per outcome: conditional_mint[i] (mut), position_conditional_ata[i] (mut)\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildGlobalToMarketDepositIx(\n params: GlobalToMarketDepositParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [vault] = getVaultPda(params.depositMint, params.market, programId);\n const [globalDepositToken] = getGlobalDepositTokenPda(params.depositMint, programId);\n const [userGlobalDeposit] = getUserGlobalDepositPda(params.user, params.depositMint, programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n const positionCollateralAta = getDepositTokenAta(params.depositMint, position);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(exchange),\n readonly(params.market),\n readonly(params.depositMint),\n writable(vault),\n readonly(globalDepositToken),\n writable(userGlobalDeposit),\n writable(position),\n writable(positionCollateralAta),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n readonly(TOKEN_2022_PROGRAM_ID),\n readonly(ASSOCIATED_TOKEN_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n for (let i = 0; i < numOutcomes; i += 1) {\n const [conditionalMint] = getAllConditionalMintPdas(\n params.market,\n params.depositMint,\n numOutcomes,\n programId\n )[i];\n keys.push(writable(conditionalMint));\n keys.push(writable(getConditionalTokenAta(conditionalMint, position)));\n }\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.GLOBAL_TO_MARKET_DEPOSIT]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build InitPositionTokens instruction\n *\n * Accounts:\n * 0. user (signer, mut)\n * 1. exchange (readonly)\n * 2. market (readonly)\n * 3. deposit_mint (readonly)\n * 4. vault (readonly)\n * 5. position (mut)\n * 6. lookup_table (mut)\n * 7. mint_authority (readonly)\n * 8. token_2022_program (readonly)\n * 9. ata_program (readonly)\n * 10. alt_program (readonly)\n * 11. system_program (readonly)\n * + per outcome: conditional_mint[i] (readonly), position_conditional_ata[i] (mut)\n *\n * Data: [discriminator, recent_slot (u64)]\n */\nexport function buildInitPositionTokensIx(\n params: InitPositionTokensParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [exchange] = getExchangePda(programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n const [lookupTable] = getPositionAltPda(position, params.recentSlot);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.payer),\n readonly(params.user),\n readonly(exchange),\n readonly(params.market),\n writable(position),\n writable(lookupTable),\n readonly(mintAuthority),\n readonly(TOKEN_2022_PROGRAM_ID),\n readonly(ASSOCIATED_TOKEN_PROGRAM_ID),\n readonly(ALT_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n for (const depositMint of params.depositMints) {\n const [vault] = getVaultPda(depositMint, params.market, programId);\n const [gdt] = getGlobalDepositTokenPda(depositMint, programId);\n keys.push(readonly(depositMint));\n keys.push(readonly(vault));\n keys.push(readonly(gdt));\n\n for (let i = 0; i < numOutcomes; i += 1) {\n const [conditionalMint] = getAllConditionalMintPdas(\n params.market,\n depositMint,\n numOutcomes,\n programId\n )[i];\n keys.push(readonly(conditionalMint));\n keys.push(writable(getConditionalTokenAta(conditionalMint, position)));\n }\n }\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.INIT_POSITION_TOKENS]),\n toU64Le(params.recentSlot),\n toU8(params.depositMints.length),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build ExtendPositionTokens instruction\n *\n * Extends an existing position's lookup table with new deposit mints.\n *\n * Accounts:\n * 0. payer (signer, mut)\n * 1. user (readonly)\n * 2. exchange (readonly)\n * 3. market (readonly)\n * 4. position (readonly)\n * 5. lookup_table (mut)\n * 6. token_2022_program (readonly)\n * 7. ata_program (readonly)\n * 8. alt_program (readonly)\n * 9. system_program (readonly)\n * Per deposit_mint:\n * deposit_mint (readonly), vault (readonly), gdt (readonly),\n * per outcome: conditional_mint (readonly), position_ata (mut)\n *\n * Data: [discriminator, num_deposit_mints (u8)]\n */\nexport function buildExtendPositionTokensIx(\n params: ExtendPositionTokensParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n if (params.depositMints.length === 0) {\n throw new Error(\"deposit_mints is required\");\n }\n\n const [exchange] = getExchangePda(programId);\n const [position] = getPositionPda(params.user, params.market, programId);\n\n const keys: AccountMeta[] = [\n signerMut(params.payer),\n readonly(params.user),\n readonly(exchange),\n readonly(params.market),\n readonly(position),\n writable(params.lookupTable),\n readonly(TOKEN_2022_PROGRAM_ID),\n readonly(ASSOCIATED_TOKEN_PROGRAM_ID),\n readonly(ALT_PROGRAM_ID),\n readonly(SYSTEM_PROGRAM_ID),\n ];\n\n for (const depositMint of params.depositMints) {\n const [vault] = getVaultPda(depositMint, params.market, programId);\n const [gdt] = getGlobalDepositTokenPda(depositMint, programId);\n keys.push(readonly(depositMint));\n keys.push(readonly(vault));\n keys.push(readonly(gdt));\n\n for (let i = 0; i < numOutcomes; i += 1) {\n const [conditionalMint] = getAllConditionalMintPdas(\n params.market,\n depositMint,\n numOutcomes,\n programId\n )[i];\n keys.push(readonly(conditionalMint));\n keys.push(writable(getConditionalTokenAta(conditionalMint, position)));\n }\n }\n\n const data = Buffer.from([\n INSTRUCTION.EXTEND_POSITION_TOKENS,\n params.depositMints.length,\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n/**\n * Build DepositAndSwap instruction.\n * Supports a mix of global deposits and token swaps in a single instruction.\n */\nexport function buildDepositAndSwapIx(\n params: DepositAndSwapParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n validateOutcomes(params.numOutcomes);\n\n if (params.makers.length === 0) {\n throw new Error(\"makers is required\");\n }\n if (params.makers.length > MAX_MAKERS) {\n throw new Error(`Too many makers: ${params.makers.length}`);\n }\n\n const [exchange] = getExchangePda(programId);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n const [takerNonce] = getUserNoncePda(params.takerOrder.maker, programId);\n const [takerPosition] = getPositionPda(params.takerOrder.maker, params.market, programId);\n const [receiveMint, giveMint] =\n params.takerOrder.side === OrderSide.BID\n ? [params.baseMint, params.quoteMint]\n : [params.quoteMint, params.baseMint];\n\n let fullFillBitmask = 0;\n let depositBitmask = 0;\n\n if (params.takerIsFullFill) {\n fullFillBitmask |= 0x80;\n }\n if (params.takerIsDeposit) {\n depositBitmask |= 0x80;\n }\n\n for (let i = 0; i < params.makers.length; i += 1) {\n const maker = params.makers[i];\n if (maker.isFullFill) {\n fullFillBitmask |= 1 << i;\n }\n if (maker.isDeposit) {\n depositBitmask |= 1 << i;\n }\n }\n\n const keys: AccountMeta[] = [\n signerMut(params.operator),\n readonly(exchange),\n readonly(params.market),\n readonly(mintAuthority),\n readonly(TOKEN_PROGRAM_ID),\n ];\n\n if (!params.takerIsFullFill) {\n const takerOrderHash = hashOrder(params.takerOrder);\n const [takerOrderStatus] = getOrderStatusPda(takerOrderHash, programId);\n keys.push(writable(takerOrderStatus));\n }\n\n keys.push(readonly(takerNonce));\n keys.push(writable(takerPosition));\n keys.push(readonly(params.baseMint));\n keys.push(readonly(params.quoteMint));\n keys.push(writable(getConditionalTokenAta(receiveMint, takerPosition)));\n keys.push(writable(getConditionalTokenAta(giveMint, takerPosition)));\n keys.push(readonly(TOKEN_2022_PROGRAM_ID));\n keys.push(readonly(SYSTEM_PROGRAM_ID));\n\n if (params.takerIsDeposit) {\n const [vault] = getVaultPda(\n params.takerDepositMint,\n params.market,\n programId\n );\n const [globalDepositToken] = getGlobalDepositTokenPda(\n params.takerDepositMint,\n programId\n );\n const [takerGlobalDeposit] = getUserGlobalDepositPda(\n params.takerOrder.maker,\n params.takerDepositMint,\n programId\n );\n\n keys.push(readonly(params.takerDepositMint));\n keys.push(writable(vault));\n keys.push(readonly(globalDepositToken));\n keys.push(writable(takerGlobalDeposit));\n\n for (const [conditionalMint] of getAllConditionalMintPdas(\n params.market,\n params.takerDepositMint,\n params.numOutcomes,\n programId\n )) {\n keys.push(writable(conditionalMint));\n keys.push(writable(getConditionalTokenAta(conditionalMint, takerPosition)));\n }\n }\n\n for (const maker of params.makers) {\n const [makerNonce] = getUserNoncePda(maker.order.maker, programId);\n const [makerPosition] = getPositionPda(maker.order.maker, params.market, programId);\n\n if (!maker.isFullFill) {\n const makerOrderHash = hashOrder(maker.order);\n const [makerOrderStatus] = getOrderStatusPda(makerOrderHash, programId);\n keys.push(writable(makerOrderStatus));\n }\n\n keys.push(readonly(makerNonce));\n keys.push(writable(makerPosition));\n\n if (maker.isDeposit) {\n const [vault] = getVaultPda(maker.depositMint, params.market, programId);\n const [globalDepositToken] = getGlobalDepositTokenPda(\n maker.depositMint,\n programId\n );\n const [makerGlobalDeposit] = getUserGlobalDepositPda(\n maker.order.maker,\n maker.depositMint,\n programId\n );\n\n keys.push(readonly(maker.depositMint));\n keys.push(writable(vault));\n keys.push(readonly(globalDepositToken));\n keys.push(writable(makerGlobalDeposit));\n\n for (const [conditionalMint] of getAllConditionalMintPdas(\n params.market,\n maker.depositMint,\n params.numOutcomes,\n programId\n )) {\n keys.push(writable(conditionalMint));\n keys.push(writable(getConditionalTokenAta(conditionalMint, makerPosition)));\n }\n }\n\n keys.push(writable(getConditionalTokenAta(receiveMint, makerPosition)));\n keys.push(writable(getConditionalTokenAta(giveMint, makerPosition)));\n }\n\n const buffers: Buffer[] = [\n Buffer.from([INSTRUCTION.DEPOSIT_AND_SWAP]),\n serializeOrder(signedOrderToOrder(params.takerOrder)),\n params.takerOrder.signature,\n toU8(params.makers.length),\n toU8(fullFillBitmask),\n toU8(depositBitmask),\n ];\n\n for (const maker of params.makers) {\n buffers.push(serializeOrder(signedOrderToOrder(maker.order)));\n buffers.push(maker.order.signature);\n buffers.push(toU64Le(maker.makerFillAmount));\n buffers.push(toU64Le(maker.takerFillAmount));\n }\n\n return new TransactionInstruction({\n keys,\n programId,\n data: Buffer.concat(buffers),\n });\n}\n\n/**\n * Build WithdrawFromGlobal instruction\n *\n * Accounts:\n * 0. user (signer, mut)\n * 1. global_deposit_token (readonly) - PDA [\"global_deposit\", mint]\n * 2. mint (readonly)\n * 3. user_global_deposit (mut) - PDA [\"global_deposit\", user, mint]\n * 4. user_token_account (mut) - user's ATA for mint\n * 5. token_program (readonly)\n *\n * Data: [discriminator, amount (u64)]\n */\nexport function buildWithdrawFromGlobalIx(\n params: WithdrawFromGlobalParams,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n const [globalDepositToken] = getGlobalDepositTokenPda(params.mint, programId);\n const [userGlobalDeposit] = getUserGlobalDepositPda(params.user, params.mint, programId);\n const userTokenAccount = getDepositTokenAta(params.mint, params.user);\n\n const keys: AccountMeta[] = [\n signerMut(params.user),\n readonly(globalDepositToken),\n readonly(params.mint),\n writable(userGlobalDeposit),\n writable(userTokenAccount),\n readonly(TOKEN_PROGRAM_ID),\n ];\n\n const data = Buffer.concat([\n Buffer.from([INSTRUCTION.WITHDRAW_FROM_GLOBAL]),\n toU64Le(params.amount),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n\n// ============================================================================\n// TRANSACTION BUILDERS (_tx convenience wrappers)\n// Each wraps the corresponding _ix builder into a Transaction with feePayer set.\n// ============================================================================\n\nexport function buildInitializeTx(\n params: InitializeParams,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildInitializeIx(params, programId);\n return new Transaction({ feePayer: params.authority }).add(ix);\n}\n\nexport function buildCreateMarketTx(\n params: CreateMarketParams,\n marketId: bigint,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildCreateMarketIx(params, marketId, programId);\n return new Transaction({ feePayer: params.authority }).add(ix);\n}\n\nexport function buildAddDepositMintTx(\n params: AddDepositMintParams,\n market: PublicKey,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildAddDepositMintIx(params, market, numOutcomes, programId);\n return new Transaction({ feePayer: params.authority }).add(ix);\n}\n\nexport function buildMintCompleteSetTx(\n params: MintCompleteSetParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildMintCompleteSetIx(params, numOutcomes, programId);\n return new Transaction({ feePayer: params.user }).add(ix);\n}\n\nexport function buildMergeCompleteSetTx(\n params: MergeCompleteSetParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildMergeCompleteSetIx(params, numOutcomes, programId);\n return new Transaction({ feePayer: params.user }).add(ix);\n}\n\nexport function buildCancelOrderTx(\n maker: PublicKey,\n market: PublicKey,\n order: SignedOrder,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildCancelOrderIx(maker, market, order, programId);\n return new Transaction({ feePayer: maker }).add(ix);\n}\n\nexport function buildIncrementNonceTx(\n user: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildIncrementNonceIx(user, programId);\n return new Transaction({ feePayer: user }).add(ix);\n}\n\nexport function buildSettleMarketTx(\n params: SettleMarketParams,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildSettleMarketIx(params, programId);\n return new Transaction({ feePayer: params.oracle }).add(ix);\n}\n\nexport function buildRedeemWinningsTx(\n params: RedeemWinningsParams,\n winningOutcome: number,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildRedeemWinningsIx(params, winningOutcome, programId);\n return new Transaction({ feePayer: params.user }).add(ix);\n}\n\nexport function buildSetPausedTx(\n authority: PublicKey,\n paused: boolean,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildSetPausedIx(authority, paused, programId);\n return new Transaction({ feePayer: authority }).add(ix);\n}\n\nexport function buildSetOperatorTx(\n authority: PublicKey,\n newOperator: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildSetOperatorIx(authority, newOperator, programId);\n return new Transaction({ feePayer: authority }).add(ix);\n}\n\nexport function buildWithdrawFromPositionTx(\n params: WithdrawFromPositionParams,\n isToken2022: boolean,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildWithdrawFromPositionIx(params, isToken2022, programId);\n return new Transaction({ feePayer: params.user }).add(ix);\n}\n\nexport function buildActivateMarketTx(\n params: ActivateMarketParams,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildActivateMarketIx(params, programId);\n return new Transaction({ feePayer: params.authority }).add(ix);\n}\n\nexport function buildMatchOrdersMultiTx(\n params: MatchOrdersMultiParams,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildMatchOrdersMultiIx(params, programId);\n return new Transaction({ feePayer: params.operator }).add(ix);\n}\n\nexport function buildSetAuthorityTx(\n params: SetAuthorityParams,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildSetAuthorityIx(params, programId);\n return new Transaction({ feePayer: params.currentAuthority }).add(ix);\n}\n\nexport function buildCreateOrderbookTx(\n params: CreateOrderbookParams,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildCreateOrderbookIx(params, programId);\n return new Transaction({ feePayer: params.authority }).add(ix);\n}\n\nexport function buildWhitelistDepositTokenTx(\n params: WhitelistDepositTokenParams,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildWhitelistDepositTokenIx(params, programId);\n return new Transaction({ feePayer: params.authority }).add(ix);\n}\n\nexport function buildDepositToGlobalTx(\n params: DepositToGlobalParams,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildDepositToGlobalIx(params, programId);\n return new Transaction({ feePayer: params.user }).add(ix);\n}\n\nexport function buildGlobalToMarketDepositTx(\n params: GlobalToMarketDepositParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildGlobalToMarketDepositIx(params, numOutcomes, programId);\n return new Transaction({ feePayer: params.user }).add(ix);\n}\n\nexport function buildInitPositionTokensTx(\n params: InitPositionTokensParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildInitPositionTokensIx(params, numOutcomes, programId);\n return new Transaction({ feePayer: params.payer }).add(ix);\n}\n\nexport function buildExtendPositionTokensTx(\n params: ExtendPositionTokensParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildExtendPositionTokensIx(params, numOutcomes, programId);\n return new Transaction({ feePayer: params.payer }).add(ix);\n}\n\nexport function buildDepositAndSwapTx(\n params: DepositAndSwapParams,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildDepositAndSwapIx(params, programId);\n return new Transaction({ feePayer: params.operator }).add(ix);\n}\n\nexport function buildWithdrawFromGlobalTx(\n params: WithdrawFromGlobalParams,\n programId: PublicKey = PROGRAM_ID\n): Transaction {\n const ix = buildWithdrawFromGlobalIx(params, programId);\n return new Transaction({ feePayer: params.user }).add(ix);\n}\n"]}
@@ -1,11 +1,15 @@
1
- import { Keypair } from "@solana/web3.js";
1
+ import { PublicKey, Keypair } from "@solana/web3.js";
2
2
  import type { DepositSource, SubmitOrderRequest, TimeInForce, TriggerType } from "../shared";
3
3
  import { SignedOrder, Order, BidOrderParams, AskOrderParams } from "./types";
4
4
  import { deriveConditionId } from "./utils";
5
+ /**
6
+ * Generate a random salt (u64) for order uniqueness.
7
+ */
8
+ export declare function generateSalt(): bigint;
5
9
  /**
6
10
  * Hash an order using keccak256
7
- * Layout (161 bytes - order without signature):
8
- * nonce (8) || maker (32) || market (32) || baseMint (32) || quoteMint (32) ||
11
+ * Layout (169 bytes - order without signature):
12
+ * nonce (8) || salt (8) || maker (32) || market (32) || baseMint (32) || quoteMint (32) ||
9
13
  * side (1) || amountIn (8) || amountOut (8) || expiration (8)
10
14
  *
11
15
  * @returns 32-byte keccak256 hash
@@ -35,19 +39,20 @@ export declare function signOrderFull(order: Omit<SignedOrder, "signature">, sig
35
39
  */
36
40
  export declare function verifyOrderSignature(order: SignedOrder): boolean;
37
41
  /**
38
- * Serialize a signed order to bytes (225 bytes)
42
+ * Serialize a signed order to bytes (233 bytes)
39
43
  *
40
44
  * Layout:
41
45
  * [0..8] nonce (u64)
42
- * [8..40] maker (Pubkey)
43
- * [40..72] market (Pubkey)
44
- * [72..104] baseMint (Pubkey)
45
- * [104..136] quoteMint (Pubkey)
46
- * [136] side (u8)
47
- * [137..145] amountIn (u64)
48
- * [145..153] amountOut (u64)
49
- * [153..161] expiration (i64)
50
- * [161..225] signature (64 bytes)
46
+ * [8..16] salt (u64)
47
+ * [16..48] maker (Pubkey)
48
+ * [48..80] market (Pubkey)
49
+ * [80..112] baseMint (Pubkey)
50
+ * [112..144] quoteMint (Pubkey)
51
+ * [144] side (u8)
52
+ * [145..153] amountIn (u64)
53
+ * [153..161] amountOut (u64)
54
+ * [161..169] expiration (i64)
55
+ * [169..233] signature (64 bytes)
51
56
  */
52
57
  export declare function serializeSignedOrder(order: SignedOrder): Buffer;
53
58
  /**
@@ -55,14 +60,15 @@ export declare function serializeSignedOrder(order: SignedOrder): Buffer;
55
60
  */
56
61
  export declare function deserializeSignedOrder(data: Buffer): SignedOrder;
57
62
  /**
58
- * Serialize a compact order to bytes (29 bytes)
63
+ * Serialize a compact order to bytes (37 bytes)
59
64
  *
60
65
  * Layout:
61
66
  * [0..4] nonce (u32)
62
- * [4] side (u8)
63
- * [5..13] amountIn (u64)
64
- * [13..21] amountOut (u64)
65
- * [21..29] expiration (i64)
67
+ * [4..12] salt (u64)
68
+ * [12] side (u8)
69
+ * [13..21] amountIn (u64)
70
+ * [21..29] amountOut (u64)
71
+ * [29..37] expiration (i64)
66
72
  */
67
73
  export declare function serializeOrder(order: Order): Buffer;
68
74
  /**
@@ -73,6 +79,11 @@ export declare function deserializeOrder(data: Buffer): Order;
73
79
  * Convert a SignedOrder to a compact Order (drop maker)
74
80
  */
75
81
  export declare function signedOrderToOrder(order: SignedOrder): Order;
82
+ /**
83
+ * Expand a compact Order back to a full SignedOrder using provided pubkeys and signature.
84
+ * Rust equivalent: Order::to_signed()
85
+ */
86
+ export declare function orderToSigned(order: Order, maker: PublicKey, market: PublicKey, baseMint: PublicKey, quoteMint: PublicKey, signature: Buffer): SignedOrder;
76
87
  /**
77
88
  * Create a BID order (buyer wants base tokens, pays with quote tokens)
78
89
  */
@@ -109,6 +120,11 @@ export declare function signatureHex(order: SignedOrder): string;
109
120
  * Check if a signed order has a non-zero signature
110
121
  */
111
122
  export declare function isSigned(order: SignedOrder): boolean;
123
+ /**
124
+ * Apply an external base58-encoded signature to an unsigned order.
125
+ * Rust equivalent: OrderPayload::apply_signature()
126
+ */
127
+ export declare function applySignature(order: Omit<SignedOrder, "signature">, signatureBs58: string): SignedOrder;
112
128
  /**
113
129
  * Derive orderbook ID from base and quote token addresses.
114
130
  * Delegates to the canonical implementation in shared/types.
@@ -167,4 +183,6 @@ export declare const cancel_trigger_order_message: typeof cancelTriggerOrderMess
167
183
  export declare const cancel_all_message: typeof cancelAllMessage;
168
184
  export declare const generate_cancel_all_salt: typeof generateCancelAllSalt;
169
185
  export declare const derive_condition_id: typeof deriveConditionId;
186
+ export declare const apply_signature: typeof applySignature;
187
+ export declare const order_to_signed: typeof orderToSigned;
170
188
  //# sourceMappingURL=orders.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../src/program/orders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../src/program/orders.ts"],"names":[],"mappings":"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"}