@lightconexyz/lightcone-sdk 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -206
- package/dist/auth/client.d.ts +25 -0
- package/dist/auth/client.d.ts.map +1 -0
- package/dist/auth/client.js +120 -0
- package/dist/auth/client.js.map +1 -0
- package/dist/auth/index.d.ts +73 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +42 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/native.d.ts +8 -0
- package/dist/auth/native.d.ts.map +1 -0
- package/dist/auth/native.js +19 -0
- package/dist/auth/native.js.map +1 -0
- package/dist/auth.d.ts +1 -79
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +15 -145
- package/dist/auth.js.map +1 -1
- package/dist/client.d.ts +69 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +158 -0
- package/dist/client.js.map +1 -0
- package/dist/domain/admin/client.d.ts +17 -0
- package/dist/domain/admin/client.d.ts.map +1 -0
- package/dist/domain/admin/client.js +32 -0
- package/dist/domain/admin/client.js.map +1 -0
- package/dist/domain/admin/index.d.ts +7 -0
- package/dist/domain/admin/index.d.ts.map +1 -0
- package/dist/domain/admin/index.js +19 -0
- package/dist/domain/admin/index.js.map +1 -0
- package/dist/domain/admin/wire.d.ts +117 -0
- package/dist/domain/admin/wire.d.ts.map +1 -0
- package/dist/domain/admin/wire.js +3 -0
- package/dist/domain/admin/wire.js.map +1 -0
- package/dist/domain/index.d.ts +9 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +45 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/market/client.d.ts +21 -0
- package/dist/domain/market/client.d.ts.map +1 -0
- package/dist/domain/market/client.js +70 -0
- package/dist/domain/market/client.js.map +1 -0
- package/dist/domain/market/convert.d.ts +8 -0
- package/dist/domain/market/convert.d.ts.map +1 -0
- package/dist/domain/market/convert.js +96 -0
- package/dist/domain/market/convert.js.map +1 -0
- package/dist/domain/market/index.d.ts +47 -0
- package/dist/domain/market/index.d.ts.map +1 -0
- package/dist/domain/market/index.js +58 -0
- package/dist/domain/market/index.js.map +1 -0
- package/dist/domain/market/outcome.d.ts +12 -0
- package/dist/domain/market/outcome.d.ts.map +1 -0
- package/dist/domain/market/outcome.js +28 -0
- package/dist/domain/market/outcome.js.map +1 -0
- package/dist/domain/market/tokens.d.ts +42 -0
- package/dist/domain/market/tokens.d.ts.map +1 -0
- package/dist/domain/market/tokens.js +106 -0
- package/dist/domain/market/tokens.js.map +1 -0
- package/dist/domain/market/wire.d.ts +116 -0
- package/dist/domain/market/wire.d.ts.map +1 -0
- package/dist/domain/market/wire.js +3 -0
- package/dist/domain/market/wire.js.map +1 -0
- package/dist/domain/order/client.d.ts +187 -0
- package/dist/domain/order/client.d.ts.map +1 -0
- package/dist/domain/order/client.js +122 -0
- package/dist/domain/order/client.js.map +1 -0
- package/dist/domain/order/convert.d.ts +8 -0
- package/dist/domain/order/convert.d.ts.map +1 -0
- package/dist/domain/order/convert.js +80 -0
- package/dist/domain/order/convert.js.map +1 -0
- package/dist/domain/order/index.d.ts +48 -0
- package/dist/domain/order/index.d.ts.map +1 -0
- package/dist/domain/order/index.js +41 -0
- package/dist/domain/order/index.js.map +1 -0
- package/dist/domain/order/state.d.ts +26 -0
- package/dist/domain/order/state.d.ts.map +1 -0
- package/dist/domain/order/state.js +85 -0
- package/dist/domain/order/state.js.map +1 -0
- package/dist/domain/order/wire.d.ts +123 -0
- package/dist/domain/order/wire.d.ts.map +1 -0
- package/dist/domain/order/wire.js +3 -0
- package/dist/domain/order/wire.js.map +1 -0
- package/dist/domain/orderbook/client.d.ts +20 -0
- package/dist/domain/orderbook/client.d.ts.map +1 -0
- package/dist/domain/orderbook/client.js +30 -0
- package/dist/domain/orderbook/client.js.map +1 -0
- package/dist/domain/orderbook/convert.d.ts +5 -0
- package/dist/domain/orderbook/convert.d.ts.map +1 -0
- package/dist/domain/orderbook/convert.js +34 -0
- package/dist/domain/orderbook/convert.js.map +1 -0
- package/dist/domain/orderbook/index.d.ts +36 -0
- package/dist/domain/orderbook/index.d.ts.map +1 -0
- package/dist/domain/orderbook/index.js +63 -0
- package/dist/domain/orderbook/index.js.map +1 -0
- package/dist/domain/orderbook/state.d.ts +19 -0
- package/dist/domain/orderbook/state.d.ts.map +1 -0
- package/dist/domain/orderbook/state.js +86 -0
- package/dist/domain/orderbook/state.js.map +1 -0
- package/dist/domain/orderbook/ticker.d.ts +8 -0
- package/dist/domain/orderbook/ticker.d.ts.map +1 -0
- package/dist/domain/orderbook/ticker.js +3 -0
- package/dist/domain/orderbook/ticker.js.map +1 -0
- package/dist/domain/orderbook/wire.d.ts +61 -0
- package/dist/domain/orderbook/wire.d.ts.map +1 -0
- package/dist/domain/orderbook/wire.js +3 -0
- package/dist/domain/orderbook/wire.js.map +1 -0
- package/dist/domain/position/client.d.ts +13 -0
- package/dist/domain/position/client.d.ts.map +1 -0
- package/dist/domain/position/client.js +20 -0
- package/dist/domain/position/client.js.map +1 -0
- package/dist/domain/position/index.d.ts +66 -0
- package/dist/domain/position/index.d.ts.map +1 -0
- package/dist/domain/position/index.js +19 -0
- package/dist/domain/position/index.js.map +1 -0
- package/dist/domain/position/wire.d.ts +29 -0
- package/dist/domain/position/wire.d.ts.map +1 -0
- package/dist/domain/position/wire.js +3 -0
- package/dist/domain/position/wire.js.map +1 -0
- package/dist/domain/price_history/client.d.ts +12 -0
- package/dist/domain/price_history/client.d.ts.map +1 -0
- package/dist/domain/price_history/client.js +24 -0
- package/dist/domain/price_history/client.js.map +1 -0
- package/dist/domain/price_history/index.d.ts +14 -0
- package/dist/domain/price_history/index.d.ts.map +1 -0
- package/dist/domain/price_history/index.js +27 -0
- package/dist/domain/price_history/index.js.map +1 -0
- package/dist/domain/price_history/state.d.ts +11 -0
- package/dist/domain/price_history/state.d.ts.map +1 -0
- package/dist/domain/price_history/state.js +35 -0
- package/dist/domain/price_history/state.js.map +1 -0
- package/dist/domain/price_history/wire.d.ts +47 -0
- package/dist/domain/price_history/wire.d.ts.map +1 -0
- package/dist/domain/price_history/wire.js +3 -0
- package/dist/domain/price_history/wire.js.map +1 -0
- package/dist/domain/referral/client.d.ts +13 -0
- package/dist/domain/referral/client.d.ts.map +1 -0
- package/dist/domain/referral/client.js +34 -0
- package/dist/domain/referral/client.js.map +1 -0
- package/dist/domain/referral/index.d.ts +17 -0
- package/dist/domain/referral/index.d.ts.map +1 -0
- package/dist/domain/referral/index.js +19 -0
- package/dist/domain/referral/index.js.map +1 -0
- package/dist/domain/referral/wire.d.ts +22 -0
- package/dist/domain/referral/wire.d.ts.map +1 -0
- package/dist/domain/referral/wire.js +3 -0
- package/dist/domain/referral/wire.js.map +1 -0
- package/dist/domain/trade/client.d.ts +12 -0
- package/dist/domain/trade/client.d.ts.map +1 -0
- package/dist/domain/trade/client.js +27 -0
- package/dist/domain/trade/client.js.map +1 -0
- package/dist/domain/trade/convert.d.ts +5 -0
- package/dist/domain/trade/convert.d.ts.map +1 -0
- package/dist/domain/trade/convert.js +25 -0
- package/dist/domain/trade/convert.js.map +1 -0
- package/dist/domain/trade/index.d.ts +19 -0
- package/dist/domain/trade/index.d.ts.map +1 -0
- package/dist/domain/trade/index.js +24 -0
- package/dist/domain/trade/index.js.map +1 -0
- package/dist/domain/trade/state.d.ts +16 -0
- package/dist/domain/trade/state.d.ts.map +1 -0
- package/dist/domain/trade/state.js +40 -0
- package/dist/domain/trade/state.js.map +1 -0
- package/dist/domain/trade/wire.d.ts +34 -0
- package/dist/domain/trade/wire.d.ts.map +1 -0
- package/dist/domain/trade/wire.js +3 -0
- package/dist/domain/trade/wire.js.map +1 -0
- package/dist/error.d.ts +44 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +126 -0
- package/dist/error.js.map +1 -0
- package/dist/http/client.d.ts +16 -0
- package/dist/http/client.d.ts.map +1 -0
- package/dist/http/client.js +146 -0
- package/dist/http/client.js.map +1 -0
- package/dist/http/index.d.ts +3 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +12 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/retry.d.ts +30 -0
- package/dist/http/retry.d.ts.map +1 -0
- package/dist/http/retry.js +48 -0
- package/dist/http/retry.js.map +1 -0
- package/dist/index.d.ts +13 -51
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -68
- package/dist/index.js.map +1 -1
- package/dist/network.d.ts +4 -4
- package/dist/network.d.ts.map +1 -1
- package/dist/network.js +4 -4
- package/dist/network.js.map +1 -1
- package/dist/prelude.d.ts +41 -0
- package/dist/prelude.d.ts.map +1 -0
- package/dist/prelude.js +55 -0
- package/dist/prelude.js.map +1 -0
- package/dist/privy/client.d.ts +17 -0
- package/dist/privy/client.d.ts.map +1 -0
- package/dist/privy/client.js +66 -0
- package/dist/privy/client.js.map +1 -0
- package/dist/privy/index.d.ts +57 -0
- package/dist/privy/index.d.ts.map +1 -0
- package/dist/privy/index.js +80 -0
- package/dist/privy/index.js.map +1 -0
- package/dist/program/accounts.d.ts +19 -2
- package/dist/program/accounts.d.ts.map +1 -1
- package/dist/program/accounts.js +52 -2
- package/dist/program/accounts.js.map +1 -1
- package/dist/program/builder.d.ts +15 -11
- package/dist/program/builder.d.ts.map +1 -1
- package/dist/program/builder.js +30 -22
- package/dist/program/builder.js.map +1 -1
- package/dist/program/client.d.ts +40 -1
- package/dist/program/client.d.ts.map +1 -1
- package/dist/program/client.js +87 -2
- package/dist/program/client.js.map +1 -1
- package/dist/program/constants.d.ts +10 -1
- package/dist/program/constants.d.ts.map +1 -1
- package/dist/program/constants.js +11 -2
- package/dist/program/constants.js.map +1 -1
- package/dist/program/envelope.d.ts +94 -0
- package/dist/program/envelope.d.ts.map +1 -0
- package/dist/program/envelope.js +258 -0
- package/dist/program/envelope.js.map +1 -0
- package/dist/program/error.d.ts +8 -0
- package/dist/program/error.d.ts.map +1 -0
- package/dist/program/error.js +20 -0
- package/dist/program/error.js.map +1 -0
- package/dist/program/index.d.ts +8 -5
- package/dist/program/index.d.ts.map +1 -1
- package/dist/program/index.js +29 -3
- package/dist/program/index.js.map +1 -1
- package/dist/program/instructions.d.ts +124 -1
- package/dist/program/instructions.d.ts.map +1 -1
- package/dist/program/instructions.js +439 -4
- package/dist/program/instructions.js.map +1 -1
- package/dist/program/orders.d.ts +26 -8
- package/dist/program/orders.d.ts.map +1 -1
- package/dist/program/orders.js +58 -31
- package/dist/program/orders.js.map +1 -1
- package/dist/program/pda.d.ts +19 -0
- package/dist/program/pda.d.ts.map +1 -1
- package/dist/program/pda.js +28 -0
- package/dist/program/pda.js.map +1 -1
- package/dist/program/types.d.ts +93 -9
- package/dist/program/types.d.ts.map +1 -1
- package/dist/program/types.js.map +1 -1
- package/dist/shared/fmt/decimal.d.ts +5 -0
- package/dist/shared/fmt/decimal.d.ts.map +1 -0
- package/dist/shared/fmt/decimal.js +54 -0
- package/dist/shared/fmt/decimal.js.map +1 -0
- package/dist/shared/fmt/index.d.ts +3 -0
- package/dist/shared/fmt/index.d.ts.map +1 -0
- package/dist/shared/fmt/index.js +39 -0
- package/dist/shared/fmt/index.js.map +1 -0
- package/dist/shared/fmt/num.d.ts +6 -0
- package/dist/shared/fmt/num.d.ts.map +1 -0
- package/dist/shared/fmt/num.js +44 -0
- package/dist/shared/fmt/num.js.map +1 -0
- package/dist/shared/index.d.ts +4 -7
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +19 -7
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/price.d.ts +5 -33
- package/dist/shared/price.d.ts.map +1 -1
- package/dist/shared/price.js +11 -39
- package/dist/shared/price.js.map +1 -1
- package/dist/shared/scaling.d.ts +17 -30
- package/dist/shared/scaling.d.ts.map +1 -1
- package/dist/shared/scaling.js +88 -57
- package/dist/shared/scaling.js.map +1 -1
- package/dist/shared/types.d.ts +66 -16
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +81 -17
- package/dist/shared/types.js.map +1 -1
- package/dist/ws/client.d.ts +35 -0
- package/dist/ws/client.d.ts.map +1 -0
- package/dist/ws/client.js +226 -0
- package/dist/ws/client.js.map +1 -0
- package/dist/ws/index.d.ts +109 -0
- package/dist/ws/index.d.ts.map +1 -0
- package/dist/ws/index.js +181 -0
- package/dist/ws/index.js.map +1 -0
- package/dist/ws/subscriptions.d.ts +51 -0
- package/dist/ws/subscriptions.d.ts.map +1 -0
- package/dist/ws/subscriptions.js +44 -0
- package/dist/ws/subscriptions.js.map +1 -0
- package/package.json +3 -11
- package/dist/api/client.d.ts +0 -225
- package/dist/api/client.d.ts.map +0 -1
- package/dist/api/client.js +0 -452
- package/dist/api/client.js.map +0 -1
- package/dist/api/error.d.ts +0 -58
- package/dist/api/error.d.ts.map +0 -1
- package/dist/api/error.js +0 -98
- package/dist/api/error.js.map +0 -1
- package/dist/api/index.d.ts +0 -23
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js +0 -51
- package/dist/api/index.js.map +0 -1
- package/dist/api/types/admin.d.ts +0 -49
- package/dist/api/types/admin.d.ts.map +0 -1
- package/dist/api/types/admin.js +0 -13
- package/dist/api/types/admin.js.map +0 -1
- package/dist/api/types/index.d.ts +0 -14
- package/dist/api/types/index.d.ts.map +0 -1
- package/dist/api/types/index.js +0 -13
- package/dist/api/types/index.js.map +0 -1
- package/dist/api/types/market.d.ts +0 -186
- package/dist/api/types/market.d.ts.map +0 -1
- package/dist/api/types/market.js +0 -6
- package/dist/api/types/market.js.map +0 -1
- package/dist/api/types/order.d.ts +0 -190
- package/dist/api/types/order.d.ts.map +0 -1
- package/dist/api/types/order.js +0 -6
- package/dist/api/types/order.js.map +0 -1
- package/dist/api/types/orderbook.d.ts +0 -36
- package/dist/api/types/orderbook.d.ts.map +0 -1
- package/dist/api/types/orderbook.js +0 -6
- package/dist/api/types/orderbook.js.map +0 -1
- package/dist/api/types/position.d.ts +0 -60
- package/dist/api/types/position.d.ts.map +0 -1
- package/dist/api/types/position.js +0 -6
- package/dist/api/types/position.js.map +0 -1
- package/dist/api/types/price_history.d.ts +0 -68
- package/dist/api/types/price_history.d.ts.map +0 -1
- package/dist/api/types/price_history.js +0 -13
- package/dist/api/types/price_history.js.map +0 -1
- package/dist/api/types/trade.d.ts +0 -67
- package/dist/api/types/trade.d.ts.map +0 -1
- package/dist/api/types/trade.js +0 -13
- package/dist/api/types/trade.js.map +0 -1
- package/dist/api/validation.d.ts +0 -24
- package/dist/api/validation.d.ts.map +0 -1
- package/dist/api/validation.js +0 -53
- package/dist/api/validation.js.map +0 -1
- package/dist/websocket/client.d.ts +0 -238
- package/dist/websocket/client.d.ts.map +0 -1
- package/dist/websocket/client.js +0 -580
- package/dist/websocket/client.js.map +0 -1
- package/dist/websocket/error.d.ts +0 -47
- package/dist/websocket/error.d.ts.map +0 -1
- package/dist/websocket/error.js +0 -83
- package/dist/websocket/error.js.map +0 -1
- package/dist/websocket/handlers.d.ts +0 -97
- package/dist/websocket/handlers.d.ts.map +0 -1
- package/dist/websocket/handlers.js +0 -277
- package/dist/websocket/handlers.js.map +0 -1
- package/dist/websocket/index.d.ts +0 -38
- package/dist/websocket/index.d.ts.map +0 -1
- package/dist/websocket/index.js +0 -75
- package/dist/websocket/index.js.map +0 -1
- package/dist/websocket/state/index.d.ts +0 -7
- package/dist/websocket/state/index.d.ts.map +0 -1
- package/dist/websocket/state/index.js +0 -14
- package/dist/websocket/state/index.js.map +0 -1
- package/dist/websocket/state/orderbook.d.ts +0 -107
- package/dist/websocket/state/orderbook.d.ts.map +0 -1
- package/dist/websocket/state/orderbook.js +0 -293
- package/dist/websocket/state/orderbook.js.map +0 -1
- package/dist/websocket/state/price.d.ts +0 -108
- package/dist/websocket/state/price.d.ts.map +0 -1
- package/dist/websocket/state/price.js +0 -243
- package/dist/websocket/state/price.js.map +0 -1
- package/dist/websocket/state/user.d.ts +0 -83
- package/dist/websocket/state/user.d.ts.map +0 -1
- package/dist/websocket/state/user.js +0 -228
- package/dist/websocket/state/user.js.map +0 -1
- package/dist/websocket/subscriptions.d.ts +0 -143
- package/dist/websocket/subscriptions.d.ts.map +0 -1
- package/dist/websocket/subscriptions.js +0 -244
- package/dist/websocket/subscriptions.js.map +0 -1
- package/dist/websocket/types.d.ts +0 -417
- package/dist/websocket/types.d.ts.map +0 -1
- package/dist/websocket/types.js +0 -195
- package/dist/websocket/types.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} 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 SignedOrder,\n OutcomeMetadata,\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} 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. payer (signer)\n * 1. 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 keys: AccountMeta[] = [\n signerMut(params.authority),\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 > 3) {\n throw new Error(\"Maximum 3 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. payer (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.payer),\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"]}
|
|
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 DepositAndSwapParams,\n ExtendPositionTokensParams,\n SignedOrder,\n OutcomeMetadata,\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. payer (signer)\n * 1. 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 [exchange] = getExchangePda(programId);\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 keys: AccountMeta[] = [\n signerMut(params.payer),\n readonly(exchange),\n readonly(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. payer (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.payer),\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 * Optional (for ALT creation/extension when first deposit to this mint):\n * 7. user_nonce (readonly)\n * 8. lookup_table (mut)\n * 9. alt_program (readonly)\n *\n * Data: [discriminator, amount (u64), optional recent_slot (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 // Optional ALT accounts\n if (params.userNonce && params.lookupTable) {\n keys.push(readonly(params.userNonce));\n keys.push(writable(params.lookupTable));\n keys.push(readonly(ALT_PROGRAM_ID));\n }\n\n const dataBuffers: Buffer[] = [\n Buffer.from([INSTRUCTION.DEPOSIT_TO_GLOBAL]),\n toU64Le(params.amount),\n ];\n\n // Optional recent_slot for ALT creation\n if (params.recentSlot !== undefined) {\n dataBuffers.push(toU64Le(params.recentSlot));\n }\n\n return new TransactionInstruction({\n keys,\n programId,\n data: Buffer.concat(dataBuffers),\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 * Permissionless: payer pays, user is position owner (no signature required)\n *\n * Accounts:\n * 0. payer (signer, mut)\n * 1. user (readonly)\n * 2. exchange (readonly)\n * 3. market (readonly)\n * 4. position (mut)\n * 5. lookup_table (mut)\n * 6. mint_authority (readonly)\n * 7. token_2022_program (readonly)\n * 8. ata_program (readonly)\n * 9. alt_program (readonly)\n * 10. system_program (readonly)\n *\n * Remaining per deposit_mint (in ascending GDT index order):\n * deposit_mint, vault, gdt, [conditional_mint[i], position_conditional_ata[i]]*numOutcomes\n *\n * Data: [discriminator, recent_slot (u64), num_deposit_mints (u8)]\n */\nexport function buildInitPositionTokensIx(\n params: InitPositionTokensParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n if (params.depositMints.length === 0) {\n throw new Error(\"At least one deposit mint is required\");\n }\n\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 // Remaining accounts: per deposit_mint group\n for (const depositMint of params.depositMints) {\n const [vault] = getVaultPda(depositMint, params.market, programId);\n const [gdt] = getGlobalDepositTokenPda(depositMint, programId);\n\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 DepositAndSwap instruction.\n *\n * deposit_bitmask controls per-participant deposit vs swap routing:\n * bit 7 = taker deposits, bits 0..n = maker i deposits\n *\n * Account layout:\n * Fixed (5): operator, exchange, market, mint_authority, token_program\n * Taker: [order_status], nonce, position, base_mint, quote_mint,\n * taker_receive_ata, taker_give_ata, token_2022, system\n * Taker deposit (if bit 7): deposit_mint, vault, gdt, user_global_deposit,\n * [cond_mint, ata]*numOutcomes\n * Per maker:\n * Common: [order_status], nonce, position\n * If deposit: deposit_mint, vault, gdt, user_global_deposit,\n * [cond_mint, ata]*numOutcomes, maker_receive_ata, maker_give_ata\n * If swap: maker_receive_ata, maker_give_ata\n *\n * Data: [disc, takerOrder(29), takerSig(64), numMakers(1),\n * fullFillBitmask(1), depositBitmask(1), ...makerData(109*n)]\n */\nexport function buildDepositAndSwapIx(\n params: DepositAndSwapParams,\n numOutcomes: number,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n if (params.makerOrders.length === 0) {\n throw new Error(\"maker_orders is required\");\n }\n if (params.makerOrders.length > MAX_MAKERS) {\n throw new Error(`Too many makers: ${params.makerOrders.length}`);\n }\n if (params.makerOrders.length !== params.makerFillAmounts.length) {\n throw new Error(\"maker_fill_amounts length must match maker_orders\");\n }\n if (params.makerOrders.length !== params.takerFillAmounts.length) {\n throw new Error(\"taker_fill_amounts length must match maker_orders\");\n }\n\n const [exchange] = getExchangePda(programId);\n const [mintAuthority] = getMintAuthorityPda(params.market, programId);\n\n const takerOrderHash = hashOrder(params.takerOrder);\n const [takerNonce] = getUserNoncePda(params.takerOrder.maker, programId);\n const [takerPosition] = getPositionPda(params.takerOrder.maker, params.market, programId);\n\n const takerFullFill = (params.fullFillBitmask & 0x80) !== 0;\n const takerIsDeposit = (params.depositBitmask & 0x80) !== 0;\n\n // Determine receive/give mints based on taker side\n const takerSide = params.takerOrder.side;\n const receiveMint = takerSide === 0 ? params.baseMint : params.quoteMint;\n const giveMint = takerSide === 0 ? params.quoteMint : params.baseMint;\n\n const keys: AccountMeta[] = [];\n\n // Fixed accounts (5)\n keys.push(signerMut(params.operator));\n keys.push(readonly(exchange));\n keys.push(readonly(params.market));\n keys.push(readonly(mintAuthority));\n keys.push(readonly(TOKEN_PROGRAM_ID));\n\n // Taker order_status (if not fully filled)\n if (!takerFullFill) {\n const [takerOrderStatus] = getOrderStatusPda(takerOrderHash, programId);\n keys.push(writable(takerOrderStatus));\n }\n\n // Taker common block (8 accounts)\n keys.push(readonly(takerNonce));\n keys.push(writable(takerPosition));\n keys.push(readonly(params.baseMint));\n keys.push(readonly(params.quoteMint));\n const takerReceiveAta = getConditionalTokenAta(receiveMint, takerPosition);\n const takerGiveAta = getConditionalTokenAta(giveMint, takerPosition);\n keys.push(writable(takerReceiveAta));\n keys.push(writable(takerGiveAta));\n keys.push(readonly(TOKEN_2022_PROGRAM_ID));\n keys.push(readonly(SYSTEM_PROGRAM_ID));\n\n // Taker deposit block (if taker deposits)\n if (takerIsDeposit) {\n if (!params.takerDepositMint) {\n throw new Error(\"takerDepositMint is required when taker deposits (depositBitmask bit 7)\");\n }\n const takerDm = params.takerDepositMint;\n const [takerVault] = getVaultPda(takerDm, params.market, programId);\n const [takerGdt] = getGlobalDepositTokenPda(takerDm, programId);\n const [takerUgd] = getUserGlobalDepositPda(params.takerOrder.maker, takerDm, programId);\n\n keys.push(readonly(takerDm));\n keys.push(writable(takerVault));\n keys.push(readonly(takerGdt));\n keys.push(writable(takerUgd));\n\n for (let j = 0; j < numOutcomes; j += 1) {\n const [conditionalMint] = getAllConditionalMintPdas(\n params.market,\n takerDm,\n numOutcomes,\n programId\n )[j];\n keys.push(writable(conditionalMint));\n keys.push(writable(getConditionalTokenAta(conditionalMint, takerPosition)));\n }\n }\n\n // Per-maker accounts\n for (let i = 0; i < params.makerOrders.length; i += 1) {\n const makerOrder = params.makerOrders[i];\n const makerFullFill = (params.fullFillBitmask & (1 << i)) !== 0;\n const makerIsDeposit = (params.depositBitmask & (1 << i)) !== 0;\n\n // Maker order_status (if not fully filled)\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(makerOrder.maker, params.market, programId);\n\n // Common: nonce, position\n keys.push(readonly(makerNonce));\n keys.push(writable(makerPosition));\n\n if (makerIsDeposit) {\n // Maker deposit: deposit_mint, vault, gdt, ugd, [cond_mint, ata]*n, receive_ata, give_ata\n const makerDm = params.makerDepositMints?.[i];\n if (!makerDm) {\n throw new Error(`makerDepositMints[${i}] is required when maker ${i} deposits`);\n }\n const [makerVault] = getVaultPda(makerDm, params.market, programId);\n const [makerGdt] = getGlobalDepositTokenPda(makerDm, programId);\n const [makerUgd] = getUserGlobalDepositPda(makerOrder.maker, makerDm, programId);\n\n keys.push(readonly(makerDm));\n keys.push(writable(makerVault));\n keys.push(readonly(makerGdt));\n keys.push(writable(makerUgd));\n\n for (let j = 0; j < numOutcomes; j += 1) {\n const [conditionalMint] = getAllConditionalMintPdas(\n params.market,\n makerDm,\n numOutcomes,\n programId\n )[j];\n keys.push(writable(conditionalMint));\n keys.push(writable(getConditionalTokenAta(conditionalMint, makerPosition)));\n }\n\n // Maker swap ATAs (always present after deposit block)\n const makerReceiveAta = getConditionalTokenAta(receiveMint, makerPosition);\n const makerGiveAta = getConditionalTokenAta(giveMint, makerPosition);\n keys.push(writable(makerReceiveAta));\n keys.push(writable(makerGiveAta));\n } else {\n // Maker swap: receive_ata, give_ata\n const makerReceiveAta = getConditionalTokenAta(receiveMint, makerPosition);\n const makerGiveAta = getConditionalTokenAta(giveMint, makerPosition);\n keys.push(writable(makerReceiveAta));\n keys.push(writable(makerGiveAta));\n }\n }\n\n // Build data (96-byte header + 109 per maker)\n const buffers: Buffer[] = [\n Buffer.from([INSTRUCTION.DEPOSIT_AND_SWAP]),\n serializeOrder(signedOrderToOrder(params.takerOrder)),\n params.takerOrder.signature,\n toU8(params.makerOrders.length),\n toU8(params.fullFillBitmask),\n toU8(params.depositBitmask),\n ];\n\n for (let i = 0; i < params.makerOrders.length; i += 1) {\n const makerOrder = params.makerOrders[i];\n buffers.push(serializeOrder(signedOrderToOrder(makerOrder)));\n buffers.push(makerOrder.signature);\n buffers.push(toU64Le(params.makerFillAmounts[i]));\n buffers.push(toU64Le(params.takerFillAmounts[i]));\n }\n\n return new TransactionInstruction({\n keys,\n programId,\n data: Buffer.concat(buffers),\n });\n}\n\n/**\n * Build ExtendPositionTokens instruction\n * Permissionless: anyone can pay to extend ALTs for any user\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 *\n * Remaining per deposit_mint (in ascending GDT index order):\n * deposit_mint, vault, gdt, [conditional_mint[i], position_conditional_ata[i]]*numOutcomes\n *\n * Data: [discriminator, num_deposit_mints (u8)]\n */\nexport function buildExtendPositionTokensIx(\n params: ExtendPositionTokensParams,\n numOutcomes: number,\n lookupTable: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): TransactionInstruction {\n if (params.depositMints.length === 0) {\n throw new Error(\"At least one deposit mint 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(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 // Remaining accounts: per deposit_mint group\n for (const depositMint of params.depositMints) {\n const [vault] = getVaultPda(depositMint, params.market, programId);\n const [gdt] = getGlobalDepositTokenPda(depositMint, programId);\n\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.EXTEND_POSITION_TOKENS]),\n toU8(params.depositMints.length),\n ]);\n\n return new TransactionInstruction({\n keys,\n programId,\n data,\n });\n}\n"]}
|
package/dist/program/orders.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Keypair } from "@solana/web3.js";
|
|
2
2
|
import { SignedOrder, Order, BidOrderParams, AskOrderParams } from "./types";
|
|
3
|
+
import { deriveConditionId } from "./utils";
|
|
3
4
|
/**
|
|
4
5
|
* Hash an order using keccak256
|
|
5
6
|
* Layout (161 bytes - order without signature):
|
|
6
7
|
* nonce (8) || maker (32) || market (32) || baseMint (32) || quoteMint (32) ||
|
|
7
|
-
* side (1) ||
|
|
8
|
+
* side (1) || amountIn (8) || amountOut (8) || expiration (8)
|
|
8
9
|
*
|
|
9
10
|
* @returns 32-byte keccak256 hash
|
|
10
11
|
*/
|
|
@@ -42,8 +43,8 @@ export declare function verifyOrderSignature(order: SignedOrder): boolean;
|
|
|
42
43
|
* [72..104] baseMint (Pubkey)
|
|
43
44
|
* [104..136] quoteMint (Pubkey)
|
|
44
45
|
* [136] side (u8)
|
|
45
|
-
* [137..145]
|
|
46
|
-
* [145..153]
|
|
46
|
+
* [137..145] amountIn (u64)
|
|
47
|
+
* [145..153] amountOut (u64)
|
|
47
48
|
* [153..161] expiration (i64)
|
|
48
49
|
* [161..225] signature (64 bytes)
|
|
49
50
|
*/
|
|
@@ -58,8 +59,8 @@ export declare function deserializeSignedOrder(data: Buffer): SignedOrder;
|
|
|
58
59
|
* Layout:
|
|
59
60
|
* [0..4] nonce (u32)
|
|
60
61
|
* [4] side (u8)
|
|
61
|
-
* [5..13]
|
|
62
|
-
* [13..21]
|
|
62
|
+
* [5..13] amountIn (u64)
|
|
63
|
+
* [13..21] amountOut (u64)
|
|
63
64
|
* [21..29] expiration (i64)
|
|
64
65
|
*/
|
|
65
66
|
export declare function serializeOrder(order: Order): Buffer;
|
|
@@ -117,11 +118,21 @@ export declare function deriveOrderbookId(baseToken: string, quoteToken: string)
|
|
|
117
118
|
* The message is the order hash hex string as UTF-8 bytes (same protocol as order signing).
|
|
118
119
|
*/
|
|
119
120
|
export declare function cancelOrderMessage(orderHash: string): Uint8Array;
|
|
121
|
+
/**
|
|
122
|
+
* Build the message bytes for cancelling a trigger order.
|
|
123
|
+
* The message is the trigger order ID as UTF-8 bytes.
|
|
124
|
+
*/
|
|
125
|
+
export declare function cancelTriggerOrderMessage(triggerOrderId: string): Uint8Array;
|
|
120
126
|
/**
|
|
121
127
|
* Sign a cancel order request.
|
|
122
128
|
* Returns the signature as a 128-char hex string.
|
|
123
129
|
*/
|
|
124
130
|
export declare function signCancelOrder(orderHash: string, signer: Keypair): string;
|
|
131
|
+
/**
|
|
132
|
+
* Sign a cancel trigger-order request.
|
|
133
|
+
* Returns the signature as a 128-char hex string.
|
|
134
|
+
*/
|
|
135
|
+
export declare function signCancelTriggerOrder(triggerOrderId: string, signer: Keypair): string;
|
|
125
136
|
/**
|
|
126
137
|
* Build the message string for cancelling all orders.
|
|
127
138
|
* Format: "cancel_all:{pubkey}:{timestamp}"
|
|
@@ -137,15 +148,22 @@ export declare function signCancelAll(userPubkey: string, timestamp: number, sig
|
|
|
137
148
|
*/
|
|
138
149
|
export declare function toSubmitRequest(order: SignedOrder, orderbookId: string): {
|
|
139
150
|
maker: string;
|
|
140
|
-
nonce:
|
|
151
|
+
nonce: number;
|
|
141
152
|
market_pubkey: string;
|
|
142
153
|
base_token: string;
|
|
143
154
|
quote_token: string;
|
|
144
155
|
side: number;
|
|
145
|
-
|
|
146
|
-
|
|
156
|
+
amount_in: string;
|
|
157
|
+
amount_out: string;
|
|
147
158
|
expiration: number;
|
|
148
159
|
signature: string;
|
|
149
160
|
orderbook_id: string;
|
|
150
161
|
};
|
|
162
|
+
export declare const is_order_expired: typeof isOrderExpired;
|
|
163
|
+
export declare const orders_can_cross: typeof ordersCanCross;
|
|
164
|
+
export declare const calculate_taker_fill: typeof calculateTakerFill;
|
|
165
|
+
export declare const cancel_order_message: typeof cancelOrderMessage;
|
|
166
|
+
export declare const cancel_trigger_order_message: typeof cancelTriggerOrderMessage;
|
|
167
|
+
export declare const cancel_all_message: typeof cancelAllMessage;
|
|
168
|
+
export declare const derive_condition_id: typeof deriveConditionId;
|
|
151
169
|
//# sourceMappingURL=orders.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../src/program/orders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EACL,WAAW,EACX,KAAK,EAEL,cAAc,EACd,cAAc,EACf,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../src/program/orders.ts"],"names":[],"mappings":"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"}
|
package/dist/program/orders.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.derive_condition_id = exports.cancel_all_message = exports.cancel_trigger_order_message = exports.cancel_order_message = exports.calculate_taker_fill = exports.orders_can_cross = exports.is_order_expired = void 0;
|
|
3
4
|
exports.hashOrder = hashOrder;
|
|
4
5
|
exports.hashOrderHex = hashOrderHex;
|
|
5
6
|
exports.getOrderMessage = getOrderMessage;
|
|
@@ -22,7 +23,9 @@ exports.signatureHex = signatureHex;
|
|
|
22
23
|
exports.isSigned = isSigned;
|
|
23
24
|
exports.deriveOrderbookId = deriveOrderbookId;
|
|
24
25
|
exports.cancelOrderMessage = cancelOrderMessage;
|
|
26
|
+
exports.cancelTriggerOrderMessage = cancelTriggerOrderMessage;
|
|
25
27
|
exports.signCancelOrder = signCancelOrder;
|
|
28
|
+
exports.signCancelTriggerOrder = signCancelTriggerOrder;
|
|
26
29
|
exports.cancelAllMessage = cancelAllMessage;
|
|
27
30
|
exports.signCancelAll = signCancelAll;
|
|
28
31
|
exports.toSubmitRequest = toSubmitRequest;
|
|
@@ -38,7 +41,7 @@ const utils_1 = require("./utils");
|
|
|
38
41
|
* Hash an order using keccak256
|
|
39
42
|
* Layout (161 bytes - order without signature):
|
|
40
43
|
* nonce (8) || maker (32) || market (32) || baseMint (32) || quoteMint (32) ||
|
|
41
|
-
* side (1) ||
|
|
44
|
+
* side (1) || amountIn (8) || amountOut (8) || expiration (8)
|
|
42
45
|
*
|
|
43
46
|
* @returns 32-byte keccak256 hash
|
|
44
47
|
*/
|
|
@@ -50,8 +53,8 @@ function hashOrder(order) {
|
|
|
50
53
|
order.baseMint.toBuffer(),
|
|
51
54
|
order.quoteMint.toBuffer(),
|
|
52
55
|
(0, utils_1.toU8)(order.side),
|
|
53
|
-
(0, utils_1.toU64Le)(order.
|
|
54
|
-
(0, utils_1.toU64Le)(order.
|
|
56
|
+
(0, utils_1.toU64Le)(order.amountIn),
|
|
57
|
+
(0, utils_1.toU64Le)(order.amountOut),
|
|
55
58
|
(0, utils_1.toI64Le)(order.expiration),
|
|
56
59
|
]);
|
|
57
60
|
return (0, utils_1.keccak256)(data);
|
|
@@ -120,8 +123,8 @@ function verifyOrderSignature(order) {
|
|
|
120
123
|
* [72..104] baseMint (Pubkey)
|
|
121
124
|
* [104..136] quoteMint (Pubkey)
|
|
122
125
|
* [136] side (u8)
|
|
123
|
-
* [137..145]
|
|
124
|
-
* [145..153]
|
|
126
|
+
* [137..145] amountIn (u64)
|
|
127
|
+
* [145..153] amountOut (u64)
|
|
125
128
|
* [153..161] expiration (i64)
|
|
126
129
|
* [161..225] signature (64 bytes)
|
|
127
130
|
*/
|
|
@@ -140,9 +143,9 @@ function serializeSignedOrder(order) {
|
|
|
140
143
|
offset += 32;
|
|
141
144
|
buffer[offset] = order.side;
|
|
142
145
|
offset += 1;
|
|
143
|
-
(0, utils_1.toU64Le)(order.
|
|
146
|
+
(0, utils_1.toU64Le)(order.amountIn).copy(buffer, offset);
|
|
144
147
|
offset += 8;
|
|
145
|
-
(0, utils_1.toU64Le)(order.
|
|
148
|
+
(0, utils_1.toU64Le)(order.amountOut).copy(buffer, offset);
|
|
146
149
|
offset += 8;
|
|
147
150
|
(0, utils_1.toI64Le)(order.expiration).copy(buffer, offset);
|
|
148
151
|
offset += 8;
|
|
@@ -173,9 +176,9 @@ function deserializeSignedOrder(data) {
|
|
|
173
176
|
offset += 32;
|
|
174
177
|
const side = data[offset];
|
|
175
178
|
offset += 1;
|
|
176
|
-
const
|
|
179
|
+
const amountIn = (0, utils_1.fromLeBytes)(data.subarray(offset, offset + 8));
|
|
177
180
|
offset += 8;
|
|
178
|
-
const
|
|
181
|
+
const amountOut = (0, utils_1.fromLeBytes)(data.subarray(offset, offset + 8));
|
|
179
182
|
offset += 8;
|
|
180
183
|
const expiration = (0, utils_1.fromI64Le)(data.subarray(offset, offset + 8));
|
|
181
184
|
offset += 8;
|
|
@@ -187,8 +190,8 @@ function deserializeSignedOrder(data) {
|
|
|
187
190
|
baseMint,
|
|
188
191
|
quoteMint,
|
|
189
192
|
side,
|
|
190
|
-
|
|
191
|
-
|
|
193
|
+
amountIn,
|
|
194
|
+
amountOut,
|
|
192
195
|
expiration,
|
|
193
196
|
signature,
|
|
194
197
|
};
|
|
@@ -202,8 +205,8 @@ function deserializeSignedOrder(data) {
|
|
|
202
205
|
* Layout:
|
|
203
206
|
* [0..4] nonce (u32)
|
|
204
207
|
* [4] side (u8)
|
|
205
|
-
* [5..13]
|
|
206
|
-
* [13..21]
|
|
208
|
+
* [5..13] amountIn (u64)
|
|
209
|
+
* [13..21] amountOut (u64)
|
|
207
210
|
* [21..29] expiration (i64)
|
|
208
211
|
*/
|
|
209
212
|
function serializeOrder(order) {
|
|
@@ -213,9 +216,9 @@ function serializeOrder(order) {
|
|
|
213
216
|
offset += 4;
|
|
214
217
|
buffer[offset] = order.side;
|
|
215
218
|
offset += 1;
|
|
216
|
-
(0, utils_1.toU64Le)(order.
|
|
219
|
+
(0, utils_1.toU64Le)(order.amountIn).copy(buffer, offset);
|
|
217
220
|
offset += 8;
|
|
218
|
-
(0, utils_1.toU64Le)(order.
|
|
221
|
+
(0, utils_1.toU64Le)(order.amountOut).copy(buffer, offset);
|
|
219
222
|
offset += 8;
|
|
220
223
|
(0, utils_1.toI64Le)(order.expiration).copy(buffer, offset);
|
|
221
224
|
return buffer;
|
|
@@ -232,16 +235,16 @@ function deserializeOrder(data) {
|
|
|
232
235
|
offset += 4;
|
|
233
236
|
const side = data[offset];
|
|
234
237
|
offset += 1;
|
|
235
|
-
const
|
|
238
|
+
const amountIn = (0, utils_1.fromLeBytes)(data.subarray(offset, offset + 8));
|
|
236
239
|
offset += 8;
|
|
237
|
-
const
|
|
240
|
+
const amountOut = (0, utils_1.fromLeBytes)(data.subarray(offset, offset + 8));
|
|
238
241
|
offset += 8;
|
|
239
242
|
const expiration = (0, utils_1.fromI64Le)(data.subarray(offset, offset + 8));
|
|
240
243
|
return {
|
|
241
244
|
nonce,
|
|
242
245
|
side,
|
|
243
|
-
|
|
244
|
-
|
|
246
|
+
amountIn,
|
|
247
|
+
amountOut,
|
|
245
248
|
expiration,
|
|
246
249
|
};
|
|
247
250
|
}
|
|
@@ -252,8 +255,8 @@ function signedOrderToOrder(order) {
|
|
|
252
255
|
return {
|
|
253
256
|
nonce: order.nonce,
|
|
254
257
|
side: order.side,
|
|
255
|
-
|
|
256
|
-
|
|
258
|
+
amountIn: order.amountIn,
|
|
259
|
+
amountOut: order.amountOut,
|
|
257
260
|
expiration: order.expiration,
|
|
258
261
|
};
|
|
259
262
|
}
|
|
@@ -271,8 +274,8 @@ function createBidOrder(params) {
|
|
|
271
274
|
baseMint: params.baseMint,
|
|
272
275
|
quoteMint: params.quoteMint,
|
|
273
276
|
side: types_1.OrderSide.BID,
|
|
274
|
-
|
|
275
|
-
|
|
277
|
+
amountIn: params.amountIn,
|
|
278
|
+
amountOut: params.amountOut,
|
|
276
279
|
expiration: params.expiration ?? 0n,
|
|
277
280
|
};
|
|
278
281
|
}
|
|
@@ -287,8 +290,8 @@ function createAskOrder(params) {
|
|
|
287
290
|
baseMint: params.baseMint,
|
|
288
291
|
quoteMint: params.quoteMint,
|
|
289
292
|
side: types_1.OrderSide.ASK,
|
|
290
|
-
|
|
291
|
-
|
|
293
|
+
amountIn: params.amountIn,
|
|
294
|
+
amountOut: params.amountOut,
|
|
292
295
|
expiration: params.expiration ?? 0n,
|
|
293
296
|
};
|
|
294
297
|
}
|
|
@@ -326,14 +329,14 @@ function ordersCanCross(buyOrder, sellOrder) {
|
|
|
326
329
|
if (buyOrder.side !== types_1.OrderSide.BID || sellOrder.side !== types_1.OrderSide.ASK) {
|
|
327
330
|
return false;
|
|
328
331
|
}
|
|
329
|
-
return (buyOrder.
|
|
330
|
-
buyOrder.
|
|
332
|
+
return (buyOrder.amountIn * sellOrder.amountIn >=
|
|
333
|
+
buyOrder.amountOut * sellOrder.amountOut);
|
|
331
334
|
}
|
|
332
335
|
/**
|
|
333
336
|
* Calculate the fill amounts for a trade
|
|
334
337
|
*/
|
|
335
338
|
function calculateTakerFill(makerOrder, makerFillAmount) {
|
|
336
|
-
return (makerFillAmount * makerOrder.
|
|
339
|
+
return (makerFillAmount * makerOrder.amountOut) / makerOrder.amountIn;
|
|
337
340
|
}
|
|
338
341
|
// ============================================================================
|
|
339
342
|
// SIGNED ORDER HELPERS
|
|
@@ -367,6 +370,13 @@ function deriveOrderbookId(baseToken, quoteToken) {
|
|
|
367
370
|
function cancelOrderMessage(orderHash) {
|
|
368
371
|
return Buffer.from(orderHash, "ascii");
|
|
369
372
|
}
|
|
373
|
+
/**
|
|
374
|
+
* Build the message bytes for cancelling a trigger order.
|
|
375
|
+
* The message is the trigger order ID as UTF-8 bytes.
|
|
376
|
+
*/
|
|
377
|
+
function cancelTriggerOrderMessage(triggerOrderId) {
|
|
378
|
+
return Buffer.from(triggerOrderId, "ascii");
|
|
379
|
+
}
|
|
370
380
|
/**
|
|
371
381
|
* Sign a cancel order request.
|
|
372
382
|
* Returns the signature as a 128-char hex string.
|
|
@@ -376,6 +386,15 @@ function signCancelOrder(orderHash, signer) {
|
|
|
376
386
|
const signature = tweetnacl_1.sign.detached(message, signer.secretKey);
|
|
377
387
|
return Buffer.from(signature).toString("hex");
|
|
378
388
|
}
|
|
389
|
+
/**
|
|
390
|
+
* Sign a cancel trigger-order request.
|
|
391
|
+
* Returns the signature as a 128-char hex string.
|
|
392
|
+
*/
|
|
393
|
+
function signCancelTriggerOrder(triggerOrderId, signer) {
|
|
394
|
+
const message = cancelTriggerOrderMessage(triggerOrderId);
|
|
395
|
+
const signature = tweetnacl_1.sign.detached(message, signer.secretKey);
|
|
396
|
+
return Buffer.from(signature).toString("hex");
|
|
397
|
+
}
|
|
379
398
|
/**
|
|
380
399
|
* Build the message string for cancelling all orders.
|
|
381
400
|
* Format: "cancel_all:{pubkey}:{timestamp}"
|
|
@@ -402,16 +421,24 @@ function signCancelAll(userPubkey, timestamp, signer) {
|
|
|
402
421
|
function toSubmitRequest(order, orderbookId) {
|
|
403
422
|
return {
|
|
404
423
|
maker: order.maker.toBase58(),
|
|
405
|
-
nonce: order.nonce
|
|
424
|
+
nonce: order.nonce,
|
|
406
425
|
market_pubkey: order.market.toBase58(),
|
|
407
426
|
base_token: order.baseMint.toBase58(),
|
|
408
427
|
quote_token: order.quoteMint.toBase58(),
|
|
409
428
|
side: order.side,
|
|
410
|
-
|
|
411
|
-
|
|
429
|
+
amount_in: order.amountIn.toString(),
|
|
430
|
+
amount_out: order.amountOut.toString(),
|
|
412
431
|
expiration: Number(order.expiration),
|
|
413
432
|
signature: signatureHex(order),
|
|
414
433
|
orderbook_id: orderbookId,
|
|
415
434
|
};
|
|
416
435
|
}
|
|
436
|
+
// Rust-compatible snake_case aliases.
|
|
437
|
+
exports.is_order_expired = isOrderExpired;
|
|
438
|
+
exports.orders_can_cross = ordersCanCross;
|
|
439
|
+
exports.calculate_taker_fill = calculateTakerFill;
|
|
440
|
+
exports.cancel_order_message = cancelOrderMessage;
|
|
441
|
+
exports.cancel_trigger_order_message = cancelTriggerOrderMessage;
|
|
442
|
+
exports.cancel_all_message = cancelAllMessage;
|
|
443
|
+
exports.derive_condition_id = utils_1.deriveConditionId;
|
|
417
444
|
//# sourceMappingURL=orders.js.map
|