@theliem/xmarket-sdk 3.11.0 → 3.13.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/dist/index.d.mts +31 -12
- package/dist/index.d.ts +31 -12
- package/dist/index.js +301 -38
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +302 -39
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/pda.ts","../src/programs/oracle.ts","../src/programs/hook.ts","../src/types.ts","../src/programs/market.ts","../src/programs/ctf.ts","../src/signing.ts","../src/order.ts","../src/programs/clob.ts","../src/programs/fee_management.ts","../src/programs/presale.ts","../src/programs/market_oracle.ts","../src/programs/admin.ts","../src/idls/oracle.json","../src/idls/hook.json","../src/idls/question_market.json","../src/idls/conditional_tokens.json","../src/idls/clob_exchange.json","../src/idls/fee_management.json","../src/idls/presale.json","../src/idls/market_oracle.json","../src/idls/admin_contract.json","../src/sdk.ts","../src/approve.ts"],"names":["anchor","SystemProgram","QuestionStatus","PublicKey","anchor2","TOKEN_2022_PROGRAM_ID","SYSVAR_RENT_PUBKEY","TOKEN_PROGRAM_ID","getAssociatedTokenAddressSync","ASSOCIATED_TOKEN_PROGRAM_ID","Transaction","anchor3","TransactionInstruction","BN","aBuy","bBuy","Ed25519Program","SYSVAR_INSTRUCTIONS_PUBKEY","createAssociatedTokenAccountIdempotentInstruction","ComputeBudgetProgram","anchor4","nacl","ixs"],"mappings":"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","file":"index.mjs","sourcesContent":["import { PublicKey } from \"@solana/web3.js\";\nimport BN from \"bn.js\";\nimport { createHash } from \"crypto\";\nimport { ProgramIds } from \"./config/networks\";\n\n// ─── PDA Seeds ────────────────────────────────────────────────────────────────\n// These are constants — they don't change per network.\n\nexport const SEEDS = {\n config: Buffer.from(\"config\"),\n question: Buffer.from(\"question\"),\n condition: Buffer.from(\"condition\"),\n collateralVault: Buffer.from(\"collateral_vault\"),\n vaultToken: Buffer.from(\"vault_token\"),\n position: Buffer.from(\"position\"),\n yesMint: Buffer.from(\"yes_mint\"),\n noMint: Buffer.from(\"no_mint\"),\n mintAuthority: Buffer.from(\"mint_authority\"),\n reporter: Buffer.from(\"reporter\"),\n result: Buffer.from(\"result\"),\n ctfConfig: Buffer.from(\"ctf_config\"),\n hookConfig: Buffer.from(\"hook_config\"),\n extraAccountMetas: Buffer.from(\"extra-account-metas\"),\n clobConfig: Buffer.from(\"clob_config\"),\n order: Buffer.from(\"order\"),\n feeConfig: Buffer.from(\"fee_config\"),\n questionFee: Buffer.from(\"question_fee\"),\n marketFee: Buffer.from(\"market_fee\"),\n // Presale\n presale: Buffer.from(\"presale\"),\n qtMint: Buffer.from(\"qt_mint\"),\n qtAuthority: Buffer.from(\"qt_authority\"),\n userBuy: Buffer.from(\"user_buy\"),\n // Market Oracle\n marketOracle: Buffer.from(\"market_oracle\"),\n userClaim: Buffer.from(\"user_claim\"),\n // Admin Contract\n adminConfig: Buffer.from(\"admin_config\"),\n claimRecord: Buffer.from(\"claim_record\"),\n} as const;\n\n// ─── PDA derivation helpers ───────────────────────────────────────────────────\n// All methods require explicit programIds — no hidden globals.\n\nexport class PDA {\n // ─── Question Market ────────────────────────────────────────────────────────\n\n static questionMarketConfig(\n owner: PublicKey,\n programIds: Pick<ProgramIds, \"questionMarket\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.config, owner.toBuffer()],\n programIds.questionMarket\n );\n }\n\n static question(\n config: PublicKey,\n questionId: Uint8Array,\n programIds: Pick<ProgramIds, \"questionMarket\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.question, config.toBuffer(), Buffer.from(questionId)],\n programIds.questionMarket\n );\n }\n\n // ─── Conditional Tokens ─────────────────────────────────────────────────────\n\n static ctfConfig(\n programIds: Pick<ProgramIds, \"conditionalTokens\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.ctfConfig],\n programIds.conditionalTokens\n );\n }\n\n static condition(\n oracle: PublicKey,\n questionId: Uint8Array,\n programIds: Pick<ProgramIds, \"conditionalTokens\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.condition, oracle.toBuffer(), Buffer.from(questionId)],\n programIds.conditionalTokens\n );\n }\n\n static collateralVault(\n collateralMint: PublicKey,\n programIds: Pick<ProgramIds, \"conditionalTokens\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.collateralVault, collateralMint.toBuffer()],\n programIds.conditionalTokens\n );\n }\n\n static vaultToken(\n collateralMint: PublicKey,\n programIds: Pick<ProgramIds, \"conditionalTokens\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.vaultToken, collateralMint.toBuffer()],\n programIds.conditionalTokens\n );\n }\n\n static yesMint(\n condition: PublicKey,\n programIds: Pick<ProgramIds, \"conditionalTokens\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.yesMint, condition.toBuffer()],\n programIds.conditionalTokens\n );\n }\n\n static noMint(\n condition: PublicKey,\n programIds: Pick<ProgramIds, \"conditionalTokens\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.noMint, condition.toBuffer()],\n programIds.conditionalTokens\n );\n }\n\n static mintAuthority(\n condition: PublicKey,\n programIds: Pick<ProgramIds, \"conditionalTokens\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.mintAuthority, condition.toBuffer()],\n programIds.conditionalTokens\n );\n }\n\n static position(\n condition: PublicKey,\n outcomeIndex: number,\n owner: PublicKey,\n programIds: Pick<ProgramIds, \"conditionalTokens\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.position, condition.toBuffer(), Buffer.from([outcomeIndex]), owner.toBuffer()],\n programIds.conditionalTokens\n );\n }\n\n // ─── Oracle ─────────────────────────────────────────────────────────────────\n\n static oracleConfig(\n owner: PublicKey,\n programIds: Pick<ProgramIds, \"oracle\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.config, owner.toBuffer()],\n programIds.oracle\n );\n }\n\n static reporter(\n oracleConfig: PublicKey,\n reporterAddress: PublicKey,\n programIds: Pick<ProgramIds, \"oracle\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.reporter, oracleConfig.toBuffer(), reporterAddress.toBuffer()],\n programIds.oracle\n );\n }\n\n static questionResult(\n oracleConfig: PublicKey,\n questionId: Uint8Array,\n programIds: Pick<ProgramIds, \"oracle\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.result, oracleConfig.toBuffer(), Buffer.from(questionId)],\n programIds.oracle\n );\n }\n\n // ─── Hook ───────────────────────────────────────────────────────────────────\n\n static hookConfig(\n programIds: Pick<ProgramIds, \"hook\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.hookConfig],\n programIds.hook\n );\n }\n\n static extraAccountMetaList(\n mint: PublicKey,\n programIds: Pick<ProgramIds, \"hook\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.extraAccountMetas, mint.toBuffer()],\n programIds.hook\n );\n }\n\n // ─── CLOB ───────────────────────────────────────────────────────────────────\n\n static clobConfig(\n programIds: Pick<ProgramIds, \"clobExchange\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.clobConfig],\n programIds.clobExchange\n );\n }\n\n static orderStatus(\n maker: PublicKey,\n nonce: BN,\n programIds: Pick<ProgramIds, \"clobExchange\">\n ): [PublicKey, number] {\n const nonceBuf = Buffer.alloc(8);\n nonceBuf.writeBigUInt64LE(BigInt(nonce.toString()));\n return PublicKey.findProgramAddressSync(\n [SEEDS.order, maker.toBuffer(), nonceBuf],\n programIds.clobExchange\n );\n }\n\n static orderRecord(\n maker: PublicKey,\n nonce: BN,\n programIds: Pick<ProgramIds, \"clobExchange\">\n ): [PublicKey, number] {\n const nonceBuf = Buffer.alloc(8);\n nonceBuf.writeBigUInt64LE(BigInt(nonce.toString()));\n return PublicKey.findProgramAddressSync(\n [Buffer.from(\"order_record\"), maker.toBuffer(), nonceBuf],\n programIds.clobExchange\n );\n }\n\n // ─── Fee Management ─────────────────────────────────────────────────────────\n\n static feeConfig(\n owner: PublicKey,\n programIds: Pick<ProgramIds, \"feeManagement\">\n ): [PublicKey, number] {\n if (!programIds.feeManagement) throw new Error(\"feeManagement program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.feeConfig, owner.toBuffer()],\n programIds.feeManagement\n );\n }\n\n static questionFee(\n conditionPda: PublicKey,\n programIds: Pick<ProgramIds, \"feeManagement\">\n ): [PublicKey, number] {\n if (!programIds.feeManagement) throw new Error(\"feeManagement program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.questionFee, conditionPda.toBuffer()],\n programIds.feeManagement\n );\n }\n\n static marketFeeOverride(\n conditionPda: PublicKey,\n programIds: Pick<ProgramIds, \"feeManagement\">\n ): [PublicKey, number] {\n if (!programIds.feeManagement) throw new Error(\"feeManagement program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.marketFee, conditionPda.toBuffer()],\n programIds.feeManagement\n );\n }\n\n // ─── Presale ─────────────────────────────────────────────────────────────────\n\n static presale(\n questionMarketConfig: PublicKey,\n presaleIndex: BN,\n programIds: Pick<ProgramIds, \"presale\">\n ): [PublicKey, number] {\n if (!programIds.presale) throw new Error(\"presale program ID not configured\");\n const idxBuf = Buffer.alloc(8);\n idxBuf.writeBigUInt64LE(BigInt(presaleIndex.toString()));\n return PublicKey.findProgramAddressSync(\n [SEEDS.presale, questionMarketConfig.toBuffer(), idxBuf],\n programIds.presale\n );\n }\n\n static qtMint(\n presalePda: PublicKey,\n programIds: Pick<ProgramIds, \"presale\">\n ): [PublicKey, number] {\n if (!programIds.presale) throw new Error(\"presale program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.qtMint, presalePda.toBuffer()],\n programIds.presale\n );\n }\n\n static qtAuthority(\n presalePda: PublicKey,\n programIds: Pick<ProgramIds, \"presale\">\n ): [PublicKey, number] {\n if (!programIds.presale) throw new Error(\"presale program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.qtAuthority, presalePda.toBuffer()],\n programIds.presale\n );\n }\n\n static userBuyRecord(\n presalePda: PublicKey,\n user: PublicKey,\n programIds: Pick<ProgramIds, \"presale\">\n ): [PublicKey, number] {\n if (!programIds.presale) throw new Error(\"presale program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.userBuy, presalePda.toBuffer(), user.toBuffer()],\n programIds.presale\n );\n }\n\n // ─── Market Oracle ────────────────────────────────────────────────────────────\n\n static marketOraclePda(\n questionPda: PublicKey,\n programIds: Pick<ProgramIds, \"marketOracle\">\n ): [PublicKey, number] {\n if (!programIds.marketOracle) throw new Error(\"marketOracle program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.marketOracle, questionPda.toBuffer()],\n programIds.marketOracle\n );\n }\n\n static userClaimRecord(\n marketOraclePda: PublicKey,\n user: PublicKey,\n programIds: Pick<ProgramIds, \"marketOracle\">\n ): [PublicKey, number] {\n if (!programIds.marketOracle) throw new Error(\"marketOracle program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.userClaim, marketOraclePda.toBuffer(), user.toBuffer()],\n programIds.marketOracle\n );\n }\n\n // ─── Admin Contract ──────────────────────────────────────────────────────\n\n static adminConfig(\n owner: PublicKey,\n programIds: Pick<ProgramIds, \"adminContract\">\n ): [PublicKey, number] {\n if (!programIds.adminContract) throw new Error(\"adminContract program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.adminConfig, owner.toBuffer()],\n programIds.adminContract\n );\n }\n\n static claimRecord(\n conditionId: Uint8Array,\n programIds: Pick<ProgramIds, \"adminContract\">\n ): [PublicKey, number] {\n if (!programIds.adminContract) throw new Error(\"adminContract program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.claimRecord, conditionId],\n programIds.adminContract\n );\n }\n}\n\n// ─── Utilities ────────────────────────────────────────────────────────────────\n\n/** Unique 32-byte question ID: SHA-256(content + timestamp). Different each call. */\nexport function generateQuestionId(content: string, salt?: number): Uint8Array {\n const input = content + (salt ?? Date.now());\n return new Uint8Array(createHash(\"sha256\").update(input).digest());\n}\n\n/** Deterministic 32-byte content hash: SHA-256(content). Same content = same hash. */\nexport function generateContentHash(content: string): Uint8Array {\n return new Uint8Array(createHash(\"sha256\").update(content).digest());\n}\n","import * as anchor from \"@coral-xyz/anchor\";\nimport { PublicKey, SystemProgram, Transaction } from \"@solana/web3.js\";\nimport { PDA } from \"../pda\";\nimport { ProgramIds } from \"../config/networks\";\nimport { OracleConfig, QuestionResult, TxResult } from \"../types\";\n\nexport class OracleClient {\n private readonly program: anchor.Program;\n private readonly provider: anchor.AnchorProvider;\n private readonly programIds: ProgramIds;\n\n constructor(\n program: anchor.Program,\n provider: anchor.AnchorProvider,\n programIds: ProgramIds\n ) {\n this.program = program;\n this.provider = provider;\n this.programIds = programIds;\n }\n\n get walletPubkey(): PublicKey {\n return this.provider.wallet.publicKey;\n }\n\n configPda(owner: PublicKey = this.walletPubkey): PublicKey {\n return PDA.oracleConfig(owner, this.programIds)[0];\n }\n\n // ─── Instructions ────────────────────────────────────────────────────────────\n\n /** One-time setup. Caller becomes owner. */\n async initialize(admin: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .initialize(admin)\n .accounts({\n owner: this.walletPubkey,\n oracleConfig: this.configPda(),\n systemProgram: SystemProgram.programId,\n })\n .rpc();\n return { signature: sig };\n }\n\n /** Admin or owner adds an address to the oracle resolver whitelist. */\n async addToWhitelist(address: PublicKey, ownerPubkey?: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .addToWhitelist(address)\n .accounts({\n authority: this.walletPubkey,\n payer: this.walletPubkey,\n oracleConfig: this.configPda(ownerPubkey),\n })\n .rpc();\n return { signature: sig };\n }\n\n /** Admin or owner removes an address from the oracle resolver whitelist. */\n async removeFromWhitelist(address: PublicKey, ownerPubkey?: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .removeFromWhitelist(address)\n .accounts({\n authority: this.walletPubkey,\n payer: this.walletPubkey,\n oracleConfig: this.configPda(ownerPubkey),\n })\n .rpc();\n return { signature: sig };\n }\n\n /**\n * Whitelisted reporter resolves a question.\n * reporter signs the instruction; payer covers the tx fee (Kora pattern).\n */\n async resolveQuestion(\n questionId: Uint8Array,\n outcomeCount: number,\n payoutNumerators: number[],\n conditionPda: PublicKey,\n reporter: PublicKey = this.walletPubkey,\n payer: PublicKey = this.walletPubkey,\n ownerPubkey?: PublicKey,\n ): Promise<Transaction> {\n const oracleConfig = this.configPda(ownerPubkey);\n const [questionResultPda] = PDA.questionResult(oracleConfig, questionId, this.programIds);\n return this.program.methods\n .resolveQuestion(\n Array.from(questionId) as number[],\n outcomeCount,\n payoutNumerators.map((n) => new anchor.BN(n))\n )\n .accounts({\n reporter,\n oracleConfig,\n questionResult: questionResultPda,\n condition: conditionPda,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n payer,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n /** Owner updates the admin. */\n async updateAdmin(newAdmin: PublicKey, ownerPubkey?: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .updateAdmin(newAdmin)\n .accounts({\n owner: this.walletPubkey,\n payer: this.walletPubkey,\n oracleConfig: this.configPda(ownerPubkey),\n })\n .rpc();\n return { signature: sig };\n }\n\n /** Owner transfers ownership to a new keypair. */\n async transferOwnership(newOwner: PublicKey, ownerPubkey?: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .transferOwnership(newOwner)\n .accounts({\n owner: this.walletPubkey,\n oracleConfig: this.configPda(ownerPubkey),\n })\n .rpc();\n return { signature: sig };\n }\n\n /** Admin or owner pause/unpause the oracle. */\n async pause(paused: boolean, ownerPubkey?: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .pause(paused)\n .accounts({\n authority: this.walletPubkey,\n oracleConfig: this.configPda(ownerPubkey),\n })\n .rpc();\n return { signature: sig };\n }\n\n // ─── Queries ─────────────────────────────────────────────────────────────────\n\n async fetchConfig(owner?: PublicKey): Promise<OracleConfig | null> {\n try {\n const acc = await (this.program.account as any).oracleConfig.fetch(\n this.configPda(owner ?? this.walletPubkey)\n );\n return {\n owner: acc.owner,\n admin: acc.admin,\n questionCount: acc.questionCount.toNumber(),\n whitelist: acc.whitelist as PublicKey[],\n whitelistLen: acc.whitelistLen,\n isPaused: acc.isPaused,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchQuestionResult(\n questionId: Uint8Array,\n ownerPubkey?: PublicKey\n ): Promise<QuestionResult | null> {\n try {\n const oracleConfig = this.configPda(ownerPubkey);\n const [pda] = PDA.questionResult(oracleConfig, questionId, this.programIds);\n const acc = await (this.program.account as any).questionResult.fetch(pda);\n return {\n oracleConfig: acc.oracleConfig,\n questionId: new Uint8Array(acc.questionId),\n outcomeIndex: acc.outcomeIndex,\n outcomeCount: acc.outcomeCount,\n payoutNumerators: acc.payoutNumerators,\n isResolved: acc.isResolved,\n resolvedAt: acc.resolvedAt.toNumber(),\n reporter: acc.reporter,\n condition: acc.condition ?? null,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n}\n","import * as anchor from \"@coral-xyz/anchor\";\nimport { PublicKey, SystemProgram } from \"@solana/web3.js\";\nimport { TOKEN_2022_PROGRAM_ID } from \"@solana/spl-token\";\nimport { PDA } from \"../pda\";\nimport { ProgramIds } from \"../config/networks\";\nimport { HookConfig, TxResult } from \"../types\";\n\nexport class HookClient {\n private readonly program: anchor.Program;\n private readonly provider: anchor.AnchorProvider;\n private readonly programIds: ProgramIds;\n\n constructor(\n program: anchor.Program,\n provider: anchor.AnchorProvider,\n programIds: ProgramIds\n ) {\n this.program = program;\n this.provider = provider;\n this.programIds = programIds;\n }\n\n get walletPubkey(): PublicKey {\n return this.provider.wallet.publicKey;\n }\n\n configPda(): PublicKey {\n return PDA.hookConfig(this.programIds)[0];\n }\n\n // ─── Instructions ────────────────────────────────────────────────────────────\n\n /** One-time setup. Caller becomes owner. */\n async initialize(initialWhitelist: PublicKey[]): Promise<TxResult> {\n const sig = await this.program.methods\n .initializeHookConfig(initialWhitelist)\n .accounts({\n owner: this.walletPubkey,\n hookConfig: this.configPda(),\n systemProgram: SystemProgram.programId,\n })\n .rpc();\n return { signature: sig };\n }\n\n /**\n * Register extra account metas for a Token-2022 YES/NO mint.\n * Must be called once per mint after CTF creates it.\n */\n async initializeExtraAccountMetaList(mint: PublicKey): Promise<TxResult> {\n const [extraAccountMetaList] = PDA.extraAccountMetaList(mint, this.programIds);\n const sig = await this.program.methods\n .initializeExtraAccountMetaList()\n .accounts({\n payer: this.walletPubkey,\n extraAccountMetaList,\n mint,\n hookConfig: this.configPda(),\n tokenProgram: TOKEN_2022_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .rpc();\n return { signature: sig };\n }\n\n /** Owner adds a program to the transfer whitelist. */\n async addToWhitelist(program: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .addToWhitelist(program)\n .accounts({\n owner: this.walletPubkey,\n hookConfig: this.configPda(),\n })\n .rpc();\n return { signature: sig };\n }\n\n /** Owner removes a program from the transfer whitelist. */\n async removeFromWhitelist(program: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .removeFromWhitelist(program)\n .accounts({\n owner: this.walletPubkey,\n hookConfig: this.configPda(),\n })\n .rpc();\n return { signature: sig };\n }\n\n /** Permanently freeze the whitelist — no further changes allowed. */\n async freezeWhitelist(): Promise<TxResult> {\n const sig = await this.program.methods\n .freezeWhitelist()\n .accounts({\n owner: this.walletPubkey,\n hookConfig: this.configPda(),\n })\n .rpc();\n return { signature: sig };\n }\n\n /**\n * SPL Transfer-Hook `execute` — invoked automatically by Token-2022 on every\n * YES/NO token transfer. Validates the destination against the whitelist.\n *\n * Calling this directly is useful for:\n * - Off-chain simulation (\"would this transfer be allowed?\")\n * - Integration tests that verify whitelist enforcement\n *\n * Token-2022 calls this automatically; you normally don't call it manually.\n *\n * @param sourceToken - Source token account (tokens leaving)\n * @param mint - The YES/NO Token-2022 mint\n * @param destinationToken - Destination token account (tokens arriving)\n * @param owner - Authority that authorized the transfer\n * @param amount - Token amount being transferred\n */\n async execute(\n sourceToken: PublicKey,\n mint: PublicKey,\n destinationToken: PublicKey,\n owner: PublicKey,\n amount: anchor.BN\n ): Promise<TxResult> {\n const [extraAccountMetaList] = PDA.extraAccountMetaList(mint, this.programIds);\n const sig = await this.program.methods\n .execute(amount)\n .accounts({\n sourceToken,\n mint,\n destinationToken,\n owner,\n extraAccountMetaList,\n hookConfig: this.configPda(),\n })\n .rpc();\n return { signature: sig };\n }\n\n // ─── Queries ─────────────────────────────────────────────────────────────────\n\n async fetchConfig(): Promise<HookConfig | null> {\n try {\n const acc = await (this.program.account as any).hookConfig.fetch(this.configPda());\n return {\n owner: acc.owner,\n whitelist: acc.whitelist as PublicKey[],\n whitelistLen: acc.whitelistLen,\n isFrozen: acc.isFrozen,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async isWhitelisted(program: PublicKey): Promise<boolean> {\n const config = await this.fetchConfig();\n if (!config) return false;\n return config.whitelist.some((p) => p.equals(program));\n }\n}\n","import { PublicKey } from \"@solana/web3.js\";\nimport BN from \"bn.js\";\n\n// ─── Shared ───────────────────────────────────────────────────────────────────\n\nexport interface TxResult {\n signature: string;\n}\n\n// ─── Oracle ───────────────────────────────────────────────────────────────────\n\nexport interface OracleConfig {\n owner: PublicKey;\n admin: PublicKey;\n questionCount: number;\n whitelist: PublicKey[];\n whitelistLen: number;\n isPaused: boolean;\n bump: number;\n}\n\nexport interface QuestionResult {\n oracleConfig: PublicKey;\n questionId: Uint8Array;\n outcomeIndex: number;\n outcomeCount: number;\n payoutNumerators: BN[];\n isResolved: boolean;\n resolvedAt: number;\n reporter: PublicKey;\n condition: PublicKey | null;\n bump: number;\n}\n\n// ─── Conditional Tokens ───────────────────────────────────────────────────────\n\nexport interface Condition {\n oracle: PublicKey;\n questionId: Uint8Array;\n outcomeSlotCount: number;\n payoutNumerators: BN[];\n payoutDenominator: BN;\n totalCollateral: BN;\n collateralMint: PublicKey;\n collateralVault: PublicKey;\n yesMint: PublicKey;\n noMint: PublicKey;\n hookProgram: PublicKey;\n authorizedClob: PublicKey;\n isResolved: boolean;\n resolvedAt: number;\n bump: number;\n}\n\nexport interface CollateralVault {\n collateralMint: PublicKey;\n vaultTokenAccount: PublicKey;\n totalLocked: BN;\n conditionCount: BN;\n bump: number;\n vaultBump: number;\n}\n\nexport interface Position {\n owner: PublicKey;\n condition: PublicKey;\n outcomeIndex: number;\n balance: BN;\n bump: number;\n}\n\n// ─── Question Market ──────────────────────────────────────────────────────────\n\nexport enum QuestionStatus {\n Pending = \"pending\",\n Approved = \"approved\",\n Rejected = \"rejected\",\n Resolved = \"resolved\",\n}\n\nexport interface QuestionMarketConfig {\n owner: PublicKey;\n admin: PublicKey;\n oracle: PublicKey;\n conditionalTokensProgram: PublicKey;\n questionCount: number;\n approvedCount: number;\n rejectedCount: number;\n presaleCount: number;\n whitelist: PublicKey[];\n whitelistLen: number;\n isPaused: boolean;\n bump: number;\n}\n\nexport interface Question {\n config: PublicKey;\n questionId: Uint8Array;\n contentHash: Uint8Array;\n expirationTime: number;\n currencyMint: PublicKey;\n creator: PublicKey;\n condition: PublicKey | null;\n status: QuestionStatus;\n createdAt: number;\n approvedAt: number;\n resolvedAt: number;\n bump: number;\n}\n\nexport interface CreateQuestionParams {\n /** Human-readable question text — used to derive questionId + contentHash */\n content: string;\n /** Expiration as Unix timestamp */\n expirationTime: number;\n /** Collateral mint (e.g. USDC) */\n collateralMint: PublicKey;\n /** Hook program ID for Token-2022 transfer enforcement */\n hookProgram: PublicKey;\n /** Authorized CLOB program ID */\n authorizedClob: PublicKey;\n /** Override auto-generated questionId */\n questionId?: Uint8Array;\n /** Override auto-generated contentHash */\n contentHash?: Uint8Array;\n}\n\n// ─── Conditional Tokens (CtfConfig) ──────────────────────────────────────────\n\nexport interface CtfConfig {\n owner: PublicKey;\n bump: number;\n}\n\n// ─── Hook ─────────────────────────────────────────────────────────────────────\n\nexport interface HookConfig {\n owner: PublicKey;\n whitelist: PublicKey[];\n whitelistLen: number;\n isFrozen: boolean;\n bump: number;\n}\n\n// ─── CLOB Exchange ────────────────────────────────────────────────────────────\n\nexport interface ClobConfig {\n owner: PublicKey;\n operators: PublicKey[];\n operatorsLen: number;\n feeRecipient: PublicKey;\n feeRateBps: number;\n conditionalTokensProgram: PublicKey;\n isPaused: boolean;\n bump: number;\n}\n\nexport interface OrderStatus {\n maker: PublicKey;\n nonce: BN;\n filledAmount: BN;\n bump: number;\n}\n\n// ─── Fee Management ───────────────────────────────────────────────────────────\n\n/** Per-question fee rates, all out of FEE_DENOMINATOR (1_000_000). E.g. 2_000 = 0.2% */\nexport interface QuestionFee {\n conditionId: Uint8Array;\n mergeFee: BN;\n redeemFee: BN;\n swapFee: BN;\n bump: number;\n}\n\nexport const FEE_DENOMINATOR = 1_000_000;\n\n/**\n * Off-chain order struct passed as instruction data.\n * Operator validates + submits matched order pairs on-chain.\n *\n * Semantics (mirrors EVM makerAmount/takerAmount):\n * BUY (side=0): makerAmount = USDC paid, takerAmount = CTF tokens received\n * SELL (side=1): makerAmount = CTF tokens given, takerAmount = USDC received\n */\nexport interface Order {\n /** Maker's wallet public key */\n maker: PublicKey;\n /** Condition PDA this order belongs to */\n condition: PublicKey;\n /** Outcome token: 0 = NO, 1 = YES */\n tokenId: number;\n /** Side: 0 = BUY (give USDC, want tokens), 1 = SELL (give tokens, want USDC) — matches EVM convention */\n side: number;\n /** Amount the maker puts in: BUY → USDC, SELL → CTF tokens */\n makerAmount: BN;\n /** Amount the maker wants to receive: BUY → CTF tokens, SELL → USDC */\n takerAmount: BN;\n /** Unique nonce per maker — used for OrderStatus PDA + replay protection */\n nonce: BN;\n /** Unix timestamp expiry (0 = no expiry) */\n expiry: BN;\n /** Creation timestamp (Unix seconds) */\n createdAt: BN;\n /** Fixed USDC amount (9 decimals) taker pays to treasury after all fills. 0 = no fee. Set by operator off-chain. */\n fee: BN;\n /** Directed order: only this pubkey can be counterparty. PublicKey.default() = public */\n taker: PublicKey;\n /** Ed25519 signer key. Must equal maker for now (proxy not supported) */\n signer: PublicKey;\n}\n\n/**\n * Signed order — Order + 64-byte Ed25519 signature over serializeOrderToBytes().\n * This is the on-chain instruction data type for all match_* instructions.\n */\nexport interface SignedOrder {\n order: Order;\n /** Ed25519 signature (64 bytes) from order.maker over serializeOrderToBytes() */\n signature: Uint8Array;\n}\n\n// ─── Errors ───────────────────────────────────────────────────────────────────\n\nexport class XMarketError extends Error {\n constructor(message: string, public code?: string) {\n super(message);\n this.name = \"XMarketError\";\n }\n}\n\nexport class UnauthorizedError extends XMarketError {\n constructor(msg = \"Unauthorized\") {\n super(msg, \"UNAUTHORIZED\");\n this.name = \"UnauthorizedError\";\n }\n}\n\nexport class AccountNotFoundError extends XMarketError {\n constructor(account: string, address?: string) {\n super(`${account} not found${address ? `: ${address}` : \"\"}`, \"NOT_FOUND\");\n this.name = \"AccountNotFoundError\";\n }\n}\n\nexport class InvalidParamError extends XMarketError {\n constructor(msg = \"Invalid parameter\") {\n super(msg, \"INVALID_PARAM\");\n this.name = \"InvalidParamError\";\n }\n}\n","import * as anchor from \"@coral-xyz/anchor\";\nimport { PublicKey, SystemProgram, SYSVAR_RENT_PUBKEY, Transaction, ComputeBudgetProgram } from \"@solana/web3.js\";\n\nconst TOKEN_METADATA_PROGRAM_ID = new PublicKey(\"metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s\");\nimport {\n TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n} from \"@solana/spl-token\";\nimport { PDA, generateQuestionId, generateContentHash } from \"../pda\";\nimport { ProgramIds } from \"../config/networks\";\nimport {\n QuestionMarketConfig,\n Question,\n QuestionStatus,\n CreateQuestionParams,\n Position,\n} from \"../types\";\nimport type { CtfClient } from \"./ctf\";\n\nexport class MarketClient {\n private readonly program: anchor.Program;\n private readonly provider: anchor.AnchorProvider;\n private readonly programIds: ProgramIds;\n readonly configPda: PublicKey;\n\n /** Injected by XMarketSDK after construction — enables fetchQuestionBalances. */\n ctfClient?: CtfClient;\n\n constructor(\n program: anchor.Program,\n provider: anchor.AnchorProvider,\n programIds: ProgramIds,\n ownerPubkey: PublicKey\n ) {\n this.program = program;\n this.provider = provider;\n this.programIds = programIds;\n this.configPda = PDA.questionMarketConfig(ownerPubkey, programIds)[0];\n }\n\n get walletPubkey(): PublicKey {\n return this.provider.wallet.publicKey;\n }\n\n // ─── Instructions (return Transaction — caller signs + sends) ───────────────\n\n async initialize(\n admin: PublicKey,\n oracle: PublicKey,\n owner: PublicKey = this.walletPubkey\n ): Promise<Transaction> {\n return this.program.methods\n .initialize({\n admin,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n oracle,\n })\n .accounts({\n owner,\n config: this.configPda,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n /**\n * Build createQuestionAdmin transaction (whitelist/admin path — status = Approved immediately).\n * @param creator - Whitelisted creator (must be in whitelist or be admin/owner)\n * @param payer - Fee payer (pays rent; can differ from creator)\n */\n async createQuestionAdmin(\n params: CreateQuestionParams,\n oracle: PublicKey,\n creator: PublicKey = this.walletPubkey,\n payer: PublicKey = this.walletPubkey\n ): Promise<{ tx: Transaction; questionPda: PublicKey; conditionPda: PublicKey; questionId: Uint8Array }> {\n const questionId = params.questionId ?? generateQuestionId(params.content);\n const contentHash = params.contentHash ?? generateContentHash(params.content);\n\n const [questionPda] = PDA.question(this.configPda, questionId, this.programIds);\n const [conditionPda] = PDA.condition(oracle, questionId, this.programIds);\n const [yesMint] = PDA.yesMint(conditionPda, this.programIds);\n const [noMint] = PDA.noMint(conditionPda, this.programIds);\n const [mintAuthority] = PDA.mintAuthority(conditionPda, this.programIds);\n const [collateralVault] = PDA.collateralVault(params.collateralMint, this.programIds);\n\n const tx = await this.program.methods\n .createQuestionAdmin({\n questionId: Array.from(questionId) as number[],\n contentHash: Array.from(contentHash) as number[],\n hookProgram: params.hookProgram,\n authorizedClob: params.authorizedClob,\n expirationTime: new anchor.BN(params.expirationTime),\n })\n .accounts({\n creator,\n payer,\n config: this.configPda,\n question: questionPda,\n currencyMint: params.collateralMint,\n oracle,\n condition: conditionPda,\n yesMint,\n noMint,\n mintAuthority,\n collateralVault,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n tokenProgram: TOKEN_2022_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n rent: SYSVAR_RENT_PUBKEY,\n })\n .transaction();\n\n return { tx, questionPda, conditionPda, questionId };\n }\n\n async approveQuestion(\n questionPda: PublicKey,\n admin: PublicKey = this.walletPubkey,\n payer: PublicKey = admin\n ): Promise<Transaction> {\n return this.program.methods\n .approveQuestion()\n .accounts({\n admin,\n payer,\n config: this.configPda,\n question: questionPda,\n })\n .transaction();\n }\n\n async updateConfig(\n params: { newAdmin?: PublicKey; newOracle?: PublicKey; isPaused?: boolean; newConditionalTokensProgram?: PublicKey },\n authority: PublicKey = this.walletPubkey,\n payer: PublicKey = authority\n ): Promise<Transaction> {\n return this.program.methods\n .updateConfig({\n newAdmin: params.newAdmin ?? null,\n newOracle: params.newOracle ?? null,\n isPaused: params.isPaused ?? null,\n newConditionalTokensProgram: params.newConditionalTokensProgram ?? null,\n })\n .accounts({\n authority,\n payer,\n config: this.configPda,\n })\n .transaction();\n }\n\n /** Set the admin (owner only). Replaces any existing admin. */\n async addAdmin(\n newAdmin: PublicKey,\n owner: PublicKey = this.walletPubkey\n ): Promise<Transaction> {\n return this.program.methods\n .addAdmin(newAdmin)\n .accounts({\n owner,\n config: this.configPda,\n })\n .transaction();\n }\n\n /** Clear the admin (owner only). Sets admin to default pubkey. */\n async removeAdmin(\n owner: PublicKey = this.walletPubkey\n ): Promise<Transaction> {\n return this.program.methods\n .removeAdmin()\n .accounts({\n owner,\n config: this.configPda,\n })\n .transaction();\n }\n\n async addToWhitelist(\n address: PublicKey,\n authority: PublicKey = this.walletPubkey,\n payer: PublicKey = authority\n ): Promise<Transaction> {\n return this.program.methods\n .addToWhitelist(address)\n .accounts({\n authority,\n payer,\n config: this.configPda,\n })\n .transaction();\n }\n\n async removeFromWhitelist(\n address: PublicKey,\n authority: PublicKey = this.walletPubkey,\n payer: PublicKey = authority\n ): Promise<Transaction> {\n return this.program.methods\n .removeFromWhitelist(address)\n .accounts({\n authority,\n payer,\n config: this.configPda,\n })\n .transaction();\n }\n\n async growConfig(\n owner: PublicKey = this.walletPubkey,\n payer: PublicKey = owner\n ): Promise<Transaction> {\n return this.program.methods\n .growConfig()\n .accounts({\n payer,\n owner,\n config: this.configPda,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n async restoreConfig(\n snapshot: Buffer,\n owner: PublicKey = this.walletPubkey,\n payer: PublicKey = owner\n ): Promise<Transaction> {\n return this.program.methods\n .restoreConfig(Array.from(snapshot))\n .accounts({\n payer,\n owner,\n config: this.configPda,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n // ─── Queries ─────────────────────────────────────────────────────────────────\n\n async fetchConfig(): Promise<QuestionMarketConfig | null> {\n try {\n const acc = await (this.program.account as any).questionMarketConfig.fetch(this.configPda);\n return {\n owner: acc.owner,\n admin: acc.admin,\n oracle: acc.oracle,\n conditionalTokensProgram: acc.conditionalTokensProgram,\n questionCount: acc.questionCount.toNumber(),\n approvedCount: acc.approvedCount.toNumber(),\n rejectedCount: acc.rejectedCount.toNumber(),\n presaleCount: acc.presaleCount.toNumber(),\n whitelist: acc.whitelist as PublicKey[],\n whitelistLen: acc.whitelistLen,\n isPaused: acc.isPaused,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchQuestion(questionPda: PublicKey): Promise<Question | null> {\n try {\n const acc = await (this.program.account as any).question.fetch(questionPda);\n return {\n config: acc.config,\n questionId: new Uint8Array(acc.questionId),\n contentHash: new Uint8Array(acc.contentHash),\n expirationTime: acc.expirationTime.toNumber(),\n currencyMint: acc.currencyMint,\n creator: acc.creator,\n condition: acc.condition ?? null,\n status: this._parseStatus(acc.status),\n createdAt: acc.createdAt.toNumber(),\n approvedAt: acc.approvedAt.toNumber(),\n resolvedAt: acc.resolvedAt.toNumber(),\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n questionPda(questionId: Uint8Array): PublicKey {\n return PDA.question(this.configPda, questionId, this.programIds)[0];\n }\n\n private _parseStatus(raw: any): QuestionStatus {\n if (raw.pending !== undefined) return QuestionStatus.Pending;\n if (raw.approved !== undefined) return QuestionStatus.Approved;\n if (raw.rejected !== undefined) return QuestionStatus.Rejected;\n if (raw.resolved !== undefined) return QuestionStatus.Resolved;\n return QuestionStatus.Pending;\n }\n\n /**\n * Convenience: fetch YES and NO token balances for a question.\n * Returns null for each if question not approved or position not initialized.\n * Requires ctfClient to be injected (done automatically by XMarketSDK).\n */\n async fetchQuestionBalances(\n questionPda: PublicKey,\n owner: PublicKey\n ): Promise<{ yes: Position | null; no: Position | null }> {\n if (!this.ctfClient) return { yes: null, no: null };\n const q = await this.fetchQuestion(questionPda);\n if (!q || !q.condition) return { yes: null, no: null };\n return this.ctfClient.fetchBothPositions(q.condition, owner);\n }\n\n // ─── Presale instructions ────────────────────────────────────────────────────\n\n /**\n * Any user creates a presale + initial buy (question-market::create_presale).\n * Reads agents_rev / company_rev from fee_config.\n *\n * @param feeConfig fee_management fee_config PDA (owner = feeConfigOwner)\n * @param currencyMint collateral token (e.g. USDC)\n * @param presaleIndex config.presale_count — fetch config first or pass 0 for first presale\n */\n async createPresale(\n params: {\n price: anchor.BN;\n startTime: anchor.BN;\n endTime: anchor.BN;\n initialBuyAmount: anchor.BN;\n },\n feeConfig: PublicKey,\n currencyMint: PublicKey,\n presaleIndex: anchor.BN,\n creator: PublicKey = this.walletPubkey,\n payer: PublicKey = creator,\n ): Promise<{ tx: Transaction; presalePda: PublicKey; qtMint: PublicKey }> {\n if (!this.programIds.presale) throw new Error(\"presale program ID not configured\");\n\n const [presalePda] = PDA.presale(this.configPda, presaleIndex, this.programIds);\n const [qtMint] = PDA.qtMint(presalePda, this.programIds);\n const [qtAuthority] = PDA.qtAuthority(presalePda, this.programIds);\n const [userBuyRecord] = PDA.userBuyRecord(presalePda, creator, this.programIds);\n\n const presaleVault = getAssociatedTokenAddressSync(currencyMint, presalePda, true);\n const creatorQtAta = getAssociatedTokenAddressSync(qtMint, creator);\n const creatorCurrencyAta = getAssociatedTokenAddressSync(currencyMint, creator);\n const [qtMetadata] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"metadata\"), TOKEN_METADATA_PROGRAM_ID.toBuffer(), qtMint.toBuffer()],\n TOKEN_METADATA_PROGRAM_ID,\n );\n\n const tx = await this.program.methods\n .createPresale({\n price: params.price,\n startTime: params.startTime,\n endTime: params.endTime,\n initialBuyAmount: params.initialBuyAmount,\n })\n .accounts({\n creator,\n payer,\n config: this.configPda,\n feeConfig,\n presale: presalePda,\n qtMint,\n qtAuthority,\n currencyMint,\n presaleVault,\n creatorCurrencyAta,\n creatorQtAta,\n userBuyRecord,\n qtMetadata,\n tokenMetadataProgram: TOKEN_METADATA_PROGRAM_ID,\n presaleProgram: this.programIds.presale,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n rent: SYSVAR_RENT_PUBKEY,\n })\n .transaction();\n\n tx.instructions.unshift(\n ComputeBudgetProgram.setComputeUnitLimit({ units: 400_000 }),\n );\n\n return { tx, presalePda, qtMint };\n }\n\n /**\n * Whitelist-only: approve presale → creates question + CTF condition + market_oracle in one tx.\n *\n * @param presalePda the presale account\n * @param contentHash 32-byte hash for question content\n * @param hookProgram token-2022 transfer hook program\n * @param authorizedClob clob program allowed to do CTF transfers\n * @param expirationTime Unix seconds\n * @param creator presale creator pubkey (stored in question)\n * @param currencyMint collateral mint\n */\n async approvePresale(\n presalePda: PublicKey,\n contentHash: Uint8Array,\n hookProgram: PublicKey,\n authorizedClob: PublicKey,\n expirationTime: anchor.BN,\n creator: PublicKey,\n currencyMint: PublicKey,\n caller: PublicKey = this.walletPubkey,\n payer: PublicKey = caller,\n ): Promise<{ tx: Transaction; questionPda: PublicKey; conditionPda: PublicKey; marketOraclePda: PublicKey; marketOracleVault: PublicKey }> {\n if (!this.programIds.presale) throw new Error(\"presale program ID not configured\");\n if (!this.programIds.marketOracle) throw new Error(\"marketOracle program ID not configured\");\n\n const questionId = presalePda.toBytes();\n const [questionPda] = PDA.question(this.configPda, questionId, this.programIds);\n\n const marketConfig = await this.fetchConfig();\n if (!marketConfig) throw new Error(\"QuestionMarketConfig not found\");\n\n const oraclePubkey = marketConfig.oracle;\n const [conditionPda] = PDA.condition(oraclePubkey, questionId, this.programIds);\n const [yesMint] = PDA.yesMint(conditionPda, this.programIds);\n const [noMint] = PDA.noMint(conditionPda, this.programIds);\n const [mintAuthority] = PDA.mintAuthority(conditionPda, this.programIds);\n const [collateralVault] = PDA.collateralVault(currencyMint, this.programIds);\n const [marketOraclePda] = PDA.marketOraclePda(questionPda, this.programIds);\n const marketOracleVault = getAssociatedTokenAddressSync(currencyMint, marketOraclePda, true);\n\n const tx = await this.program.methods\n .approvePresale({\n contentHash: Array.from(contentHash) as number[],\n hookProgram,\n authorizedClob,\n expirationTime,\n creator,\n })\n .accounts({\n caller,\n payer,\n config: this.configPda,\n presale: presalePda,\n question: questionPda,\n currencyMint,\n oracle: oraclePubkey,\n condition: conditionPda,\n yesMint,\n noMint,\n mintAuthority,\n collateralVault,\n marketOracle: marketOraclePda,\n marketOracleVault,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n presaleProgram: this.programIds.presale,\n marketOracleProgram: this.programIds.marketOracle,\n tokenProgram: TOKEN_PROGRAM_ID,\n token2022Program: TOKEN_2022_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n rent: SYSVAR_RENT_PUBKEY,\n })\n .transaction();\n\n return { tx, questionPda, conditionPda, marketOraclePda, marketOracleVault };\n }\n\n /**\n * Whitelist-only: reject presale so users can refund.\n */\n async rejectPresale(\n presalePda: PublicKey,\n caller: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n if (!this.programIds.presale) throw new Error(\"presale program ID not configured\");\n return this.program.methods\n .rejectPresale()\n .accounts({\n caller,\n config: this.configPda,\n presale: presalePda,\n presaleProgram: this.programIds.presale,\n })\n .transaction();\n }\n\n /**\n * Whitelist-only: distribute presale vault → 10% agents + 10% company + 80% botmm.\n * Closes presale_vault ATA and presale PDA after distribution; lamports returned to payer.\n */\n async collectPresaleRevenue(params: {\n presalePda: PublicKey;\n currencyMint: PublicKey;\n conditionId: Uint8Array;\n referralAddress: PublicKey;\n companyAddress: PublicKey;\n adminOwner: PublicKey;\n caller?: PublicKey;\n payer?: PublicKey;\n }): Promise<Transaction> {\n const {\n presalePda, currencyMint, conditionId,\n referralAddress, companyAddress, adminOwner,\n } = params;\n const caller = params.caller ?? this.walletPubkey;\n const payer = params.payer ?? this.walletPubkey;\n if (!this.programIds.presale) throw new Error(\"presale program ID not configured\");\n if (!this.programIds.adminContract) throw new Error(\"adminContract program ID not configured\");\n\n const presaleVault = getAssociatedTokenAddressSync(currencyMint, presalePda, true);\n const referralTokenAccount = getAssociatedTokenAddressSync(currencyMint, referralAddress);\n const companyTokenAccount = getAssociatedTokenAddressSync(currencyMint, companyAddress);\n\n const [adminConfig] = PDA.adminConfig(adminOwner, this.programIds);\n const [claimRecord] = PDA.claimRecord(conditionId, this.programIds);\n const adminVault = getAssociatedTokenAddressSync(currencyMint, adminConfig, true);\n\n return this.program.methods\n .collectPresaleRevenue(Array.from(conditionId))\n .accounts({\n caller,\n config: this.configPda,\n presale: presalePda,\n presaleVault,\n currencyMint,\n referralTokenAccount,\n companyTokenAccount,\n adminVault,\n adminConfig,\n claimRecord,\n payer,\n presaleProgram: this.programIds.presale,\n adminProgram: this.programIds.adminContract,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n /**\n * Whitelist-only: snapshot MST supply so holders can claim trading fees.\n * Call after oracle resolves the question.\n */\n async collectTradingFee(\n marketOraclePda: PublicKey,\n qtMint: PublicKey,\n caller: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n if (!this.programIds.marketOracle) throw new Error(\"marketOracle program ID not configured\");\n return this.program.methods\n .collectTradingFee()\n .accounts({\n caller,\n config: this.configPda,\n marketOracle: marketOraclePda,\n qtMint,\n marketOracleProgram: this.programIds.marketOracle,\n })\n .transaction();\n }\n}\n","import * as anchor from \"@coral-xyz/anchor\";\nimport { Keypair, PublicKey, SystemProgram, SYSVAR_RENT_PUBKEY, Transaction, TransactionInstruction } from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n createAssociatedTokenAccountIdempotentInstruction,\n} from \"@solana/spl-token\";\nimport { PDA } from \"../pda\";\nimport { ProgramIds } from \"../config/networks\";\nimport { Condition, CollateralVault, CtfConfig, Position, TxResult } from \"../types\";\n\nexport class CtfClient {\n private readonly program: anchor.Program;\n private readonly provider: anchor.AnchorProvider;\n private readonly programIds: ProgramIds;\n\n constructor(\n program: anchor.Program,\n provider: anchor.AnchorProvider,\n programIds: ProgramIds\n ) {\n this.program = program;\n this.provider = provider;\n this.programIds = programIds;\n }\n\n get walletPubkey(): PublicKey {\n return this.provider.wallet.publicKey;\n }\n\n // ─── Instructions ────────────────────────────────────────────────────────────\n\n /**\n * Create a Condition directly (bypasses QuestionMarket).\n * oracle is UncheckedAccount — set it to any pubkey (e.g. user wallet)\n * so that wallet can later sign reportPayouts.\n * payer covers rent for condition + mints.\n */\n async prepareCondition(\n questionId: Uint8Array,\n oracle: PublicKey,\n collateralMint: PublicKey,\n hookProgram: PublicKey,\n authorizedClob: PublicKey,\n payer: PublicKey = this.walletPubkey,\n signers: Keypair[] = []\n ): Promise<{ signature: string; conditionPda: PublicKey; yesMint: PublicKey; noMint: PublicKey }> {\n const [conditionPda] = PDA.condition(oracle, questionId, this.programIds);\n const [yesMint] = PDA.yesMint(conditionPda, this.programIds);\n const [noMint] = PDA.noMint(conditionPda, this.programIds);\n const [mintAuthority] = PDA.mintAuthority(conditionPda, this.programIds);\n const [collateralVault] = PDA.collateralVault(collateralMint, this.programIds);\n\n const sig = await this.program.methods\n .prepareCondition(\n Array.from(questionId) as number[],\n hookProgram,\n authorizedClob\n )\n .accounts({\n oracle,\n condition: conditionPda,\n yesMint,\n noMint,\n mintAuthority,\n collateralMint,\n collateralVault,\n payer,\n tokenProgram: TOKEN_2022_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n rent: SYSVAR_RENT_PUBKEY,\n })\n .signers(signers)\n .rpc({ skipPreflight: true });\n\n return { signature: sig, conditionPda, yesMint, noMint };\n }\n\n /** One-time setup. Caller becomes the CTF owner. Can only be called once. */\n async initializeCtfConfig(): Promise<TxResult> {\n const [ctfConfig] = PDA.ctfConfig(this.programIds);\n const sig = await this.program.methods\n .initializeCtfConfig()\n .accounts({\n payer: this.walletPubkey,\n ctfConfig,\n systemProgram: SystemProgram.programId,\n })\n .rpc();\n return { signature: sig };\n }\n\n /**\n * Create the shared collateral vault for a given collateral mint (e.g. USDC).\n * Only callable by the CTF owner (as stored in ctf_config).\n * authority defaults to the wallet — pass a different signer if needed.\n */\n async initializeVault(collateralMint: PublicKey): Promise<TxResult> {\n const [ctfConfig] = PDA.ctfConfig(this.programIds);\n const [collateralVault] = PDA.collateralVault(collateralMint, this.programIds);\n const [vaultTokenAccount] = PDA.vaultToken(collateralMint, this.programIds);\n const sig = await this.program.methods\n .initializeVault()\n .accounts({\n authority: this.walletPubkey,\n payer: this.walletPubkey,\n ctfConfig,\n collateralMint,\n collateralVault,\n vaultTokenAccount,\n systemProgram: SystemProgram.programId,\n tokenProgram: TOKEN_PROGRAM_ID,\n rent: SYSVAR_RENT_PUBKEY,\n })\n .rpc();\n return { signature: sig };\n }\n\n /**\n * Initialize an empty Position account (balance = 0) for a user.\n * Needed before redeemPositions when the user only holds the opposite outcome\n * (e.g. buyer received YES via CLOB match but never had a NO position).\n *\n * Idempotent — call `fetchPosition` first to skip if already initialized.\n */\n async initPosition(\n condition: PublicKey,\n outcomeIndex: number,\n user: PublicKey = this.walletPubkey\n ): Promise<TxResult> {\n const [position] = PDA.position(condition, outcomeIndex, user, this.programIds);\n const sig = await this.program.methods\n .initPosition(outcomeIndex)\n .accounts({\n user,\n condition,\n position,\n systemProgram: SystemProgram.programId,\n })\n .rpc();\n return { signature: sig };\n }\n\n /**\n * Split `amount` collateral into equal YES + NO tokens.\n * ATAs created automatically via `init_if_needed`.\n */\n async splitPosition(\n condition: PublicKey,\n collateralMint: PublicKey,\n amount: anchor.BN,\n user: PublicKey = this.walletPubkey,\n payer: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [collateralVault] = PDA.collateralVault(collateralMint, this.programIds);\n const [vaultTokenAccount] = PDA.vaultToken(collateralMint, this.programIds);\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const [mintAuthority] = PDA.mintAuthority(condition, this.programIds);\n const [yesPosition] = PDA.position(condition, 1, user, this.programIds);\n const [noPosition] = PDA.position(condition, 0, user, this.programIds);\n\n const userYesAta = getAssociatedTokenAddressSync(yesMint, user, false, TOKEN_2022_PROGRAM_ID);\n const userNoAta = getAssociatedTokenAddressSync(noMint, user, false, TOKEN_2022_PROGRAM_ID);\n const userCollateral = getAssociatedTokenAddressSync(collateralMint, user);\n\n return this.program.methods\n .splitPosition(amount)\n .accounts({\n user,\n payer,\n condition,\n collateralVault,\n vaultTokenAccount,\n userCollateral,\n yesMint,\n userYesAta,\n noMint,\n userNoAta,\n yesPosition,\n noPosition,\n mintAuthority,\n tokenProgram: TOKEN_PROGRAM_ID,\n token2022Program: TOKEN_2022_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n /**\n * Merge `amount` YES + NO tokens back into collateral.\n * Both token balances must be ≥ amount.\n */\n async mergePosition(\n condition: PublicKey,\n collateralMint: PublicKey,\n amount: anchor.BN,\n user: PublicKey = this.walletPubkey,\n payer: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [collateralVault] = PDA.collateralVault(collateralMint, this.programIds);\n const [vaultTokenAccount] = PDA.vaultToken(collateralMint, this.programIds);\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const [yesPosition] = PDA.position(condition, 1, user, this.programIds);\n const [noPosition] = PDA.position(condition, 0, user, this.programIds);\n\n const userYesAta = getAssociatedTokenAddressSync(yesMint, user, false, TOKEN_2022_PROGRAM_ID);\n const userNoAta = getAssociatedTokenAddressSync(noMint, user, false, TOKEN_2022_PROGRAM_ID);\n const userCollateral = getAssociatedTokenAddressSync(collateralMint, user);\n\n return this.program.methods\n .mergePosition(amount)\n .accounts({\n user,\n payer,\n condition,\n collateralVault,\n vaultTokenAccount,\n userCollateral,\n yesMint,\n userYesAta,\n noMint,\n userNoAta,\n yesPosition,\n noPosition,\n tokenProgram: TOKEN_PROGRAM_ID,\n token2022Program: TOKEN_2022_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n /**\n * After condition resolves: burn outcome tokens proportional to payout\n * and receive USDC. Works for winning, losing, or both positions.\n */\n async redeemPositions(\n condition: PublicKey,\n collateralMint: PublicKey,\n user: PublicKey = this.walletPubkey,\n payer: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [collateralVault] = PDA.collateralVault(collateralMint, this.programIds);\n const [vaultTokenAccount] = PDA.vaultToken(collateralMint, this.programIds);\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const [yesPosition] = PDA.position(condition, 1, user, this.programIds);\n const [noPosition] = PDA.position(condition, 0, user, this.programIds);\n\n const userYesAta = getAssociatedTokenAddressSync(yesMint, user, false, TOKEN_2022_PROGRAM_ID);\n const userNoAta = getAssociatedTokenAddressSync(noMint, user, false, TOKEN_2022_PROGRAM_ID);\n const userCollateral = getAssociatedTokenAddressSync(collateralMint, user);\n\n const createYesAtaIx = createAssociatedTokenAccountIdempotentInstruction(\n payer, userYesAta, user, yesMint, TOKEN_2022_PROGRAM_ID,\n );\n const createNoAtaIx = createAssociatedTokenAccountIdempotentInstruction(\n payer, userNoAta, user, noMint, TOKEN_2022_PROGRAM_ID,\n );\n\n const redeemIx = await this.program.methods\n .redeemPositions()\n .accounts({\n user,\n payer,\n condition,\n collateralVault,\n vaultTokenAccount,\n userCollateral,\n yesMint,\n userYesAta,\n noMint,\n userNoAta,\n yesPosition,\n noPosition,\n tokenProgram: TOKEN_PROGRAM_ID,\n token2022Program: TOKEN_2022_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .instruction();\n\n const tx = new Transaction();\n tx.add(createYesAtaIx, createNoAtaIx, redeemIx);\n return tx;\n }\n\n /**\n * Oracle directly resolves a condition with payout numerators.\n * Bypasses QuestionMarket — only for oracle-owned conditions.\n */\n async reportPayouts(\n condition: PublicKey,\n payoutNumerators: number[]\n ): Promise<TxResult> {\n const sig = await this.program.methods\n .reportPayouts(payoutNumerators.map((n) => new anchor.BN(n)))\n .accounts({\n oracle: this.walletPubkey,\n condition,\n })\n .rpc();\n return { signature: sig };\n }\n\n /**\n * Build the `transfer_position` instruction for use in a CLOB CPI.\n *\n * This instruction requires `clob_authority` (the CLOB's PDA) to sign.\n * A PDA can only sign from within its own program via CPI — this method\n * CANNOT be called directly from a wallet transaction.\n *\n * Use-cases:\n * - Custom CLOB implementations that call CTF.transfer_position via CPI\n * - Anchor CPI builders in other Rust programs\n *\n * @param condition - Condition PDA\n * @param outcomeMint - YES or NO mint\n * @param fromUser - Source wallet\n * @param fromTokenAccount - Source ATA\n * @param fromPosition - Source Position PDA\n * @param toUser - Destination wallet\n * @param toTokenAccount - Destination ATA (created if needed — payer covers rent)\n * @param toPosition - Destination Position PDA\n * @param payer - Pays rent for toPosition + toTokenAccount creation\n * @param clobAuthority - CLOB config PDA (must sign via CPI)\n * @param outcomeIndex - 0 = NO, 1 = YES\n * @param amount - Token amount to transfer\n */\n async transferPositionIx(\n condition: PublicKey,\n outcomeMint: PublicKey,\n fromUser: PublicKey,\n fromTokenAccount: PublicKey,\n fromPosition: PublicKey,\n toUser: PublicKey,\n toTokenAccount: PublicKey,\n toPosition: PublicKey,\n payer: PublicKey,\n clobAuthority: PublicKey,\n outcomeIndex: number,\n amount: anchor.BN\n ): Promise<TransactionInstruction> {\n return this.program.methods\n .transferPosition(outcomeIndex, amount)\n .accounts({\n payer,\n clobAuthority,\n condition,\n outcomeMint,\n fromUser,\n fromTokenAccount,\n fromPosition,\n toUser,\n toTokenAccount,\n toPosition,\n token2022Program: TOKEN_2022_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .instruction();\n }\n\n /**\n * Update the authorized CLOB on a condition.\n * Only callable by the condition's oracle (the wallet that signed createQuestion).\n */\n async updateAuthorizedClob(\n condition: PublicKey,\n newAuthorizedClob: PublicKey\n ): Promise<TxResult> {\n const sig = await this.program.methods\n .updateAuthorizedClob(newAuthorizedClob)\n .accounts({\n oracle: this.walletPubkey,\n condition,\n })\n .rpc();\n return { signature: sig };\n }\n\n // ─── Queries ─────────────────────────────────────────────────────────────────\n\n async fetchCtfConfig(): Promise<CtfConfig | null> {\n try {\n const [ctfConfig] = PDA.ctfConfig(this.programIds);\n const acc = await (this.program.account as any).ctfConfig.fetch(ctfConfig);\n return {\n owner: acc.owner,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchCondition(conditionPda: PublicKey): Promise<Condition | null> {\n try {\n const acc = await (this.program.account as any).condition.fetch(conditionPda);\n return {\n oracle: acc.oracle,\n questionId: new Uint8Array(acc.questionId),\n outcomeSlotCount: acc.outcomeSlotCount,\n payoutNumerators: acc.payoutNumerators,\n payoutDenominator: acc.payoutDenominator,\n totalCollateral: acc.totalCollateral,\n collateralMint: acc.collateralMint,\n collateralVault: acc.collateralVault,\n yesMint: acc.yesMint,\n noMint: acc.noMint,\n hookProgram: acc.hookProgram,\n authorizedClob: acc.authorizedClob,\n isResolved: acc.isResolved,\n resolvedAt: acc.resolvedAt?.toNumber() ?? 0,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchVault(collateralMint: PublicKey): Promise<CollateralVault | null> {\n try {\n const [vaultPda] = PDA.collateralVault(collateralMint, this.programIds);\n const acc = await (this.program.account as any).collateralVault.fetch(vaultPda);\n return {\n collateralMint: acc.collateralMint,\n vaultTokenAccount: acc.vaultTokenAccount,\n totalLocked: acc.totalLocked,\n conditionCount: acc.conditionCount,\n bump: acc.bump,\n vaultBump: acc.vaultBump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchPosition(\n condition: PublicKey,\n outcomeIndex: number,\n owner: PublicKey = this.walletPubkey\n ): Promise<Position | null> {\n try {\n const [pda] = PDA.position(condition, outcomeIndex, owner, this.programIds);\n const acc = await (this.program.account as any).position.fetch(pda);\n return {\n owner: acc.owner,\n condition: acc.condition,\n outcomeIndex: acc.outcomeIndex,\n balance: acc.balance,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n /** YES = outcome index 1, NO = outcome index 0. */\n async fetchBothPositions(\n condition: PublicKey,\n owner: PublicKey = this.walletPubkey\n ): Promise<{ yes: Position | null; no: Position | null }> {\n const [yes, no] = await Promise.all([\n this.fetchPosition(condition, 1, owner),\n this.fetchPosition(condition, 0, owner),\n ]);\n return { yes, no };\n }\n\n /** Thin wrapper: fetch position for a single outcome token (0=NO, 1=YES). */\n async fetchTokenBalance(\n condition: PublicKey,\n tokenId: number,\n owner: PublicKey = this.walletPubkey\n ): Promise<Position | null> {\n return this.fetchPosition(condition, tokenId, owner);\n }\n\n // ─── PDA helpers (public for consumers) ──────────────────────────────────────\n\n yesMintPda(condition: PublicKey): PublicKey {\n return PDA.yesMint(condition, this.programIds)[0];\n }\n\n noMintPda(condition: PublicKey): PublicKey {\n return PDA.noMint(condition, this.programIds)[0];\n }\n\n mintAuthorityPda(condition: PublicKey): PublicKey {\n return PDA.mintAuthority(condition, this.programIds)[0];\n }\n\n collateralVaultPda(collateralMint: PublicKey): PublicKey {\n return PDA.collateralVault(collateralMint, this.programIds)[0];\n }\n}\n","/**\n * Order signing utilities.\n *\n * Canonical message layout (178 bytes) — must match Rust `Order::to_signable_bytes()`:\n * [0..31] maker pubkey\n * [32..63] condition pubkey\n * [64] token_id (u8)\n * [65] side (u8)\n * [66..73] maker_amount (u64 le)\n * [74..81] taker_amount (u64 le)\n * [82..89] nonce (u64 le)\n * [90..97] expiry (i64 le)\n * [98..105] created_at (i64 le)\n * [106..113] fee (u64 le)\n * [114..145] taker pubkey\n * [146..177] signer pubkey\n */\nimport {\n TransactionInstruction,\n Ed25519Program,\n SYSVAR_INSTRUCTIONS_PUBKEY,\n} from \"@solana/web3.js\";\nimport { Order, SignedOrder } from \"./types\";\n\n// ─── Serialization ────────────────────────────────────────────────────────────\n\nexport function serializeOrderToBytes(order: Order): Uint8Array {\n const buf = new Uint8Array(178);\n\n buf.set(order.maker.toBytes(), 0);\n buf.set(order.condition.toBytes(), 32);\n buf[64] = order.tokenId;\n buf[65] = order.side;\n\n buf.set(order.makerAmount.toArrayLike(Buffer, \"le\", 8), 66);\n buf.set(order.takerAmount.toArrayLike(Buffer, \"le\", 8), 74);\n buf.set(order.nonce.toArrayLike(Buffer, \"le\", 8), 82);\n buf.set(order.expiry.toArrayLike(Buffer, \"le\", 8), 90);\n buf.set(order.createdAt.toArrayLike(Buffer, \"le\", 8), 98);\n buf.set(order.fee.toArrayLike(Buffer, \"le\", 8), 106);\n buf.set(order.taker.toBytes(), 114);\n buf.set(order.signer.toBytes(), 146);\n\n return buf;\n}\n\n// ─── Signing ──────────────────────────────────────────────────────────────────\n\n/**\n * Sign an order with a keypair's sign function.\n * The `signFn` receives the 98-byte canonical message and returns a 64-byte signature.\n *\n * Usage with a Keypair:\n * const signed = signOrder(order, (msg) => keypair.secretKey.slice(0,64) && nacl.sign.detached(msg, keypair.secretKey))\n *\n * Or use the convenience wrapper `signOrderWithKeypair` from this module.\n */\nexport async function signOrder(\n order: Order,\n signFn: (message: Uint8Array) => Uint8Array | Promise<Uint8Array>\n): Promise<SignedOrder> {\n const message = serializeOrderToBytes(order);\n const signature = await signFn(message);\n if (signature.length !== 64) throw new Error(\"signature must be 64 bytes\");\n return { order, signature };\n}\n\n// ─── Ed25519 instruction builder ─────────────────────────────────────────────\n\n/**\n * Build a single batched Ed25519 precompile instruction for N signed orders.\n *\n * All signatures are packed into one instruction (ix[0]).\n * The on-chain program reads sig[i] via `extract_order_from_ed25519_ix(sysvar, i)`.\n *\n * Batched layout saves ~12 bytes vs N separate Ed25519 instructions — critical for\n * fitting 1-taker + 2-maker transactions within Solana's 1232-byte raw tx limit.\n *\n * Data format:\n * [0] num_sigs (N)\n * [1] padding\n * [2+i*14] per-sig offset entries (14 bytes each)\n * Then: sigs (64B each), pubkeys (32B each), messages (178B each)\n */\nexport function buildBatchedEd25519Instruction(orders: SignedOrder[]): TransactionInstruction {\n const N = orders.length;\n if (N === 0) throw new Error(\"At least 1 order required\");\n\n const MSG_SIZE = 178;\n const SIG_SIZE = 64;\n const PK_SIZE = 32;\n const HEADER = 2 + N * 14;\n const sigBase = HEADER;\n const pkBase = sigBase + N * SIG_SIZE;\n const msgBase = pkBase + N * PK_SIZE;\n const totalSize = msgBase + N * MSG_SIZE;\n\n const data = Buffer.alloc(totalSize);\n data[0] = N;\n data[1] = 0;\n\n for (let i = 0; i < N; i++) {\n const e = 2 + i * 14;\n data.writeUInt16LE(sigBase + i * SIG_SIZE, e); // sig_offset\n data.writeUInt16LE(0xffff, e + 2); // sig_ix_index (this ix)\n data.writeUInt16LE(pkBase + i * PK_SIZE, e + 4); // pubkey_offset\n data.writeUInt16LE(0xffff, e + 6); // pubkey_ix_index (this ix)\n data.writeUInt16LE(msgBase + i * MSG_SIZE, e + 8); // msg_offset\n data.writeUInt16LE(MSG_SIZE, e + 10); // msg_size\n data.writeUInt16LE(0xffff, e + 12); // msg_ix_index (this ix)\n\n data.set(orders[i].signature, sigBase + i * SIG_SIZE);\n data.set(orders[i].order.maker.toBytes(), pkBase + i * PK_SIZE);\n data.set(serializeOrderToBytes(orders[i].order), msgBase + i * MSG_SIZE);\n }\n\n return new TransactionInstruction({\n keys: [],\n programId: Ed25519Program.programId,\n data,\n });\n}\n\n/**\n * The Solana instructions sysvar public key.\n * Pass this as `ixSysvar` to all match_* instruction accounts.\n */\nexport const IX_SYSVAR = SYSVAR_INSTRUCTIONS_PUBKEY;\n\n// ─── Anchor serialization helper ─────────────────────────────────────────────\n\n/**\n * Convert SignedOrder to the shape anchor expects for SignedOrder struct.\n * The signature must be passed as a fixed-size array of 64 numbers.\n */\nexport function _toAnchorSignedOrder(signed: SignedOrder) {\n const sig = Array.from(signed.signature);\n if (sig.length !== 64) throw new Error(\"signature must be 64 bytes\");\n return {\n order: {\n maker: signed.order.maker,\n condition: signed.order.condition,\n tokenId: signed.order.tokenId,\n side: signed.order.side,\n makerAmount: signed.order.makerAmount,\n takerAmount: signed.order.takerAmount,\n nonce: signed.order.nonce,\n expiry: signed.order.expiry,\n createdAt: signed.order.createdAt,\n fee: signed.order.fee,\n taker: signed.order.taker,\n signer: signed.order.signer,\n },\n signature: sig,\n };\n}\n","/**\n * High-level order utilities — build, sign, serialize, verify, detect match type.\n *\n * These helpers layer on top of the low-level `signing.ts` primitives and\n * provide a convenient interface for both the browser (wallet adapters) and\n * Node.js (Keypair-based) environments.\n */\nimport { Keypair, PublicKey } from \"@solana/web3.js\";\nimport BN from \"bn.js\";\nimport * as nacl from \"tweetnacl\";\nimport { Order, SignedOrder, InvalidParamError } from \"./types\";\nimport { serializeOrderToBytes, signOrder } from \"./signing\";\n\n// ─── Order factory ────────────────────────────────────────────────────────────\n\n/**\n * Build a fully-populated Order.\n * Sets `signer = maker` (proxy not yet supported).\n * `taker` defaults to new PublicKey(new Uint8Array(32)) (public order).\n * `createdAt` defaults to current Unix timestamp.\n * `fee` defaults to 0 (use global fee_rate_bps).\n */\nexport function buildOrder(params: {\n maker: PublicKey;\n condition: PublicKey;\n tokenId: number;\n side: number;\n makerAmount: BN;\n takerAmount: BN;\n nonce?: BN;\n expiry?: BN;\n createdAt?: BN;\n fee?: BN;\n taker?: PublicKey;\n}): Order {\n return {\n maker: params.maker,\n condition: params.condition,\n tokenId: params.tokenId,\n side: params.side,\n makerAmount: params.makerAmount,\n takerAmount: params.takerAmount,\n nonce: params.nonce ?? new BN(Date.now()),\n expiry: params.expiry ?? new BN(0),\n createdAt: params.createdAt ?? new BN(Math.floor(Date.now() / 1000)),\n fee: params.fee ?? new BN(0),\n taker: params.taker ?? new PublicKey(new Uint8Array(32)),\n signer: params.maker,\n };\n}\n\n// ─── Price → Amount helpers ───────────────────────────────────────────────────\n\n/**\n * Compute makerAmount / takerAmount from a limit price and quantity.\n *\n * ALWAYS use the order's own limit price (e.g., 51 for a 51% limit order).\n * NEVER pass `averageMatchedPrice` — that is an output of the matching engine,\n * not an order input. Using avgPrice here causes crossing checks to fail\n * for any maker whose price equals the limit price exactly.\n *\n * BUY YES (side=0): makerAmount = USDS spent = qty × price/100\n * takerAmount = YES received = qty\n * SELL YES (side=1): makerAmount = YES given = qty\n * takerAmount = USDS received = qty × price/100\n *\n * @param side 0 = BUY, 1 = SELL\n * @param price Limit price in percentage cents (e.g., 51 for 51% = $0.51/token)\n * @param quantity Whole token count (e.g., 11 for 11 YES tokens)\n * @param decimals Collateral token decimals (default 9 for USDS)\n */\nexport function orderAmountsFromPrice(\n side: 0 | 1,\n price: number,\n quantity: number,\n decimals: number = 9,\n): { makerAmount: BN; takerAmount: BN } {\n // Use integer arithmetic with 6-decimal price precision to avoid floating-point drift.\n const PRICE_PRECISION = new BN(1_000_000); // 10^6\n const DENOM = new BN(100).mul(PRICE_PRECISION); // 100 × 10^6\n const base = new BN(10).pow(new BN(decimals));\n\n const priceScaled = new BN(Math.round(price * 1_000_000)); // price × 10^6\n const quantityBase = new BN(quantity).mul(base); // qty in base units\n const collateral = quantityBase.mul(priceScaled).div(DENOM); // qty × price / 100\n\n return side === 0\n ? { makerAmount: collateral, takerAmount: quantityBase } // BUY: pay USDS, get tokens\n : { makerAmount: quantityBase, takerAmount: collateral }; // SELL: give tokens, get USDS\n}\n\n/**\n * Build a fully-populated Order from human-readable price + quantity.\n * Amounts are computed using the limit price — never use averageMatchedPrice.\n *\n * @param params.side 0 = BUY, 1 = SELL\n * @param params.price Limit price in percentage (e.g., 51 for 51%)\n * @param params.quantity Whole token count (e.g., 11 for 11 YES tokens)\n * @param params.decimals Collateral decimals (default 9 for USDS)\n */\nexport function buildOrderFromPrice(params: {\n maker: PublicKey;\n condition: PublicKey;\n tokenId: number;\n side: 0 | 1;\n price: number;\n quantity: number;\n decimals?: number;\n nonce?: BN;\n expiry?: BN;\n createdAt?: BN;\n fee?: BN;\n taker?: PublicKey;\n}): Order {\n const { makerAmount, takerAmount } = orderAmountsFromPrice(\n params.side, params.price, params.quantity, params.decimals ?? 9,\n );\n return buildOrder({ ...params, makerAmount, takerAmount });\n}\n\n// ─── Signing helpers ──────────────────────────────────────────────────────────\n\n/**\n * Sign an order with a Keypair.\n * Uses Ed25519 (nacl.sign.detached) over the 178-byte canonical message.\n */\nexport function signOrderWithKeypair(order: Order, keypair: Keypair): SignedOrder {\n const message = serializeOrderToBytes(order);\n const signature = nacl.sign.detached(message, keypair.secretKey);\n return { order, signature };\n}\n\n/** Return the 178-byte canonical message that gets signed for an order. */\nexport function getOrderSignBytes(order: Order): Uint8Array {\n return serializeOrderToBytes(order);\n}\n\n// ─── Serialization ────────────────────────────────────────────────────────────\n\n/** Serialize a SignedOrder to bytes: 178 (order) + 64 (sig) = 242 bytes. */\nexport function serializeSignedOrder(signed: SignedOrder): Uint8Array {\n const orderBytes = serializeOrderToBytes(signed.order);\n const buf = new Uint8Array(242);\n buf.set(orderBytes, 0);\n buf.set(signed.signature, 178);\n return buf;\n}\n\n/**\n * Deserialize 242 bytes back to a SignedOrder.\n * Field layout mirrors `serializeOrderToBytes()` + 64-byte signature.\n */\nexport function deserializeSignedOrder(bytes: Uint8Array): SignedOrder {\n if (bytes.length !== 242) throw new InvalidParamError(\"SignedOrder must be 242 bytes\");\n\n const readPubkey = (offset: number) => new PublicKey(bytes.slice(offset, offset + 32));\n const readU64 = (offset: number) => new BN(bytes.slice(offset, offset + 8), \"le\");\n const readI64 = (offset: number) => new BN(bytes.slice(offset, offset + 8), \"le\");\n\n const order: Order = {\n maker: readPubkey(0),\n condition: readPubkey(32),\n tokenId: bytes[64],\n side: bytes[65],\n makerAmount: readU64(66),\n takerAmount: readU64(74),\n nonce: readU64(82),\n expiry: readI64(90),\n createdAt: readI64(98),\n fee: readU64(106),\n taker: readPubkey(114),\n signer: readPubkey(146),\n };\n const signature = bytes.slice(178, 242);\n return { order, signature };\n}\n\n// ─── Verification ─────────────────────────────────────────────────────────────\n\n/**\n * Verify the Ed25519 signature on a signed order.\n * Returns true only if the signature is valid for `order.maker` (or `order.signer`).\n */\nexport function verifySignedOrder(signed: SignedOrder): boolean {\n const message = serializeOrderToBytes(signed.order);\n return nacl.sign.detached.verify(\n message,\n signed.signature,\n signed.order.signer.toBytes(),\n );\n}\n\n// ─── Match type detection ─────────────────────────────────────────────────────\n\nexport type MatchType = \"COMPLEMENTARY\" | \"MINT\" | \"MERGE\";\n\n/**\n * Detect the match type from two orders (pure, no RPC).\n *\n * | tokenId A === B | sides | type |\n * |-----------------|--------------|---------------|\n * | yes | one BUY+SELL | COMPLEMENTARY |\n * | no | both BUY | MINT |\n * | no | both SELL | MERGE |\n */\nexport function detectMatchType(a: Order | SignedOrder, b: Order | SignedOrder): MatchType {\n const _a = \"order\" in a ? a.order : a;\n const _b = \"order\" in b ? b.order : b;\n return _detectMatchType(_a, _b);\n}\n\nfunction _detectMatchType(a: Order, b: Order): MatchType {\n const SIDE_BUY = 0;\n const SIDE_SELL = 1;\n\n if (a.tokenId === b.tokenId) {\n const aBuy = a.side === SIDE_BUY;\n const bBuy = b.side === SIDE_BUY;\n if (aBuy !== bBuy) return \"COMPLEMENTARY\";\n throw new InvalidParamError(\n \"Orders with same tokenId must be one BUY and one SELL (COMPLEMENTARY)\"\n );\n }\n\n const aBuy = a.side === SIDE_BUY;\n const bBuy = b.side === SIDE_BUY;\n if (aBuy && bBuy) return \"MINT\";\n if (!aBuy && !bBuy) return \"MERGE\";\n throw new InvalidParamError(\n \"Orders with different tokenIds must both be BUY (MINT) or both SELL (MERGE)\"\n );\n}\n\nexport { signOrder };\n","import * as anchor from \"@coral-xyz/anchor\";\nimport BN from \"bn.js\";\nimport {\n PublicKey,\n SystemProgram,\n TransactionInstruction,\n TransactionMessage,\n VersionedTransaction,\n AddressLookupTableAccount,\n AddressLookupTableProgram,\n SYSVAR_INSTRUCTIONS_PUBKEY,\n Ed25519Program,\n ComputeBudgetProgram,\n type Signer as SolanaSigner,\n} from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n} from \"@solana/spl-token\";\nimport { PDA } from \"../pda\";\nimport { ProgramIds } from \"../config/networks\";\nimport {\n ClobConfig, OrderStatus, SignedOrder, TxResult, InvalidParamError,\n} from \"../types\";\nimport { buildBatchedEd25519Instruction, IX_SYSVAR, serializeOrderToBytes } from \"../signing\";\nimport { buildOrderFromPrice } from \"../order\";\nimport type { FeeManagementClient } from \"./fee_management\";\n\nexport class ClobClient {\n private readonly program: anchor.Program;\n private readonly provider: anchor.AnchorProvider;\n private readonly programIds: ProgramIds;\n private readonly networkConfig: { defaultCollateral: { mint: PublicKey } };\n\n /** Injected by XMarketSDK after construction — enables auto fee distribution */\n feeClient?: FeeManagementClient;\n feeConfigOwner?: PublicKey;\n\n /** Cached company_address from fee_config to avoid repeated RPC calls */\n private _companyAddress?: PublicKey;\n\n /** ALT cache: condition.toBase58() → loaded ALT account */\n private _altCache = new Map<string, AddressLookupTableAccount>();\n\n constructor(\n program: anchor.Program,\n provider: anchor.AnchorProvider,\n programIds: ProgramIds,\n networkConfig: { defaultCollateral: { mint: PublicKey } },\n ) {\n this.program = program;\n this.provider = provider;\n this.programIds = programIds;\n this.networkConfig = networkConfig;\n }\n\n private async companyAddress(): Promise<PublicKey | undefined> {\n if (!this.feeClient || !this.feeConfigOwner) return undefined;\n if (!this._companyAddress) {\n const cfg = await this.feeClient.fetchFeeConfig(this.feeConfigOwner);\n if (cfg) this._companyAddress = cfg.companyAddress;\n }\n return this._companyAddress;\n }\n\n get walletPubkey(): PublicKey {\n return this.provider.wallet.publicKey;\n }\n\n /**\n * Get or create an ALT for a condition.\n * Includes order_record PDAs for taker + all makers so match tx stays under 1232 bytes.\n */\n async ensureAlt(\n condition: PublicKey,\n collateralMint: PublicKey,\n takerSigned: SignedOrder,\n makers: SignedOrder[],\n ): Promise<AddressLookupTableAccount> {\n const cacheKey = condition.toBase58();\n if (this._altCache.has(cacheKey)) {\n return this._altCache.get(cacheKey)!;\n }\n\n const { connection } = this.provider;\n const payer = this.walletPubkey;\n\n const taker = takerSigned.order.maker;\n const takerNonce = takerSigned.order.nonce;\n const tokenId = takerSigned.order.tokenId;\n\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const [extraAccountMeta] = PDA.extraAccountMetaList(yesMint, this.programIds);\n const [hookConfig] = PDA.hookConfig(this.programIds);\n const [takerOrderStatus] = PDA.orderStatus(taker, takerNonce, this.programIds);\n const [takerOrderRecord] = PDA.orderRecord(taker, takerNonce, this.programIds);\n const [takerPosition] = PDA.position(condition, tokenId, taker, this.programIds);\n const clobConfigPda = this.configPda();\n\n const outcomeMint = tokenId === 1 ? yesMint : noMint;\n\n const feeRecipientAddr = (await this.fetchConfig())?.feeRecipient;\n\n const addresses: PublicKey[] = [\n Ed25519Program.programId,\n this.programIds.clobExchange,\n this.programIds.conditionalTokens,\n this.programIds.hook,\n TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID,\n SystemProgram.programId,\n SYSVAR_INSTRUCTIONS_PUBKEY,\n clobConfigPda,\n hookConfig,\n condition,\n yesMint,\n noMint,\n extraAccountMeta,\n taker,\n getAssociatedTokenAddressSync(collateralMint, taker),\n getAssociatedTokenAddressSync(outcomeMint, taker, false, TOKEN_2022_PROGRAM_ID),\n takerPosition,\n takerOrderStatus,\n takerOrderRecord,\n ];\n\n if (feeRecipientAddr) addresses.push(feeRecipientAddr);\n\n // MINT/MERGE accounts — add to ALT so versioned tx stays small\n const [collateralVault] = PDA.collateralVault(collateralMint, this.programIds);\n const [vaultToken] = PDA.vaultToken(collateralMint, this.programIds);\n const [mintAuth] = PDA.mintAuthority(condition, this.programIds);\n const [extraMetaNo] = PDA.extraAccountMetaList(noMint, this.programIds);\n const clobUsdcAta = getAssociatedTokenAddressSync(collateralMint, clobConfigPda, true);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfigPda, true, TOKEN_2022_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfigPda, true, TOKEN_2022_PROGRAM_ID);\n const [clobYesPos] = PDA.position(condition, 1, clobConfigPda, this.programIds);\n const [clobNoPos] = PDA.position(condition, 0, clobConfigPda, this.programIds);\n addresses.push(\n collateralVault, vaultToken, mintAuth, extraMetaNo,\n clobUsdcAta, clobYesAta, clobNoAta, clobYesPos, clobNoPos,\n collateralMint,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n );\n\n for (const m of makers) {\n const seller = m.order.maker;\n const makerTokenId = m.order.tokenId;\n const makerMint = makerTokenId === 1 ? yesMint : noMint;\n const [sellerPos] = PDA.position(condition, makerTokenId, seller, this.programIds);\n const [sellerStatus] = PDA.orderStatus(seller, m.order.nonce, this.programIds);\n const [sellerRecord] = PDA.orderRecord(seller, m.order.nonce, this.programIds);\n addresses.push(\n seller,\n sellerRecord,\n getAssociatedTokenAddressSync(makerMint, seller, false, TOKEN_2022_PROGRAM_ID),\n getAssociatedTokenAddressSync(collateralMint, seller),\n sellerPos,\n sellerStatus,\n );\n }\n\n if (this.programIds.feeManagement && this.feeConfigOwner) {\n const companyAddr = await this.companyAddress();\n addresses.push(\n this.programIds.feeManagement,\n PDA.feeConfig(this.feeConfigOwner, this.programIds)[0],\n PDA.marketFeeOverride(condition, this.programIds)[0],\n );\n if (companyAddr) {\n addresses.push(getAssociatedTokenAddressSync(collateralMint, companyAddr));\n }\n addresses.push(payer); // oracle_vault placeholder\n }\n\n const slot = await connection.getSlot(\"finalized\");\n const [createIx, altAddress] = AddressLookupTableProgram.createLookupTable({\n authority: payer, payer, recentSlot: slot,\n });\n\n const BATCH = 30;\n const extendIxs: TransactionInstruction[] = [];\n for (let i = 0; i < addresses.length; i += BATCH) {\n extendIxs.push(AddressLookupTableProgram.extendLookupTable({\n payer, authority: payer,\n lookupTable: altAddress,\n addresses: addresses.slice(i, i + BATCH),\n }));\n }\n\n await this._sendLegacyTx([createIx, extendIxs[0]]);\n for (let i = 1; i < extendIxs.length; i++) {\n await this._sendLegacyTx([extendIxs[i]]);\n }\n\n for (let attempt = 0; attempt < 30; attempt++) {\n await new Promise(r => setTimeout(r, 1000));\n const res = await connection.getAddressLookupTable(altAddress);\n if (res.value && res.value.state.addresses.length === addresses.length) {\n this._altCache.set(cacheKey, res.value);\n return res.value;\n }\n }\n throw new Error(`ALT ${altAddress.toBase58()} not active after 30s`);\n }\n\n private async _sendLegacyTxSig(instructions: TransactionInstruction[]): Promise<string> {\n const { connection } = this.provider;\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash();\n const { Transaction } = await import(\"@solana/web3.js\");\n const tx = new Transaction();\n tx.recentBlockhash = blockhash;\n tx.feePayer = this.walletPubkey;\n tx.add(...instructions);\n const signed = await this.provider.wallet.signTransaction(tx);\n const sig = await connection.sendRawTransaction(signed.serialize(), { skipPreflight: true });\n const result = await connection.confirmTransaction({ signature: sig, blockhash, lastValidBlockHeight }, \"confirmed\");\n if (result.value.err) {\n const txInfo = await connection.getTransaction(sig, { maxSupportedTransactionVersion: 0 });\n const logs = txInfo?.meta?.logMessages ?? [];\n const err = new Error(`Register tx failed: ${JSON.stringify(result.value.err)}\\n${logs.join(\"\\n\")}`);\n (err as any).logs = logs;\n throw err;\n }\n return sig;\n }\n\n private async _sendLegacyTx(instructions: TransactionInstruction[]): Promise<void> {\n await this._sendLegacyTxSig(instructions);\n }\n\n private async _ensureClobOutcomeAtas(\n yesMint: PublicKey,\n noMint: PublicKey,\n clobConfig: PublicKey,\n clobYesAta: PublicKey,\n clobNoAta: PublicKey,\n ): Promise<void> {\n const { connection } = this.provider;\n const [yesInfo, noInfo] = await Promise.all([\n connection.getAccountInfo(clobYesAta),\n connection.getAccountInfo(clobNoAta),\n ]);\n const { createAssociatedTokenAccountIdempotentInstruction } = await import(\"@solana/spl-token\");\n const ixs: TransactionInstruction[] = [];\n if (!yesInfo) {\n ixs.push(createAssociatedTokenAccountIdempotentInstruction(\n this.walletPubkey, clobYesAta, clobConfig, yesMint, TOKEN_2022_PROGRAM_ID,\n ));\n }\n if (!noInfo) {\n ixs.push(createAssociatedTokenAccountIdempotentInstruction(\n this.walletPubkey, clobNoAta, clobConfig, noMint, TOKEN_2022_PROGRAM_ID,\n ));\n }\n if (ixs.length > 0) {\n await this._sendLegacyTx(ixs);\n }\n }\n\n /**\n * Send a match transaction as versioned (v0) with optional ALT.\n * Both operator wallet and payer (this.provider.wallet) sign.\n */\n async sendMatchTx(\n instructions: TransactionInstruction[],\n lookupTable?: AddressLookupTableAccount,\n whitelistedWallet?: anchor.Wallet,\n ): Promise<string> {\n const { connection } = this.provider;\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash();\n const cuLimit = ComputeBudgetProgram.setComputeUnitLimit({ units: 1_400_000 });\n const heapFrame = ComputeBudgetProgram.requestHeapFrame({ bytes: 262144 }); // 256KB\n const message = new TransactionMessage({\n payerKey: this.walletPubkey,\n recentBlockhash: blockhash,\n instructions: [cuLimit, heapFrame, ...instructions],\n }).compileToV0Message(lookupTable ? [lookupTable] : []);\n const vtx = new VersionedTransaction(message);\n const signers: SolanaSigner[] = [(this.provider.wallet as any).payer as SolanaSigner];\n if (\n whitelistedWallet &&\n !whitelistedWallet.publicKey.equals(this.walletPubkey)\n ) {\n signers.push((whitelistedWallet as any).payer as SolanaSigner);\n }\n vtx.sign(signers);\n const sig = await connection.sendRawTransaction(vtx.serialize(), {\n skipPreflight: false,\n });\n const result = await connection.confirmTransaction(\n { signature: sig, blockhash, lastValidBlockHeight },\n \"confirmed\",\n );\n if (result.value.err) {\n const txInfo = await connection.getTransaction(sig, { maxSupportedTransactionVersion: 0 });\n const logs = txInfo?.meta?.logMessages ?? [];\n const err = new Error(`Match tx failed: ${JSON.stringify(result.value.err)}\\n${logs.join(\"\\n\")}`);\n (err as any).logs = logs;\n throw err;\n }\n return sig;\n }\n\n configPda(): PublicKey {\n return PDA.clobConfig(this.programIds)[0];\n }\n\n // ─── Register / Cancel ───────────────────────────────────────────────────────\n\n /**\n * Register a signed order on-chain.\n * Sends Ed25519 precompile ix + register_order ix in one legacy tx.\n * Called at match time (engine-triggered), not at order placement.\n */\n async registerOrder(signed: SignedOrder): Promise<string> {\n const nonce = signed.order.nonce;\n const orderSigner = signed.order.maker;\n const [orderRecord] = PDA.orderRecord(orderSigner, nonce, this.programIds);\n\n const ed25519Ix = buildBatchedEd25519Instruction([signed]);\n\n const [orderStatus] = PDA.orderStatus(orderSigner, nonce, this.programIds);\n const registerIx = await this.program.methods\n .registerOrder(nonce)\n .accounts({\n payer: this.walletPubkey,\n clobConfig: this.configPda(),\n ixSysvar: IX_SYSVAR,\n orderSigner,\n orderRecord,\n orderStatus,\n systemProgram: SystemProgram.programId,\n })\n .instruction();\n\n return this._sendLegacyTxSig([ed25519Ix, registerIx]);\n }\n\n /** Register only if the PDA doesn't exist yet (idempotent). */\n private async registerOrderIfNeeded(signed: SignedOrder): Promise<void> {\n const [pda] = PDA.orderRecord(signed.order.maker, signed.order.nonce, this.programIds);\n const existing = await (this.program.account as any).signedOrderRecord.fetchNullable(pda);\n if (!existing) {\n await this.registerOrder(signed);\n }\n }\n\n /** Cancel an order — closes its OrderRecord PDA and returns rent to maker. */\n async cancelOrder(nonce: anchor.BN): Promise<TxResult> {\n const [orderRecord] = PDA.orderRecord(this.walletPubkey, nonce, this.programIds);\n const sig = await this.program.methods\n .cancelOrder(nonce)\n .accounts({\n maker: this.walletPubkey,\n orderRecord,\n systemProgram: SystemProgram.programId,\n })\n .rpc();\n return { signature: sig };\n }\n\n // ─── Admin ───────────────────────────────────────────────────────────────────\n\n async initialize(\n operators: PublicKey[],\n feeRecipient: PublicKey,\n feeRateBps: number\n ): Promise<TxResult> {\n const sig = await this.program.methods\n .initializeClob(\n operators,\n feeRecipient,\n feeRateBps,\n this.programIds.conditionalTokens\n )\n .accounts({\n owner: this.walletPubkey,\n clobConfig: this.configPda(),\n systemProgram: SystemProgram.programId,\n })\n .rpc();\n return { signature: sig };\n }\n\n async addOperator(operator: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .addOperator(operator)\n .accounts({\n admin: this.walletPubkey,\n clobConfig: this.configPda(),\n })\n .rpc();\n return { signature: sig };\n }\n\n async removeOperator(operator: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .removeOperator(operator)\n .accounts({\n admin: this.walletPubkey,\n clobConfig: this.configPda(),\n })\n .rpc();\n return { signature: sig };\n }\n\n async setPaused(paused: boolean): Promise<TxResult> {\n const sig = await this.program.methods\n .setPaused(paused)\n .accounts({\n admin: this.walletPubkey,\n clobConfig: this.configPda(),\n })\n .rpc();\n return { signature: sig };\n }\n\n async forceResetClob(\n programData: PublicKey,\n newAdmin: PublicKey,\n newOperators: PublicKey[],\n newFeeRecipient: PublicKey,\n newFeeRateBps: number\n ): Promise<TxResult> {\n const sig = await this.program.methods\n .forceResetClob(newAdmin, newOperators, newFeeRecipient, newFeeRateBps)\n .accounts({\n upgradeAuthority: this.walletPubkey,\n programData,\n clobConfig: this.configPda(),\n })\n .rpc();\n return { signature: sig };\n }\n\n // ─── Match instructions ───────────────────────────────────────────────────────\n\n /**\n * Build match_complementary instruction (no Ed25519 — OrderRecord PDAs used).\n *\n * remaining_accounts layout:\n * [seller, order_record, seller_token, seller_collateral, seller_position, sell_status] × N\n * [extraAccountMetaList, hookConfig, hookProgram]\n * [feeManagement, fee_config, mkt_override, company_ata, oracle_vault] (when fee > 0)\n */\n async buildMatchComplementaryIxs(\n takerSigned: SignedOrder,\n makersSigned: SignedOrder[],\n collateralMint: PublicKey,\n feeRecipient: PublicKey,\n operator: PublicKey,\n opts?: { marketOracleVault?: PublicKey; fillAmount?: anchor.BN },\n useTakerPrice: boolean = false,\n skipCrossingCheck: boolean = true,\n ): Promise<TransactionInstruction[]> {\n const condition = takerSigned.order.condition;\n const tokenId = takerSigned.order.tokenId;\n const taker = takerSigned.order.maker;\n const takerNonce = takerSigned.order.nonce;\n const fillAmount = opts?.fillAmount ?? new anchor.BN(\"18446744073709551615\");\n\n const [outcomeMint] = tokenId === 1\n ? PDA.yesMint(condition, this.programIds)\n : PDA.noMint(condition, this.programIds);\n\n const [takerOrderRecord] = PDA.orderRecord(taker, takerNonce, this.programIds);\n const takerCollateral = getAssociatedTokenAddressSync(collateralMint, taker);\n const takerTokenAccount = getAssociatedTokenAddressSync(outcomeMint, taker, false, TOKEN_2022_PROGRAM_ID);\n const [takerPosition] = PDA.position(condition, tokenId, taker, this.programIds);\n const [takerOrderStatus] = PDA.orderStatus(taker, takerNonce, this.programIds);\n\n // Per-maker remaining_accounts (6 each): seller, order_record, token, collateral, position, status\n const makerAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n for (const ms of makersSigned) {\n const seller = ms.order.maker;\n const [sellerRecord] = PDA.orderRecord(seller, ms.order.nonce, this.programIds);\n const sellerToken = getAssociatedTokenAddressSync(outcomeMint, seller, false, TOKEN_2022_PROGRAM_ID);\n const sellerCollateral = getAssociatedTokenAddressSync(collateralMint, seller);\n const [sellerPosition] = PDA.position(condition, tokenId, seller, this.programIds);\n const [sellerStatus] = PDA.orderStatus(seller, ms.order.nonce, this.programIds);\n\n makerAccounts.push(\n { pubkey: seller, isSigner: false, isWritable: false },\n { pubkey: sellerRecord, isSigner: false, isWritable: false },\n { pubkey: sellerToken, isSigner: false, isWritable: true },\n { pubkey: sellerCollateral, isSigner: false, isWritable: true },\n { pubkey: sellerPosition, isSigner: false, isWritable: true },\n { pubkey: sellerStatus, isSigner: false, isWritable: true },\n );\n }\n\n // Hook accounts (3): extraAccountMetaList, hookConfig, hookProgram\n const [extraAccountMetaList] = PDA.extraAccountMetaList(outcomeMint, this.programIds);\n const [hookConfig] = PDA.hookConfig(this.programIds);\n const hookAccounts = [\n { pubkey: extraAccountMetaList, isSigner: false, isWritable: false },\n { pubkey: hookConfig, isSigner: false, isWritable: false },\n { pubkey: this.programIds.hook, isSigner: false, isWritable: false },\n ];\n\n // Fee accounts (5, optional) — only added when market_fee_override PDA exists for this condition.\n // If PDA doesn't exist (new conditions without fee config), fee goes directly to fee_recipient.\n let feeAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n if (takerSigned.order.fee.gtn(0) && this.programIds.feeManagement && this.feeConfigOwner) {\n const companyAddr = await this.companyAddress();\n if (companyAddr) {\n const feeOverridePda = PDA.marketFeeOverride(condition, this.programIds)[0];\n const feeOverrideExists = await this.provider.connection.getAccountInfo(feeOverridePda);\n if (feeOverrideExists) {\n const oracleVault = opts?.marketOracleVault ?? this.walletPubkey;\n feeAccounts = [\n { pubkey: this.programIds.feeManagement!, isSigner: false, isWritable: false },\n { pubkey: PDA.feeConfig(this.feeConfigOwner!, this.programIds)[0], isSigner: false, isWritable: false },\n { pubkey: feeOverridePda, isSigner: false, isWritable: false },\n { pubkey: getAssociatedTokenAddressSync(collateralMint, companyAddr), isSigner: false, isWritable: true },\n { pubkey: oracleVault, isSigner: false, isWritable: true },\n ];\n }\n }\n }\n\n const matchIx = await this.program.methods\n .matchComplementary(takerNonce, fillAmount, useTakerPrice, skipCrossingCheck)\n .accounts({\n operator,\n payer: this.walletPubkey,\n clobConfig: this.configPda(),\n condition,\n taker,\n takerOrderRecord,\n takerCollateral,\n takerTokenAccount,\n takerPosition,\n takerOrderStatus,\n feeRecipient,\n outcomeMint,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n tokenProgram: TOKEN_PROGRAM_ID,\n token2022Program: TOKEN_2022_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .remainingAccounts([...makerAccounts, ...hookAccounts, ...feeAccounts])\n .instruction();\n\n return [matchIx];\n }\n\n /**\n * COMPLEMENTARY: 1 taker (BUY) + N makers (SELL), same tokenId.\n * Phase 1: register taker + all makers in parallel.\n * Phase 2: 1 atomic match tx.\n */\n private async matchComplementary(\n takerSigned: SignedOrder,\n makersSigned: SignedOrder[],\n collateralMint: PublicKey,\n feeRecipient: PublicKey,\n operatorWallet: anchor.Wallet,\n lookupTable?: AddressLookupTableAccount,\n opts?: { marketOracleVault?: PublicKey },\n ): Promise<TxResult> {\n await Promise.all([\n this.registerOrderIfNeeded(takerSigned),\n ...makersSigned.map(m => this.registerOrderIfNeeded(m)),\n ]);\n\n const ixs = await this.buildMatchComplementaryIxs(\n takerSigned, makersSigned, collateralMint, feeRecipient, operatorWallet.publicKey, opts,\n );\n const sig = await this.sendMatchTx(ixs, lookupTable, operatorWallet);\n return { signature: sig };\n }\n\n /**\n * 1 SELL taker vs N BUY makers.\n * Program now supports SELL-as-taker natively → 1 instruction with all BUY makers\n * in remaining_accounts (same structure as BUY taker case).\n */\n private async matchComplementarySellVsMultiBuy(\n sellTaker: SignedOrder,\n buyMakers: SignedOrder[],\n collateralMint: PublicKey,\n feeRecipient: PublicKey,\n operatorWallet: anchor.Wallet,\n lookupTable?: AddressLookupTableAccount,\n opts?: { marketOracleVault?: PublicKey },\n ): Promise<TxResult> {\n if (buyMakers.length === 0) {\n throw new InvalidParamError(\"COMPLEMENTARY: no BUY maker orders provided\");\n }\n\n // Aggregate crossing check: sum(buy_i.makerAmount) >= sell.takerAmount\n const sell = sellTaker.order;\n const totalBuyPayment = buyMakers.reduce(\n (acc, b) => acc + BigInt(b.order.makerAmount.toString()),\n BigInt(0),\n );\n const sellExpected = BigInt(sell.takerAmount.toString());\n if (totalBuyPayment < sellExpected) {\n throw new InvalidParamError(\n `COMPLEMENTARY: total buyer payments ${totalBuyPayment} < seller expected ${sellExpected}`,\n );\n }\n\n await Promise.all([\n this.registerOrderIfNeeded(sellTaker),\n ...buyMakers.map(m => this.registerOrderIfNeeded(m)),\n ]);\n\n // 1 instruction: SELL as taker, all BUY makers in remaining_accounts\n // use_taker_price=false: each BUY maker pays at their own price → SELL gets price improvement\n const ixs = await this.buildMatchComplementaryIxs(\n sellTaker, buyMakers, collateralMint, feeRecipient, operatorWallet.publicKey, opts,\n false,\n );\n const sig = await this.sendMatchTx(ixs, lookupTable, operatorWallet);\n return { signature: sig };\n }\n\n /**\n * MINT: 1 YES buyer (taker) + N NO buyers (makers).\n * Phase 1: register taker + all NO makers in parallel.\n * Phase 2: 1 atomic match tx.\n *\n * remaining_accounts per NO maker (5):\n * [order_record, buyer_no_token, buyer_no_collateral, buyer_no_position, no_order_status]\n */\n /** Build the match_mint_orders instruction (no signing, no sending). */\n private async _buildMintIx(\n yesSigned: SignedOrder,\n noMakers: SignedOrder[],\n collateralMint: PublicKey,\n operator: PublicKey,\n payer: PublicKey,\n ): Promise<TransactionInstruction> {\n const condition = yesSigned.order.condition;\n const taker = yesSigned.order.maker;\n const takerNonce = yesSigned.order.nonce;\n const fillAmount = new anchor.BN(\"18446744073709551615\");\n const clobConfig = this.configPda();\n\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const [mintAuthority] = PDA.mintAuthority(condition, this.programIds);\n const [collateralVault] = PDA.collateralVault(collateralMint, this.programIds);\n const [vaultTokenAccount] = PDA.vaultToken(collateralMint, this.programIds);\n const [takerOrderRecord] = PDA.orderRecord(taker, takerNonce, this.programIds);\n const takerCollateral = getAssociatedTokenAddressSync(collateralMint, taker);\n const takerYesToken = getAssociatedTokenAddressSync(yesMint, taker, false, TOKEN_2022_PROGRAM_ID);\n const [takerYesPosition] = PDA.position(condition, 1, taker, this.programIds);\n const [takerOrderStatus] = PDA.orderStatus(taker, takerNonce, this.programIds);\n\n const clobUsdcAta = getAssociatedTokenAddressSync(collateralMint, clobConfig, true);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n const [clobYesPos] = PDA.position(condition, 1, clobConfig, this.programIds);\n const [clobNoPos] = PDA.position(condition, 0, clobConfig, this.programIds);\n\n const [extraMetaYes] = PDA.extraAccountMetaList(yesMint, this.programIds);\n const [extraMetaNo] = PDA.extraAccountMetaList(noMint, this.programIds);\n const [hookConfig] = PDA.hookConfig(this.programIds);\n const hookProgram = this.programIds.hook;\n\n const remainingAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n for (const nm of noMakers) {\n const noMaker = nm.order.maker;\n const [noRecord] = PDA.orderRecord(noMaker, nm.order.nonce, this.programIds);\n const noToken = getAssociatedTokenAddressSync(noMint, noMaker, false, TOKEN_2022_PROGRAM_ID);\n const noCollateral = getAssociatedTokenAddressSync(collateralMint, noMaker);\n const [noPosition] = PDA.position(condition, 0, noMaker, this.programIds);\n const [noStatus] = PDA.orderStatus(noMaker, nm.order.nonce, this.programIds);\n remainingAccounts.push(\n { pubkey: noMaker, isSigner: false, isWritable: false },\n { pubkey: noRecord, isSigner: false, isWritable: false },\n { pubkey: noToken, isSigner: false, isWritable: true },\n { pubkey: noCollateral, isSigner: false, isWritable: true },\n { pubkey: noPosition, isSigner: false, isWritable: true },\n { pubkey: noStatus, isSigner: false, isWritable: true },\n );\n }\n remainingAccounts.push(\n { pubkey: extraMetaYes, isSigner: false, isWritable: false },\n { pubkey: extraMetaNo, isSigner: false, isWritable: false },\n { pubkey: hookConfig, isSigner: false, isWritable: false },\n { pubkey: hookProgram, isSigner: false, isWritable: false },\n );\n\n return this.program.methods\n .matchMintOrders(takerNonce, fillAmount, true)\n .accounts({\n operator, payer, clobConfig, condition, taker,\n takerOrderRecord, takerCollateral, takerYesToken,\n takerYesPosition, takerOrderStatus,\n clobUsdcAta, clobYesAta, clobNoAta,\n clobYesPosition: clobYesPos,\n clobNoPosition: clobNoPos,\n collateralVault, vaultTokenAccount, collateralMint,\n yesMint, noMint, mintAuthority,\n clobAuthority: clobConfig,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n collateralTokenProgram: TOKEN_PROGRAM_ID,\n token2022Program: TOKEN_2022_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .remainingAccounts(remainingAccounts)\n .instruction();\n }\n\n private async matchMintOrders(\n yesSigned: SignedOrder,\n noMakers: SignedOrder[],\n collateralMint: PublicKey,\n _feeRecipient: PublicKey,\n operatorWallet: anchor.Wallet,\n lookupTable?: AddressLookupTableAccount,\n ): Promise<TxResult> {\n await Promise.all([\n this.registerOrderIfNeeded(yesSigned),\n ...noMakers.map(m => this.registerOrderIfNeeded(m)),\n ]);\n const condition = yesSigned.order.condition;\n const clobConfig = this.configPda();\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n const matchIx = await this._buildMintIx(yesSigned, noMakers, collateralMint, operatorWallet.publicKey, this.walletPubkey);\n await this._ensureClobOutcomeAtas(yesMint, noMint, clobConfig, clobYesAta, clobNoAta);\n const sig = await this.sendMatchTx([matchIx], lookupTable, operatorWallet);\n return { signature: sig };\n }\n\n /**\n * MERGE: 1 YES seller (taker) + N NO sellers (makers).\n * Phase 1: register taker + all NO makers in parallel.\n * Phase 2: 1 atomic match tx.\n *\n * remaining_accounts per NO maker (5):\n * [order_record, seller_no_token, seller_no_collateral, seller_no_position, no_order_status]\n * After all makers, optional 5 fee accounts.\n */\n /** Build the match_merge_orders instruction (no signing, no sending). */\n private async _buildMergeIx(\n yesSigned: SignedOrder,\n noMakers: SignedOrder[],\n collateralMint: PublicKey,\n operator: PublicKey,\n payer: PublicKey,\n opts?: { marketOracleVault?: PublicKey },\n ): Promise<TransactionInstruction> {\n const condition = yesSigned.order.condition;\n const sellerYes = yesSigned.order.maker;\n const takerNonce = yesSigned.order.nonce;\n const fillAmount = new anchor.BN(\"18446744073709551615\");\n const clobConfig = this.configPda();\n\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const [collateralVault] = PDA.collateralVault(collateralMint, this.programIds);\n const [vaultTokenAccount] = PDA.vaultToken(collateralMint, this.programIds);\n const [takerOrderRecord] = PDA.orderRecord(sellerYes, takerNonce, this.programIds);\n const takerYesToken = getAssociatedTokenAddressSync(yesMint, sellerYes, false, TOKEN_2022_PROGRAM_ID);\n const [takerYesPosition] = PDA.position(condition, 1, sellerYes, this.programIds);\n const takerCollateral = getAssociatedTokenAddressSync(collateralMint, sellerYes);\n const [takerOrderStatus] = PDA.orderStatus(sellerYes, takerNonce, this.programIds);\n\n const clobUsdcAta = getAssociatedTokenAddressSync(collateralMint, clobConfig, true);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n const [clobYesPos] = PDA.position(condition, 1, clobConfig, this.programIds);\n const [clobNoPos] = PDA.position(condition, 0, clobConfig, this.programIds);\n\n const [extraMetaYes] = PDA.extraAccountMetaList(yesMint, this.programIds);\n const [extraMetaNo] = PDA.extraAccountMetaList(noMint, this.programIds);\n const [hookConfig] = PDA.hookConfig(this.programIds);\n const hookProgram = this.programIds.hook;\n\n const remainingAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n for (const nm of noMakers) {\n const noMaker = nm.order.maker;\n const [noRecord] = PDA.orderRecord(noMaker, nm.order.nonce, this.programIds);\n const noToken = getAssociatedTokenAddressSync(noMint, noMaker, false, TOKEN_2022_PROGRAM_ID);\n const noCollateral = getAssociatedTokenAddressSync(collateralMint, noMaker);\n const [noPosition] = PDA.position(condition, 0, noMaker, this.programIds);\n const [noStatus] = PDA.orderStatus(noMaker, nm.order.nonce, this.programIds);\n remainingAccounts.push(\n { pubkey: noMaker, isSigner: false, isWritable: false },\n { pubkey: noRecord, isSigner: false, isWritable: false },\n { pubkey: noToken, isSigner: false, isWritable: true },\n { pubkey: noCollateral, isSigner: false, isWritable: true },\n { pubkey: noPosition, isSigner: false, isWritable: true },\n { pubkey: noStatus, isSigner: false, isWritable: true },\n );\n }\n remainingAccounts.push(\n { pubkey: extraMetaYes, isSigner: false, isWritable: false },\n { pubkey: extraMetaNo, isSigner: false, isWritable: false },\n { pubkey: hookConfig, isSigner: false, isWritable: false },\n { pubkey: hookProgram, isSigner: false, isWritable: false },\n );\n\n if (yesSigned.order.fee.gtn(0) && this.programIds.feeManagement && this.feeConfigOwner) {\n const companyAddr = await this.companyAddress();\n if (companyAddr) {\n const feeOverridePda = PDA.marketFeeOverride(condition, this.programIds)[0];\n const feeOverrideExists = await this.provider.connection.getAccountInfo(feeOverridePda);\n if (feeOverrideExists) {\n const oracleVault = opts?.marketOracleVault ?? payer;\n remainingAccounts.push(\n { pubkey: this.programIds.feeManagement!, isSigner: false, isWritable: false },\n { pubkey: PDA.feeConfig(this.feeConfigOwner!, this.programIds)[0], isSigner: false, isWritable: false },\n { pubkey: feeOverridePda, isSigner: false, isWritable: false },\n { pubkey: getAssociatedTokenAddressSync(collateralMint, companyAddr), isSigner: false, isWritable: true },\n { pubkey: oracleVault, isSigner: false, isWritable: true },\n );\n }\n }\n }\n\n return this.program.methods\n .matchMergeOrders(takerNonce, fillAmount, true)\n .accounts({\n operator, payer, clobConfig, condition,\n taker: sellerYes,\n takerOrderRecord, takerYesToken, takerYesPosition,\n takerCollateral, takerOrderStatus,\n clobUsdcAta, clobYesAta, clobNoAta,\n clobYesPosition: clobYesPos,\n clobNoPosition: clobNoPos,\n collateralVault, vaultTokenAccount, collateralMint,\n yesMint, noMint,\n clobAuthority: clobConfig,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n collateralTokenProgram: TOKEN_PROGRAM_ID,\n token2022Program: TOKEN_2022_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .remainingAccounts(remainingAccounts)\n .instruction();\n }\n\n private async matchMergeOrders(\n yesSigned: SignedOrder,\n noMakers: SignedOrder[],\n collateralMint: PublicKey,\n _feeRecipient: PublicKey,\n operatorWallet: anchor.Wallet,\n lookupTable?: AddressLookupTableAccount,\n opts?: { marketOracleVault?: PublicKey },\n ): Promise<TxResult> {\n await Promise.all([\n this.registerOrderIfNeeded(yesSigned),\n ...noMakers.map(m => this.registerOrderIfNeeded(m)),\n ]);\n const condition = yesSigned.order.condition;\n const clobConfig = this.configPda();\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n const matchIx = await this._buildMergeIx(yesSigned, noMakers, collateralMint, operatorWallet.publicKey, this.walletPubkey, opts);\n await this._ensureClobOutcomeAtas(yesMint, noMint, clobConfig, clobYesAta, clobNoAta);\n const sig = await this.sendMatchTx([matchIx], lookupTable, operatorWallet);\n return { signature: sig };\n }\n\n /**\n * Auto-detect match type and execute 2-phase:\n * Phase 1 — register all orders (taker + makers) on-chain in parallel.\n * Phase 2 — 1 atomic match transaction.\n *\n * Detection (pure, no RPC):\n * taker.tokenId === makers[0].tokenId:\n * taker BUY + all makers SELL → COMPLEMENTARY\n * taker.tokenId !== makers[0].tokenId + all BUY → MINT\n * taker.tokenId !== makers[0].tokenId + all SELL → MERGE\n *\n * @param opts.marketOracleVault Oracle vault ATA for presale markets.\n * Omit for admin markets (payer used as placeholder).\n */\n async matchOrders(\n taker: SignedOrder,\n makers: SignedOrder[],\n opts?: { marketOracleVault?: PublicKey; operatorWallet?: anchor.Wallet },\n ): Promise<TxResult> {\n if (makers.length === 0) throw new InvalidParamError(\"At least 1 maker required\");\n\n const collateralMint = this.networkConfig.defaultCollateral.mint;\n const cfg = await this.fetchConfig();\n if (!cfg) throw new InvalidParamError(\"CLOB config not found on-chain\");\n const feeRecipient = cfg.feeRecipient;\n // operatorWallet = whitelisted CLOB operator (signs as operator).\n // this.provider.wallet = fee payer (pays tx fee + rent).\n // Both can be the same wallet (default) or separate.\n const operatorWallet = opts?.operatorWallet ?? (this.provider.wallet as anchor.Wallet);\n\n const alt = await this.ensureAlt(\n taker.order.condition,\n collateralMint,\n taker,\n makers,\n );\n\n const t = taker.order;\n const m0 = makers[0].order;\n const SIDE_BUY = 0;\n const SIDE_SELL = 1;\n\n if (t.tokenId === m0.tokenId) {\n // COMPLEMENTARY: one BUY + one or more SELLs (or vice versa), same tokenId.\n // Normalize to (buySigned, crossingSells) — filter out non-crossing makers.\n let buySignedOrder: SignedOrder, sellCandidates: SignedOrder[];\n\n if (t.side === SIDE_BUY && makers.every(m => m.order.side === SIDE_SELL)) {\n buySignedOrder = taker;\n sellCandidates = makers;\n } else if (t.side === SIDE_SELL && makers.every(m => m.order.side === SIDE_BUY)) {\n // 1 SELL taker vs N BUY makers:\n // Rust program only supports 1 BUY taker + N SELL makers.\n // Decompose into N instructions (BUY_i as taker, SELL as single maker) in 1 tx.\n return this.matchComplementarySellVsMultiBuy(taker, makers, collateralMint, feeRecipient, operatorWallet, alt, opts);\n } else {\n throw new InvalidParamError(\"COMPLEMENTARY requires one BUY and one or more SELLs on same tokenId\");\n }\n\n // No SDK-side crossing filter for BUY taker.\n // On-chain per-pair check is authoritative.\n // Build taker with limitPrice so on-chain check passes for all crossing SELLs.\n const finalSells = sellCandidates;\n\n return this.matchComplementary(buySignedOrder, finalSells, collateralMint, feeRecipient, operatorWallet, alt, opts);\n }\n\n const allBuy = t.side === SIDE_BUY && makers.every(m => m.order.side === SIDE_BUY);\n const allSell = t.side === SIDE_SELL && makers.every(m => m.order.side === SIDE_SELL);\n\n if (!allBuy && !allSell) throw new InvalidParamError(\"MINT/MERGE: all orders must be same side\");\n\n const takerIsYes = t.tokenId === 1 && makers.every(m => m.order.tokenId === 0);\n const takerIsNo = t.tokenId === 0 && makers.every(m => m.order.tokenId === 1);\n if (!takerIsYes && !takerIsNo) throw new InvalidParamError(\"MINT/MERGE: orders must be complementary YES+NO pair\");\n\n if (takerIsYes) {\n if (allBuy) return this.matchMintOrders(taker, makers, collateralMint, feeRecipient, operatorWallet, alt);\n return this.matchMergeOrders(taker, makers, collateralMint, feeRecipient, operatorWallet, alt, opts);\n }\n\n // NO taker + N YES makers: Rust program requires YES taker + NO makers.\n // Decompose into N calls — each YES maker becomes the program taker,\n // the NO buyer appears as the sole program maker. Order_status tracks\n // cumulative fills so the NO order is correctly partial-filled across calls.\n let lastResult!: TxResult;\n for (const yesMaker of makers) {\n if (allBuy) lastResult = await this.matchMintOrders(yesMaker, [taker], collateralMint, feeRecipient, operatorWallet, alt);\n else lastResult = await this.matchMergeOrders(yesMaker, [taker], collateralMint, feeRecipient, operatorWallet, alt, opts);\n }\n return lastResult;\n }\n\n /**\n * High-level match: caller passes price + quantity + keypair — SDK builds,\n * signs, and submits in one call. No manual amount calculation needed.\n *\n * Amounts are computed from each order's own limit `price` (percentage, e.g. 51 for 51%).\n * NEVER pass averageMatchedPrice — that is an engine output, not an order input.\n *\n * @param taker { keypair, condition, tokenId, side, price, quantity, nonce?, expiry? }\n * @param makers Array of same shape\n * @param decimals Collateral decimals (default 9 for USDS)\n */\n async matchOrdersFromPrice(\n taker: {\n keypair: { publicKey: PublicKey; secretKey: Uint8Array };\n condition: PublicKey;\n tokenId: number;\n side: 0 | 1;\n price: number;\n quantity: number;\n nonce?: BN;\n expiry?: BN;\n fee?: BN;\n taker?: PublicKey;\n },\n makers: Array<{\n keypair: { publicKey: PublicKey; secretKey: Uint8Array };\n condition: PublicKey;\n tokenId: number;\n side: 0 | 1;\n price: number;\n quantity: number;\n nonce?: BN;\n expiry?: BN;\n fee?: BN;\n taker?: PublicKey;\n }>,\n decimals: number = 9,\n opts?: { marketOracleVault?: PublicKey; operatorWallet?: anchor.Wallet },\n ): Promise<TxResult> {\n const nacl = await import(\"tweetnacl\");\n\n const buildSigned = (p: typeof taker) => {\n const order = buildOrderFromPrice({\n maker: p.keypair.publicKey,\n condition: p.condition,\n tokenId: p.tokenId,\n side: p.side,\n price: p.price,\n quantity: p.quantity,\n decimals,\n nonce: p.nonce,\n expiry: p.expiry,\n fee: p.fee,\n taker: p.taker,\n });\n const msg = serializeOrderToBytes(order);\n const sig = nacl.default.sign.detached(msg, p.keypair.secretKey);\n return { order, signature: sig };\n };\n\n const takerSigned = buildSigned(taker);\n\n // Sort makers by best price for taker before building signed orders:\n // direct BUY taker (side=0, same tokenId) → SELL makers cheapest first (ASC)\n // direct SELL taker (side=1, same tokenId) → BUY makers highest first (DESC)\n // mirror BUY YES taker (tokenId=1,side=0) → BUY NO makers: high NO price = low\n // effective price for taker → sort NO makers DESC (highest NO price fills first)\n // mirror SELL YES taker (tokenId=1,side=1) → SELL NO makers: low NO price = high\n // effective payout → sort NO makers ASC (lowest NO price fills first = best merge)\n const sortedMakers = [...makers].sort((a, b) => {\n const sameToken = a.tokenId === taker.tokenId && b.tokenId === taker.tokenId;\n const isDirectBuy = taker.side === 0 && sameToken;\n const isDirectSell = taker.side === 1 && sameToken;\n const isMint = taker.side === 0 && taker.tokenId === 1;\n const isMerge = taker.side === 1 && taker.tokenId === 1;\n if (isDirectBuy) return a.price - b.price; // SELL ASC: cheapest first\n if (isDirectSell) return b.price - a.price; // BUY DESC: highest first\n if (isMint) return b.price - a.price; // NO DESC: highest NO = lowest effective\n if (isMerge) return a.price - b.price; // NO ASC: lowest NO = highest payout\n return 0;\n });\n\n const makersSigned = sortedMakers.map(buildSigned);\n return this.matchOrders(takerSigned, makersSigned, opts);\n }\n\n /**\n * Build an unsigned VersionedTransaction for a set of match instructions.\n * Callers sign and send externally — mirrors createQuestionAdmin pattern.\n */\n private async _buildUnsignedVtx(\n instructions: TransactionInstruction[],\n lookupTable: AddressLookupTableAccount | undefined,\n payer: PublicKey,\n ): Promise<VersionedTransaction> {\n const { connection } = this.provider;\n const { blockhash } = await connection.getLatestBlockhash();\n const cuLimit = ComputeBudgetProgram.setComputeUnitLimit({ units: 1_400_000 });\n const heapFrame = ComputeBudgetProgram.requestHeapFrame({ bytes: 262144 });\n const message = new TransactionMessage({\n payerKey: payer,\n recentBlockhash: blockhash,\n instructions: [cuLimit, heapFrame, ...instructions],\n }).compileToV0Message(lookupTable ? [lookupTable] : []);\n return new VersionedTransaction(message);\n }\n\n /**\n * Build unsigned VersionedTransaction(s) for matching orders.\n *\n * Mirrors createQuestionAdmin pattern — SDK registers orders internally but\n * returns the match tx unsigned. BE signs with both keypairs and sends:\n *\n * const [vtx] = await sdk.clob.buildMatchOrdersTx(taker, makers, operatorPk, payerPk);\n * vtx.sign([feePayerKeypair, operatorKeypair]);\n * await connection.sendRawTransaction(vtx.serialize());\n *\n * Returns an array because NO-taker MINT/MERGE decomposes into N txs (one per YES maker).\n * Most direct/single-pair cases return a single-element array.\n *\n * @param operator - Whitelisted CLOB operator pubkey (must sign)\n * @param payer - Fee payer pubkey (must sign, pays tx fee + rent)\n */\n async buildMatchOrdersTx(\n taker: SignedOrder,\n makers: SignedOrder[],\n operator: PublicKey,\n payer: PublicKey,\n opts?: { marketOracleVault?: PublicKey },\n ): Promise<VersionedTransaction[]> {\n if (makers.length === 0) throw new InvalidParamError(\"At least 1 maker required\");\n\n const collateralMint = this.networkConfig.defaultCollateral.mint;\n const cfg = await this.fetchConfig();\n if (!cfg) throw new InvalidParamError(\"CLOB config not found on-chain\");\n const feeRecipient = cfg.feeRecipient;\n\n const alt = await this.ensureAlt(taker.order.condition, collateralMint, taker, makers);\n\n const t = taker.order;\n const m0 = makers[0].order;\n const SIDE_BUY = 0;\n const SIDE_SELL = 1;\n\n // ── COMPLEMENTARY ──────────────────────────────────────────────────────────\n if (t.tokenId === m0.tokenId) {\n let buySignedOrder: SignedOrder, sellCandidates: SignedOrder[];\n if (t.side === SIDE_BUY && makers.every(m => m.order.side === SIDE_SELL)) {\n buySignedOrder = taker; sellCandidates = makers;\n } else if (t.side === SIDE_SELL && makers.every(m => m.order.side === SIDE_BUY)) {\n // SELL taker: decompose into N ixs packed in 1 tx\n await Promise.all([\n this.registerOrderIfNeeded(taker),\n ...makers.map(m => this.registerOrderIfNeeded(m)),\n ]);\n const ixs: TransactionInstruction[] = [];\n for (const buyMaker of makers) {\n const built = await this.buildMatchComplementaryIxs(\n buyMaker, [taker], collateralMint, feeRecipient, operator,\n opts, true, true,\n );\n ixs.push(...built);\n }\n return [await this._buildUnsignedVtx(ixs, alt, payer)];\n } else {\n throw new InvalidParamError(\"COMPLEMENTARY requires one BUY and one or more SELLs on same tokenId\");\n }\n await Promise.all([\n this.registerOrderIfNeeded(buySignedOrder),\n ...sellCandidates.map(m => this.registerOrderIfNeeded(m)),\n ]);\n const ixs = await this.buildMatchComplementaryIxs(\n buySignedOrder, sellCandidates, collateralMint, feeRecipient, operator, opts,\n );\n return [await this._buildUnsignedVtx(ixs, alt, payer)];\n }\n\n // ── MINT / MERGE ───────────────────────────────────────────────────────────\n const allBuy = t.side === SIDE_BUY && makers.every(m => m.order.side === SIDE_BUY);\n const allSell = t.side === SIDE_SELL && makers.every(m => m.order.side === SIDE_SELL);\n if (!allBuy && !allSell) throw new InvalidParamError(\"MINT/MERGE: all orders must be same side\");\n\n const takerIsYes = t.tokenId === 1 && makers.every(m => m.order.tokenId === 0);\n const takerIsNo = t.tokenId === 0 && makers.every(m => m.order.tokenId === 1);\n if (!takerIsYes && !takerIsNo) throw new InvalidParamError(\"MINT/MERGE: orders must be complementary YES+NO pair\");\n\n const condition = t.condition;\n const clobConfig = this.configPda();\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n\n if (takerIsYes) {\n // 1 YES taker + N NO makers → 1 tx\n await Promise.all([\n this.registerOrderIfNeeded(taker),\n ...makers.map(m => this.registerOrderIfNeeded(m)),\n ]);\n await this._ensureClobOutcomeAtas(yesMint, noMint, clobConfig, clobYesAta, clobNoAta);\n const ix = allBuy\n ? await this._buildMintIx(taker, makers, collateralMint, operator, payer)\n : await this._buildMergeIx(taker, makers, collateralMint, operator, payer, opts);\n return [await this._buildUnsignedVtx([ix], alt, payer)];\n }\n\n // NO taker + N YES makers → 1 tx per YES maker (order_status tracks partial fills)\n const vtxs: VersionedTransaction[] = [];\n for (const yesMaker of makers) {\n await Promise.all([\n this.registerOrderIfNeeded(yesMaker),\n this.registerOrderIfNeeded(taker),\n ]);\n await this._ensureClobOutcomeAtas(yesMint, noMint, clobConfig, clobYesAta, clobNoAta);\n const ix = allBuy\n ? await this._buildMintIx(yesMaker, [taker], collateralMint, operator, payer)\n : await this._buildMergeIx(yesMaker, [taker], collateralMint, operator, payer, opts);\n vtxs.push(await this._buildUnsignedVtx([ix], alt, payer));\n }\n return vtxs;\n }\n\n // ─── Queries ─────────────────────────────────────────────────────────────────\n\n async fetchConfig(): Promise<ClobConfig | null> {\n try {\n const acc = await (this.program.account as any).clobConfig.fetch(this.configPda());\n return {\n owner: acc.owner,\n operators: acc.operators as PublicKey[],\n operatorsLen: acc.operatorsLen,\n feeRecipient: acc.feeRecipient,\n feeRateBps: acc.feeRateBps,\n conditionalTokensProgram: acc.conditionalTokensProgram,\n isPaused: acc.isPaused,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchOrderStatus(maker: PublicKey, nonce: anchor.BN): Promise<OrderStatus | null> {\n try {\n const [pda] = PDA.orderStatus(maker, nonce, this.programIds);\n const acc = await (this.program.account as any).orderStatus.fetch(pda);\n return {\n maker: acc.maker,\n nonce: acc.nonce,\n filledAmount: acc.filledAmount,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchOrderRecord(maker: PublicKey, nonce: anchor.BN): Promise<{\n maker: PublicKey; condition: PublicKey; tokenId: number; side: number;\n makerAmount: anchor.BN; takerAmount: anchor.BN; nonce: anchor.BN;\n expiry: anchor.BN; fee: anchor.BN; taker: PublicKey; signer: PublicKey;\n } | null> {\n try {\n const [pda] = PDA.orderRecord(maker, nonce, this.programIds);\n const acc = await (this.program.account as any).signedOrderRecord.fetch(pda);\n return acc;\n } catch {\n return null;\n }\n }\n}\n","import * as anchor from \"@coral-xyz/anchor\";\nimport { PublicKey, SystemProgram, TransactionInstruction } from \"@solana/web3.js\";\nimport BN from \"bn.js\";\nimport { ProgramIds } from \"../config/networks\";\nimport { PDA } from \"../pda\";\nimport { QuestionFee, TxResult } from \"../types\";\n\nexport class FeeManagementClient {\n constructor(\n private readonly program: anchor.Program,\n private readonly provider: anchor.AnchorProvider,\n private readonly programIds: ProgramIds,\n ) {}\n\n async initFeeConfig(\n admin: PublicKey,\n companyAddress: PublicKey,\n referralAddress: PublicKey,\n presaleRevenueAddress: PublicKey,\n investorsMarketRev: number,\n companyMarketRev: number,\n agentsPresaleRev: number,\n companyPresaleRev: number,\n authority: PublicKey,\n payer: PublicKey,\n ): Promise<TxResult> {\n const [feeConfigPda] = PDA.feeConfig(authority, this.programIds);\n const sig = await this.program.methods\n .initialize({\n admin,\n companyAddress,\n referralAddress,\n presaleRevenueAddress,\n investorsMarketRev,\n companyMarketRev,\n agentsPresaleRev,\n companyPresaleRev,\n })\n .accounts({\n authority,\n payer,\n feeConfig: feeConfigPda,\n systemProgram: SystemProgram.programId,\n })\n .signers([])\n .rpc();\n return { signature: sig };\n }\n\n async fetchFeeConfig(owner: PublicKey): Promise<any | null> {\n try {\n const [pda] = PDA.feeConfig(owner, this.programIds);\n return await (this.program.account as any).feeConfig.fetch(pda);\n } catch {\n return null;\n }\n }\n\n /**\n * Fetch per-question fees for a condition.\n * Returns null if no fees have been set yet.\n */\n async fetchQuestionFee(conditionPda: PublicKey): Promise<QuestionFee | null> {\n try {\n const [pda] = PDA.questionFee(conditionPda, this.programIds);\n const acc = await (this.program.account as any).questionFee.fetch(pda);\n return {\n conditionId: new Uint8Array(acc.conditionId),\n mergeFee: acc.mergeFee as BN,\n redeemFee: acc.redeemFee as BN,\n swapFee: acc.swapFee as BN,\n bump: acc.bump as number,\n };\n } catch {\n return null;\n }\n }\n\n /**\n * Set per-question fees for a condition.\n * @param conditionPda - condition PDA from the question\n * @param mergeFee - fee out of FEE_DENOMINATOR (1_000_000), e.g. 2_000 = 0.2%\n * @param redeemFee - fee out of FEE_DENOMINATOR\n * @param swapFee - trading fee out of FEE_DENOMINATOR\n * @param feeConfigOwner - pubkey that owns the fee_config PDA (usually market deployer)\n * @param authority - signer authorized in fee_config whitelist / admin / owner\n * @param payer - rent + tx fee payer\n */\n async updateFeeConfig(\n companyAddress: PublicKey,\n referralAddress: PublicKey,\n presaleRevenueAddress: PublicKey,\n investorsMarketRev: number,\n companyMarketRev: number,\n agentsPresaleRev: number,\n companyPresaleRev: number,\n authority: PublicKey,\n payer: PublicKey,\n ): Promise<TxResult> {\n const [feeConfigPda] = PDA.feeConfig(authority, this.programIds);\n const sig = await this.program.methods\n .updateConfig({\n companyAddress,\n referralAddress,\n presaleRevenueAddress,\n investorsMarketRev,\n companyMarketRev,\n agentsPresaleRev,\n companyPresaleRev,\n })\n .accounts({\n authority,\n payer,\n feeConfig: feeConfigPda,\n })\n .signers([])\n .rpc();\n return { signature: sig };\n }\n\n async setMarketFeeOverride(\n conditionPda: PublicKey,\n investors: number,\n company: number,\n isAdmin: boolean,\n feeConfigOwner: PublicKey,\n authority: PublicKey,\n payer: PublicKey,\n ): Promise<TxResult> {\n const [feeConfigPda] = PDA.feeConfig(feeConfigOwner, this.programIds);\n const [marketFeeOverridePda] = PDA.marketFeeOverride(conditionPda, this.programIds);\n\n const sig = await this.program.methods\n .setMarketFeeOverride(conditionPda, investors, company, isAdmin)\n .accounts({\n authority,\n payer,\n feeConfig: feeConfigPda,\n marketFeeOverride: marketFeeOverridePda,\n systemProgram: SystemProgram.programId,\n })\n .signers([])\n .rpc();\n\n return { signature: sig };\n }\n\n async buildDistributeFeeIx(\n conditionPda: PublicKey,\n amount: BN,\n feeConfigOwner: PublicKey,\n sourceAta: PublicKey,\n companyAta: PublicKey,\n marketOracleVault: PublicKey,\n authority: PublicKey,\n ): Promise<TransactionInstruction> {\n const [feeConfigPda] = PDA.feeConfig(feeConfigOwner, this.programIds);\n const [marketFeeOverridePda] = PDA.marketFeeOverride(conditionPda, this.programIds);\n return this.program.methods\n .distributeFee(conditionPda, amount)\n .accounts({\n feeConfig: feeConfigPda,\n marketFeeOverride: marketFeeOverridePda,\n authority,\n sourceAta,\n companyAta,\n marketOracleVault,\n tokenProgram: new PublicKey(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"),\n })\n .instruction();\n }\n\n async distributeFee(\n conditionPda: PublicKey,\n amount: BN,\n feeConfigOwner: PublicKey,\n sourceAta: PublicKey,\n companyAta: PublicKey,\n marketOracleVault: PublicKey,\n authority: PublicKey,\n ): Promise<TxResult> {\n const [feeConfigPda] = PDA.feeConfig(feeConfigOwner, this.programIds);\n const [marketFeeOverridePda] = PDA.marketFeeOverride(conditionPda, this.programIds);\n\n const sig = await this.program.methods\n .distributeFee(conditionPda, amount)\n .accounts({\n feeConfig: feeConfigPda,\n marketFeeOverride: marketFeeOverridePda,\n authority,\n sourceAta,\n companyAta,\n marketOracleVault,\n tokenProgram: new PublicKey(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"),\n })\n .signers([])\n .rpc();\n\n return { signature: sig };\n }\n\n async setQuestionFee(\n conditionPda: PublicKey,\n mergeFee: BN,\n redeemFee: BN,\n swapFee: BN,\n feeConfigOwner: PublicKey,\n authority: PublicKey,\n payer: PublicKey,\n ): Promise<TxResult> {\n const [feeConfigPda] = PDA.feeConfig(feeConfigOwner, this.programIds);\n const [questionFeePda] = PDA.questionFee(conditionPda, this.programIds);\n\n const sig = await this.program.methods\n .setQuestionFee(\n Array.from(conditionPda.toBytes()),\n mergeFee,\n redeemFee,\n swapFee,\n )\n .accounts({\n authority,\n payer,\n feeConfig: feeConfigPda,\n questionFee: questionFeePda,\n systemProgram: SystemProgram.programId,\n })\n .signers([])\n .rpc();\n\n return { signature: sig };\n }\n}\n","import * as anchor from \"@coral-xyz/anchor\";\nimport { PublicKey, SystemProgram, Transaction } from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n} from \"@solana/spl-token\";\nimport { PDA } from \"../pda\";\nimport { ProgramIds } from \"../config/networks\";\n\nexport interface PresaleInfo {\n version: number;\n questionMarketConfig: PublicKey;\n presaleIndex: anchor.BN;\n creator: PublicKey;\n currencyMint: PublicKey;\n qtMint: PublicKey;\n price: anchor.BN;\n startTime: anchor.BN;\n endTime: anchor.BN;\n status: \"pending\" | \"approved\" | \"rejected\";\n soldTokenAmount: anchor.BN;\n initialTokenAmountCreator: anchor.BN;\n agentsRev: number;\n companyRev: number;\n referralAddress: PublicKey;\n companyAddress: PublicKey;\n isDistributeRevenue: boolean;\n creatorClaimableRevenue: anchor.BN;\n bump: number;\n}\n\nexport interface UserBuyRecord {\n user: PublicKey;\n presale: PublicKey;\n currencyAmount: anchor.BN;\n bump: number;\n}\n\nexport class PresaleClient {\n private readonly program: anchor.Program;\n private readonly provider: anchor.AnchorProvider;\n private readonly programIds: ProgramIds;\n\n constructor(\n program: anchor.Program,\n provider: anchor.AnchorProvider,\n programIds: ProgramIds,\n ) {\n this.program = program;\n this.provider = provider;\n this.programIds = programIds;\n }\n\n get walletPubkey(): PublicKey {\n return this.provider.wallet.publicKey;\n }\n\n presalePda(questionMarketConfig: PublicKey, presaleIndex: anchor.BN): PublicKey {\n return PDA.presale(questionMarketConfig, presaleIndex, this.programIds)[0];\n }\n\n qtMintPda(presalePda: PublicKey): PublicKey {\n return PDA.qtMint(presalePda, this.programIds)[0];\n }\n\n qtAuthorityPda(presalePda: PublicKey): PublicKey {\n return PDA.qtAuthority(presalePda, this.programIds)[0];\n }\n\n userBuyRecordPda(presalePda: PublicKey, user: PublicKey): PublicKey {\n return PDA.userBuyRecord(presalePda, user, this.programIds)[0];\n }\n\n /**\n * Buy MST tokens during presale.\n * qtAmount: amount of MST to receive (9 decimals).\n * USDC cost = qtAmount * price / 1e9.\n */\n async buy(\n presalePda: PublicKey,\n qtAmount: anchor.BN,\n buyer: PublicKey = this.walletPubkey,\n payer: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const presale = await this.fetchPresale(presalePda);\n if (!presale) throw new Error(`Presale not found: ${presalePda.toBase58()}`);\n\n const qtMint = presale.qtMint;\n const currencyMint = presale.currencyMint;\n const qtAuthority = this.qtAuthorityPda(presalePda);\n const userBuyRecord = this.userBuyRecordPda(presalePda, buyer);\n\n const buyerQtAta = getAssociatedTokenAddressSync(qtMint, buyer);\n const buyerCurrencyAta = getAssociatedTokenAddressSync(currencyMint, buyer);\n const presaleVault = getAssociatedTokenAddressSync(currencyMint, presalePda, true);\n\n return this.program.methods\n .buy(qtAmount)\n .accounts({\n buyer,\n payer,\n presale: presalePda,\n qtMint,\n qtAuthority,\n buyerQtAta,\n buyerCurrencyAta,\n presaleVault,\n currencyMint,\n userBuyRecord,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n /**\n * Refund: burn user's MST and return USDC.\n * Only callable when presale status = Rejected.\n */\n async refund(\n presalePda: PublicKey,\n user: PublicKey = this.walletPubkey,\n payer: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const presale = await this.fetchPresale(presalePda);\n if (!presale) throw new Error(`Presale not found: ${presalePda.toBase58()}`);\n\n const qtMint = presale.qtMint;\n const currencyMint = presale.currencyMint;\n const userBuyRecord = this.userBuyRecordPda(presalePda, user);\n\n const userQtAta = getAssociatedTokenAddressSync(qtMint, user);\n const userCurrencyAta = getAssociatedTokenAddressSync(currencyMint, user);\n const presaleVault = getAssociatedTokenAddressSync(currencyMint, presalePda, true);\n\n const tx = await this.program.methods\n .refund()\n .accounts({\n user,\n payer,\n presale: presalePda,\n qtMint,\n userQtAta,\n userCurrencyAta,\n presaleVault,\n currencyMint,\n userBuyRecord,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n tx.feePayer = payer;\n return tx;\n }\n\n // ─── Queries ─────────────────────────────────────────────────────────────────\n\n async fetchPresale(presalePda: PublicKey): Promise<PresaleInfo | null> {\n try {\n const acc = await (this.program.account as any).presaleAccount.fetch(presalePda);\n const rawStatus = acc.status;\n const status: PresaleInfo[\"status\"] =\n rawStatus.approved !== undefined ? \"approved\" :\n rawStatus.rejected !== undefined ? \"rejected\" : \"pending\";\n return {\n version: acc.version,\n questionMarketConfig: acc.questionMarketConfig,\n presaleIndex: acc.presaleIndex,\n creator: acc.creator,\n currencyMint: acc.currencyMint,\n qtMint: acc.qtMint,\n price: acc.price,\n startTime: acc.startTime,\n endTime: acc.endTime,\n status,\n soldTokenAmount: acc.soldTokenAmount,\n initialTokenAmountCreator: acc.initialTokenAmountCreator,\n agentsRev: acc.agentsRev,\n companyRev: acc.companyRev,\n referralAddress: acc.referralAddress,\n companyAddress: acc.companyAddress,\n isDistributeRevenue: acc.isDistributeRevenue,\n creatorClaimableRevenue: acc.creatorClaimableRevenue,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchUserBuyRecord(presalePda: PublicKey, user: PublicKey): Promise<UserBuyRecord | null> {\n try {\n const pda = this.userBuyRecordPda(presalePda, user);\n const acc = await (this.program.account as any).userBuyRecord.fetch(pda);\n return {\n user: acc.user,\n presale: acc.presale,\n currencyAmount: acc.currencyAmount,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n}\n","import * as anchor from \"@coral-xyz/anchor\";\nimport { PublicKey, SystemProgram, Transaction } from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n} from \"@solana/spl-token\";\nimport { PDA } from \"../pda\";\nimport { ProgramIds } from \"../config/networks\";\n\nexport interface MarketOracleInfo {\n version: number;\n question: PublicKey;\n questionMarketConfig: PublicKey;\n currencyMint: PublicKey;\n creator: PublicKey;\n qtMint: PublicKey;\n feesDistributed: boolean;\n qtTotalSupply: anchor.BN;\n totalClaimed: anchor.BN;\n bump: number;\n}\n\nexport interface UserClaimRecord {\n user: PublicKey;\n marketOracle: PublicKey;\n hasClaimed: boolean;\n bump: number;\n}\n\nexport class MarketOracleClient {\n private readonly program: anchor.Program;\n private readonly provider: anchor.AnchorProvider;\n private readonly programIds: ProgramIds;\n\n constructor(\n program: anchor.Program,\n provider: anchor.AnchorProvider,\n programIds: ProgramIds,\n ) {\n this.program = program;\n this.provider = provider;\n this.programIds = programIds;\n }\n\n get walletPubkey(): PublicKey {\n return this.provider.wallet.publicKey;\n }\n\n marketOraclePda(questionPda: PublicKey): PublicKey {\n return PDA.marketOraclePda(questionPda, this.programIds)[0];\n }\n\n userClaimRecordPda(marketOraclePda: PublicKey, user: PublicKey): PublicKey {\n return PDA.userClaimRecord(marketOraclePda, user, this.programIds)[0];\n }\n\n /**\n * User burns their MST and claims proportional share of oracle vault USDC.\n * Call after market.collectTradingFee snapshotted qt supply.\n */\n async claimFeesShare(\n marketOraclePda: PublicKey,\n user: PublicKey = this.walletPubkey,\n payer: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const oracle = await this.fetchMarketOracle(marketOraclePda);\n if (!oracle) throw new Error(`MarketOracle not found: ${marketOraclePda.toBase58()}`);\n\n const currencyMint = oracle.currencyMint;\n const qtMint = oracle.qtMint;\n const marketOracleVault = getAssociatedTokenAddressSync(currencyMint, marketOraclePda, true);\n const userQtAta = getAssociatedTokenAddressSync(qtMint, user);\n const userCurrencyAta = getAssociatedTokenAddressSync(currencyMint, user);\n const userClaimRecord = this.userClaimRecordPda(marketOraclePda, user);\n\n return this.program.methods\n .claimFeesShare()\n .accounts({\n user,\n payer,\n marketOracle: marketOraclePda,\n marketOracleVault,\n currencyMint,\n qtMint,\n userQtAta,\n userCurrencyAta,\n userClaimRecord,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n // ─── Queries ─────────────────────────────────────────────────────────────────\n\n async fetchMarketOracle(marketOraclePda: PublicKey): Promise<MarketOracleInfo | null> {\n try {\n const acc = await (this.program.account as any).marketOracleAccount.fetch(marketOraclePda);\n return {\n version: acc.version,\n question: acc.question,\n questionMarketConfig: acc.questionMarketConfig,\n currencyMint: acc.currencyMint,\n creator: acc.creator,\n qtMint: acc.qtMint,\n feesDistributed: acc.feesDistributed,\n qtTotalSupply: acc.qtTotalSupply,\n totalClaimed: acc.totalClaimed,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchUserClaimRecord(marketOraclePda: PublicKey, user: PublicKey): Promise<UserClaimRecord | null> {\n try {\n const pda = this.userClaimRecordPda(marketOraclePda, user);\n const acc = await (this.program.account as any).userClaimRecord.fetch(pda);\n return {\n user: acc.user,\n marketOracle: acc.marketOracle,\n hasClaimed: acc.hasClaimed,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n}\n","import * as anchor from \"@coral-xyz/anchor\";\nimport { PublicKey, SystemProgram, Transaction } from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n} from \"@solana/spl-token\";\nimport { PDA } from \"../pda\";\nimport { ProgramIds } from \"../config/networks\";\n\nexport interface AdminConfigInfo {\n version: number;\n owner: PublicKey;\n collateralMint: PublicKey;\n authorizedCaller: PublicKey;\n adminWhitelist: PublicKey[];\n whitelist: PublicKey[];\n bump: number;\n}\n\nexport interface ClaimRecordInfo {\n conditionId: number[];\n amount: anchor.BN;\n bump: number;\n}\n\nexport class AdminClient {\n private readonly program: anchor.Program;\n private readonly provider: anchor.AnchorProvider;\n private readonly programIds: ProgramIds;\n\n constructor(\n program: anchor.Program,\n provider: anchor.AnchorProvider,\n programIds: ProgramIds,\n ) {\n this.program = program;\n this.provider = provider;\n this.programIds = programIds;\n }\n\n get walletPubkey(): PublicKey {\n return this.provider.wallet.publicKey;\n }\n\n get configPda(): PublicKey {\n const [pda] = PDA.adminConfig(this.walletPubkey, this.programIds);\n return pda;\n }\n\n configPdaFor(owner: PublicKey): PublicKey {\n const [pda] = PDA.adminConfig(owner, this.programIds);\n return pda;\n }\n\n adminVault(owner: PublicKey, collateralMint: PublicKey): PublicKey {\n const configPda = this.configPdaFor(owner);\n return getAssociatedTokenAddressSync(collateralMint, configPda, true);\n }\n\n // ─── Fetch ────────────────────────────────────────────────────────────────\n\n async fetchConfig(owner = this.walletPubkey): Promise<AdminConfigInfo | null> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n try {\n const acc = await (this.program.account as any).adminConfig.fetch(configPda);\n return {\n version: acc.version,\n owner: acc.owner,\n collateralMint: acc.collateralMint,\n authorizedCaller: acc.authorizedCaller,\n adminWhitelist: acc.adminWhitelist.slice(0, acc.adminWhitelistLen),\n whitelist: acc.whitelist.slice(0, acc.whitelistLen),\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchClaimRecord(conditionId: Uint8Array): Promise<ClaimRecordInfo | null> {\n const [pda] = PDA.claimRecord(conditionId, this.programIds);\n try {\n const acc = await (this.program.account as any).claimRecord.fetch(pda);\n return {\n conditionId: acc.conditionId,\n amount: acc.amount,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n // ─── Instructions ─────────────────────────────────────────────────────────\n\n async initialize(\n authorizedCaller: PublicKey,\n collateralMint: PublicKey,\n owner: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n const vault = getAssociatedTokenAddressSync(collateralMint, configPda, true);\n\n return this.program.methods\n .initialize(authorizedCaller)\n .accounts({\n owner,\n config: configPda,\n collateralMint,\n adminVault: vault,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n async addAdmin(\n address: PublicKey,\n owner: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n return this.program.methods\n .addAdmin(address)\n .accounts({ owner, config: configPda })\n .transaction();\n }\n\n async removeAdmin(\n address: PublicKey,\n owner: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n return this.program.methods\n .removeAdmin(address)\n .accounts({ owner, config: configPda })\n .transaction();\n }\n\n async addToWhitelist(\n address: PublicKey,\n owner: PublicKey,\n admin: PublicKey = this.walletPubkey,\n payer: PublicKey = admin,\n ): Promise<Transaction> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n return this.program.methods\n .addToWhitelist(address)\n .accounts({ admin, payer, config: configPda })\n .transaction();\n }\n\n async removeFromWhitelist(\n address: PublicKey,\n owner: PublicKey,\n admin: PublicKey = this.walletPubkey,\n payer: PublicKey = admin,\n ): Promise<Transaction> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n return this.program.methods\n .removeFromWhitelist(address)\n .accounts({ admin, payer, config: configPda })\n .transaction();\n }\n\n /**\n * Normally called via CPI from question_market (authorized_caller signs).\n * For testing: initialize with authorizedCaller = wallet, call directly.\n */\n async setPresaleAmount(\n conditionId: Uint8Array,\n amount: anchor.BN,\n owner: PublicKey = this.walletPubkey,\n caller: PublicKey = this.walletPubkey,\n payer: PublicKey = caller,\n ): Promise<Transaction> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n const [claimRecord] = PDA.claimRecord(conditionId, this.programIds);\n return this.program.methods\n .setPresaleAmount(Array.from(conditionId), amount)\n .accounts({\n caller,\n payer,\n config: configPda,\n claimRecord,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n async claim(\n conditionId: Uint8Array,\n collateralMint: PublicKey,\n owner: PublicKey,\n claimer: PublicKey = this.walletPubkey,\n payer: PublicKey = claimer,\n ): Promise<Transaction> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n const [claimRecord] = PDA.claimRecord(conditionId, this.programIds);\n const vault = getAssociatedTokenAddressSync(collateralMint, configPda, true);\n const claimerAta = getAssociatedTokenAddressSync(collateralMint, claimer);\n\n return this.program.methods\n .claim(Array.from(conditionId))\n .accounts({\n claimer,\n payer,\n config: configPda,\n adminVault: vault,\n claimRecord,\n claimerTokenAccount: claimerAta,\n tokenProgram: TOKEN_PROGRAM_ID,\n })\n .transaction();\n }\n\n async updateConfig(\n authorizedCaller: PublicKey,\n owner: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n return this.program.methods\n .updateConfig(authorizedCaller)\n .accounts({ owner, config: configPda })\n .transaction();\n }\n\n /**\n * BOTMM sends USDC from their wallet to the market_oracle vault for a condition.\n * Whitelist-only. No amount validation — caller responsible.\n */\n async distributeMarket(\n conditionId: Uint8Array,\n amount: anchor.BN,\n collateralMint: PublicKey,\n marketOracleVault: PublicKey,\n owner: PublicKey,\n claimer: PublicKey = this.walletPubkey,\n payer: PublicKey = claimer,\n ): Promise<Transaction> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n const claimerTokenAcct = getAssociatedTokenAddressSync(collateralMint, claimer);\n\n return this.program.methods\n .distributeMarket(Array.from(conditionId), amount)\n .accounts({\n claimer,\n payer,\n config: configPda,\n claimerTokenAccount: claimerTokenAcct,\n marketOracleVault,\n tokenProgram: TOKEN_PROGRAM_ID,\n })\n .transaction();\n }\n}\n","{\n \"address\": \"FzLnnbKtQCTKviEbrDYMLZYXNDHQdjSSa4Ybj4jAbrUL\",\n \"metadata\": {\n \"name\": \"oracle\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Oracle program for XMarket prediction platform\"\n },\n \"instructions\": [\n {\n \"name\": \"add_to_whitelist\",\n \"docs\": [\n \"Add an address to the oracle resolver whitelist (admin/owner only)\"\n ],\n \"discriminator\": [\n 157,\n 211,\n 52,\n 54,\n 144,\n 81,\n 5,\n 55\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"oracle_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"oracle_config.owner\",\n \"account\": \"OracleConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"initialize\",\n \"docs\": [\n \"Initialize a new Oracle configuration. Caller becomes owner and is auto-whitelisted.\"\n ],\n \"discriminator\": [\n 175,\n 175,\n 109,\n 31,\n 13,\n 152,\n 155,\n 237\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"oracle_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"admin\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"pause\",\n \"docs\": [\n \"Pause or unpause the oracle (admin/owner only)\"\n ],\n \"discriminator\": [\n 211,\n 22,\n 221,\n 251,\n 74,\n 121,\n 193,\n 47\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Admin or owner who can pause\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"oracle_config\",\n \"docs\": [\n \"The oracle configuration\"\n ],\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"paused\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"remove_from_whitelist\",\n \"docs\": [\n \"Remove an address from the oracle resolver whitelist (admin/owner only)\"\n ],\n \"discriminator\": [\n 7,\n 144,\n 216,\n 239,\n 243,\n 236,\n 193,\n 235\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"oracle_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"oracle_config.owner\",\n \"account\": \"OracleConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"resolve_question\",\n \"docs\": [\n \"Resolve a question — whitelisted address only.\",\n \"Stores QuestionResult PDA and CPIs to CTF.set_payout in one transaction.\"\n ],\n \"discriminator\": [\n 52,\n 32,\n 224,\n 179,\n 180,\n 8,\n 0,\n 246\n ],\n \"accounts\": [\n {\n \"name\": \"reporter\",\n \"docs\": [\n \"Whitelisted address that submits the resolution\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"oracle_config\",\n \"docs\": [\n \"Oracle configuration\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"oracle_config.owner\",\n \"account\": \"OracleConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"question_result\",\n \"docs\": [\n \"QuestionResult PDA — seeds: [result, oracle_config, question_id]\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 115,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"oracle_config\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"question_id\"\n }\n ]\n }\n },\n {\n \"name\": \"condition\",\n \"docs\": [\n \"Condition PDA in CTF — seeds: [condition, oracle_config, question_id] (CTF program)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 100,\n 105,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"oracle_config\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"question_id\"\n }\n ],\n \"program\": {\n \"kind\": \"account\",\n \"path\": \"conditional_tokens_program\"\n }\n }\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"docs\": [\n \"ConditionalTokens program\"\n ]\n },\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Payer for QuestionResult account creation\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"outcome_count\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"payout_numerators\",\n \"type\": {\n \"vec\": \"u64\"\n }\n }\n ]\n },\n {\n \"name\": \"transfer_ownership\",\n \"docs\": [\n \"Transfer ownership of the oracle to a new owner\"\n ],\n \"discriminator\": [\n 65,\n 177,\n 215,\n 73,\n 53,\n 45,\n 99,\n 47\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"docs\": [\n \"Current owner\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"oracle_config\",\n \"docs\": [\n \"The oracle configuration\"\n ],\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"new_owner\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"update_admin\",\n \"docs\": [\n \"Update the admin of the oracle (owner only)\"\n ],\n \"discriminator\": [\n 161,\n 176,\n 40,\n 213,\n 60,\n 184,\n 179,\n 228\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"docs\": [\n \"Current owner (only owner can change admin)\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"oracle_config\",\n \"docs\": [\n \"The oracle configuration\"\n ],\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"OracleConfig\",\n \"discriminator\": [\n 133,\n 196,\n 152,\n 50,\n 27,\n 21,\n 145,\n 254\n ]\n },\n {\n \"name\": \"QuestionResult\",\n \"discriminator\": [\n 247,\n 234,\n 174,\n 245,\n 224,\n 25,\n 254,\n 226\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"WhitelistUpdated\",\n \"discriminator\": [\n 205,\n 110,\n 205,\n 193,\n 238,\n 237,\n 220,\n 22\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"OracleConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_count\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 10\n ]\n }\n },\n {\n \"name\": \"whitelist_len\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"is_paused\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"QuestionResult\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"oracle_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"outcome_index\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"outcome_count\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"payout_numerators\",\n \"docs\": [\n \"Fixed-size payout array. Only [0..outcome_count] slots are meaningful.\"\n ],\n \"type\": {\n \"array\": [\n \"u64\",\n 8\n ]\n }\n },\n {\n \"name\": \"is_resolved\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"resolved_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"reporter\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"WhitelistUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"oracle_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"added\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"updated_by\",\n \"type\": \"pubkey\"\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"F7y5MfW8d5kqR25QHDhUQ9LrKCiZUZVF6Pdnw15q5zZW\",\n \"metadata\": {\n \"name\": \"hook\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Transfer Hook program for YES/NO Token-2022 prediction market mints\"\n },\n \"instructions\": [\n {\n \"name\": \"add_to_whitelist\",\n \"docs\": [\n \"Add a program to the transfer whitelist.\"\n ],\n \"discriminator\": [\n 157,\n 211,\n 52,\n 54,\n 144,\n 81,\n 5,\n 55\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"hook_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 104,\n 111,\n 111,\n 107,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"program\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"execute\",\n \"docs\": [\n \"Transfer hook execute — invoked by Token-2022 on every YES/NO transfer.\",\n \"Validates the transfer against the whitelist.\",\n \"Discriminator matches the SPL transfer-hook-interface:execute standard.\"\n ],\n \"discriminator\": [\n 105,\n 37,\n 101,\n 197,\n 75,\n 251,\n 102,\n 26\n ],\n \"accounts\": [\n {\n \"name\": \"source_token\",\n \"docs\": [\n \"Source token account (tokens leaving)\"\n ]\n },\n {\n \"name\": \"mint\",\n \"docs\": [\n \"The Token-2022 mint\"\n ]\n },\n {\n \"name\": \"destination_token\",\n \"docs\": [\n \"Destination token account (tokens arriving)\"\n ]\n },\n {\n \"name\": \"owner\",\n \"docs\": [\n \"The authority that authorized this transfer (signer of the transfer)\"\n ]\n },\n {\n \"name\": \"extra_account_meta_list\"\n },\n {\n \"name\": \"hook_config\",\n \"docs\": [\n \"HookConfig — extra account registered in the meta list\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 104,\n 111,\n 111,\n 107,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"freeze_whitelist\",\n \"docs\": [\n \"Permanently freeze the whitelist.\"\n ],\n \"discriminator\": [\n 248,\n 112,\n 12,\n 150,\n 175,\n 238,\n 38,\n 184\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"hook_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 104,\n 111,\n 111,\n 107,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"initialize_extra_account_meta_list\",\n \"docs\": [\n \"Register extra account metas for a specific YES or NO mint.\",\n \"Must be called for each mint after it is created by CTF.prepare_condition.\"\n ],\n \"discriminator\": [\n 92,\n 197,\n 174,\n 197,\n 41,\n 124,\n 19,\n 3\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"extra_account_meta_list\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 101,\n 120,\n 116,\n 114,\n 97,\n 45,\n 97,\n 99,\n 99,\n 111,\n 117,\n 110,\n 116,\n 45,\n 109,\n 101,\n 116,\n 97,\n 115\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"mint\"\n }\n ]\n }\n },\n {\n \"name\": \"mint\",\n \"docs\": [\n \"The Token-2022 mint this hook applies to (YES or NO mint)\"\n ]\n },\n {\n \"name\": \"hook_config\",\n \"docs\": [\n \"HookConfig — needed as extra account during execute\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 104,\n 111,\n 111,\n 107,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"initialize_hook_config\",\n \"docs\": [\n \"Initialize the global hook config with an initial whitelist.\",\n \"Called once by admin after deployment.\"\n ],\n \"discriminator\": [\n 144,\n 239,\n 17,\n 85,\n 228,\n 48,\n 54,\n 43\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"hook_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 104,\n 111,\n 111,\n 107,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"initial_whitelist\",\n \"type\": {\n \"vec\": \"pubkey\"\n }\n }\n ]\n },\n {\n \"name\": \"remove_from_whitelist\",\n \"docs\": [\n \"Remove a program from the transfer whitelist.\"\n ],\n \"discriminator\": [\n 7,\n 144,\n 216,\n 239,\n 243,\n 236,\n 193,\n 235\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"hook_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 104,\n 111,\n 111,\n 107,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"program\",\n \"type\": \"pubkey\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"HookConfig\",\n \"discriminator\": [\n 137,\n 155,\n 101,\n 95,\n 138,\n 72,\n 8,\n 182\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"HookConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 10\n ]\n }\n },\n {\n \"name\": \"whitelist_len\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"is_frozen\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"FCvCbWoLpzNYKzQnXYXCo1yz9DTpgUs11QqHVqnqtWhA\",\n \"metadata\": {\n \"name\": \"question_market\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Question Market program for XMarket prediction platform\"\n },\n \"instructions\": [\n {\n \"name\": \"add_admin\",\n \"discriminator\": [\n 177,\n 236,\n 33,\n 205,\n 124,\n 152,\n 55,\n 186\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"add_to_whitelist\",\n \"discriminator\": [\n 157,\n 211,\n 52,\n 54,\n 144,\n 81,\n 5,\n 55\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"approve_presale\",\n \"discriminator\": [\n 145,\n 218,\n 42,\n 231,\n 144,\n 81,\n 103,\n 34\n ],\n \"accounts\": [\n {\n \"name\": \"caller\",\n \"docs\": [\n \"Whitelisted caller\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"presale\",\n \"docs\": [\n \"Presale PDA (mut — will be approved)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"question\",\n \"docs\": [\n \"Question PDA — seeds use presale.key() as question_id\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 117,\n 101,\n 115,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n }\n ]\n }\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"oracle\"\n },\n {\n \"name\": \"condition\",\n \"writable\": true\n },\n {\n \"name\": \"yes_mint\",\n \"writable\": true\n },\n {\n \"name\": \"no_mint\",\n \"writable\": true\n },\n {\n \"name\": \"mint_authority\",\n \"writable\": true\n },\n {\n \"name\": \"collateral_vault\",\n \"writable\": true\n },\n {\n \"name\": \"market_oracle\",\n \"docs\": [\n \"Market oracle PDA (init'd by market-oracle CPI)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 97,\n 114,\n 107,\n 101,\n 116,\n 95,\n 111,\n 114,\n 97,\n 99,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"question\"\n }\n ],\n \"program\": {\n \"kind\": \"account\",\n \"path\": \"market_oracle_program\"\n }\n }\n },\n {\n \"name\": \"market_oracle_vault\",\n \"docs\": [\n \"Market oracle USDC vault (ATA of market_oracle PDA)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"conditional_tokens_program\"\n },\n {\n \"name\": \"presale_program\",\n \"address\": \"2Rnw1VoEtsUMQ7wkvYZjDehqSqRob6uNkeymDfvKrquB\"\n },\n {\n \"name\": \"market_oracle_program\",\n \"address\": \"ADWF4J3nCJ2kWnCtycuem2jhu7amUqJWQG3oa5xF67QJ\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"token_2022_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"rent\",\n \"address\": \"SysvarRent111111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"ApprovePresaleParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"approve_question\",\n \"discriminator\": [\n 54,\n 149,\n 87,\n 172,\n 67,\n 162,\n 36,\n 108\n ],\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"docs\": [\n \"Admin approving the market\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"docs\": [\n \"Question Market config\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"question\",\n \"docs\": [\n \"Question to approve (must have condition already set)\"\n ],\n \"writable\": true\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"collect_presale_revenue\",\n \"discriminator\": [\n 44,\n 142,\n 67,\n 185,\n 225,\n 110,\n 206,\n 57\n ],\n \"accounts\": [\n {\n \"name\": \"caller\",\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"presale\",\n \"writable\": true\n },\n {\n \"name\": \"presale_vault\",\n \"docs\": [\n \"Presale USDC vault — read balance before CPI, closed inside presale program\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"referral_token_account\",\n \"docs\": [\n \"Referral address USDC token account (10%)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"company_token_account\",\n \"docs\": [\n \"Company address USDC token account (10%)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"admin_vault\",\n \"docs\": [\n \"admin_contract vault ATA — receives 80% instead of BOTMM wallet directly\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"admin_config\",\n \"docs\": [\n \"admin_contract config PDA\"\n ]\n },\n {\n \"name\": \"claim_record\",\n \"docs\": [\n \"ClaimRecord PDA for this conditionId (created by admin_contract CPI)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 97,\n 105,\n 109,\n 95,\n 114,\n 101,\n 99,\n 111,\n 114,\n 100\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ],\n \"program\": {\n \"kind\": \"account\",\n \"path\": \"admin_program\"\n }\n }\n },\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Receives lamports from closed presale_vault + presale PDA\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"presale_program\",\n \"address\": \"2Rnw1VoEtsUMQ7wkvYZjDehqSqRob6uNkeymDfvKrquB\"\n },\n {\n \"name\": \"admin_program\",\n \"address\": \"4NdD5962SfGqofmeyjfifJpdGnwTAiKaUKB5Z42UDc9T\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"collect_trading_fee\",\n \"discriminator\": [\n 97,\n 106,\n 99,\n 150,\n 151,\n 221,\n 180,\n 217\n ],\n \"accounts\": [\n {\n \"name\": \"caller\",\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"market_oracle\",\n \"docs\": [\n \"Market oracle PDA\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"qt_mint\",\n \"docs\": [\n \"QT (MST) mint — supply snapshot taken by market-oracle\"\n ]\n },\n {\n \"name\": \"market_oracle_program\",\n \"address\": \"ADWF4J3nCJ2kWnCtycuem2jhu7amUqJWQG3oa5xF67QJ\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"create_presale\",\n \"discriminator\": [\n 176,\n 144,\n 197,\n 158,\n 61,\n 119,\n 75,\n 135\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"docs\": [\n \"Creator of the presale\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"fee_config\",\n \"docs\": [\n \"Fee config from fee-management program — reads presale rev percentages\"\n ]\n },\n {\n \"name\": \"presale\",\n \"docs\": [\n \"Presale PDA (created via CPI to presale program)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 101,\n 115,\n 97,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.presale_count\",\n \"account\": \"QuestionMarketConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"account\",\n \"path\": \"presale_program\"\n }\n }\n },\n {\n \"name\": \"qt_mint\",\n \"docs\": [\n \"MST (QT) mint PDA\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 116,\n 95,\n 109,\n 105,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n }\n ],\n \"program\": {\n \"kind\": \"account\",\n \"path\": \"presale_program\"\n }\n }\n },\n {\n \"name\": \"qt_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n }\n ],\n \"program\": {\n \"kind\": \"account\",\n \"path\": \"presale_program\"\n }\n }\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"presale_vault\",\n \"docs\": [\n \"Presale USDC vault (ATA of presale PDA, created via CPI)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"creator_currency_ata\",\n \"docs\": [\n \"Creator's USDC token account — USDC pulled from here\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"creator_qt_ata\",\n \"docs\": [\n \"Creator's MST token account (created via CPI)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"user_buy_record\",\n \"docs\": [\n \"User buy record for creator (created via CPI)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 117,\n 115,\n 101,\n 114,\n 95,\n 98,\n 117,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n }\n ],\n \"program\": {\n \"kind\": \"account\",\n \"path\": \"presale_program\"\n }\n }\n },\n {\n \"name\": \"qt_metadata\",\n \"writable\": true\n },\n {\n \"name\": \"token_metadata_program\"\n },\n {\n \"name\": \"presale_program\",\n \"address\": \"2Rnw1VoEtsUMQ7wkvYZjDehqSqRob6uNkeymDfvKrquB\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"rent\",\n \"address\": \"SysvarRent111111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"CreatePresaleParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"create_question_admin\",\n \"discriminator\": [\n 166,\n 168,\n 104,\n 144,\n 72,\n 150,\n 213,\n 4\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"docs\": [\n \"Whitelisted creator — also pays rent\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"question\",\n \"writable\": true\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"oracle\"\n },\n {\n \"name\": \"condition\",\n \"writable\": true\n },\n {\n \"name\": \"yes_mint\",\n \"writable\": true\n },\n {\n \"name\": \"no_mint\",\n \"writable\": true\n },\n {\n \"name\": \"mint_authority\",\n \"writable\": true\n },\n {\n \"name\": \"collateral_vault\",\n \"writable\": true\n },\n {\n \"name\": \"conditional_tokens_program\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"rent\",\n \"address\": \"SysvarRent111111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"CreateQuestionAdminParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"grow_config\",\n \"discriminator\": [\n 190,\n 5,\n 0,\n 130,\n 65,\n 253,\n 94,\n 228\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"initialize\",\n \"discriminator\": [\n 175,\n 175,\n 109,\n 31,\n 13,\n 152,\n 155,\n 237\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"docs\": [\n \"Owner initializing the config\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"docs\": [\n \"The config account (PDA)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"InitializeParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"reject_presale\",\n \"discriminator\": [\n 151,\n 57,\n 254,\n 126,\n 97,\n 26,\n 242,\n 106\n ],\n \"accounts\": [\n {\n \"name\": \"caller\",\n \"docs\": [\n \"Whitelisted caller\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"presale\",\n \"docs\": [\n \"Presale PDA (rejected via CPI)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"presale_program\",\n \"address\": \"2Rnw1VoEtsUMQ7wkvYZjDehqSqRob6uNkeymDfvKrquB\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"remove_admin\",\n \"discriminator\": [\n 74,\n 202,\n 71,\n 106,\n 252,\n 31,\n 72,\n 183\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"remove_from_whitelist\",\n \"discriminator\": [\n 7,\n 144,\n 216,\n 239,\n 243,\n 236,\n 193,\n 235\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"resolve_question\",\n \"discriminator\": [\n 52,\n 32,\n 224,\n 179,\n 180,\n 8,\n 0,\n 246\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Payer for any required fees\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"docs\": [\n \"QuestionMarket config\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"question\",\n \"docs\": [\n \"The question to resolve\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 117,\n 101,\n 115,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"question_id\"\n }\n ]\n }\n },\n {\n \"name\": \"question_result\",\n \"docs\": [\n \"Oracle QuestionResult PDA — proves the oracle has resolved\",\n \"seeds: [b\\\"result\\\", oracle_config, question_id]\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 115,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.oracle\",\n \"account\": \"QuestionMarketConfig\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"question_id\"\n }\n ],\n \"program\": {\n \"kind\": \"account\",\n \"path\": \"oracle_program\"\n }\n }\n },\n {\n \"name\": \"condition\",\n \"docs\": [\n \"The Condition account in CTF (will be updated via CPI)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"ctf_program\",\n \"docs\": [\n \"CTF program (for set_payout CPI)\"\n ]\n },\n {\n \"name\": \"oracle_program\",\n \"docs\": [\n \"Oracle program (for reading QuestionResult)\"\n ]\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"restore_config\",\n \"discriminator\": [\n 95,\n 203,\n 226,\n 92,\n 60,\n 222,\n 192,\n 221\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"update_config\",\n \"discriminator\": [\n 29,\n 158,\n 252,\n 191,\n 10,\n 83,\n 219,\n 99\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Authority making the update (owner for ownership transfer, admin/owner for other updates)\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"docs\": [\n \"Question Market config\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"UpdateConfigParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"update_question_status\",\n \"discriminator\": [\n 237,\n 171,\n 179,\n 4,\n 161,\n 20,\n 61,\n 18\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Authority making the status update (admin for reject, oracle for resolve)\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"docs\": [\n \"Question Market config\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"question\",\n \"docs\": [\n \"Question to update\"\n ],\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"update_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"StatusUpdateType\"\n }\n }\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"Question\",\n \"discriminator\": [\n 111,\n 22,\n 150,\n 220,\n 181,\n 122,\n 118,\n 127\n ]\n },\n {\n \"name\": \"QuestionMarketConfig\",\n \"discriminator\": [\n 45,\n 242,\n 195,\n 220,\n 120,\n 252,\n 74,\n 213\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"ConfigUpdated\",\n \"discriminator\": [\n 40,\n 241,\n 230,\n 122,\n 11,\n 19,\n 198,\n 194\n ]\n },\n {\n \"name\": \"MarketApproved\",\n \"discriminator\": [\n 213,\n 222,\n 68,\n 97,\n 16,\n 1,\n 31,\n 38\n ]\n },\n {\n \"name\": \"PresaleApprovedAndMarketCreated\",\n \"discriminator\": [\n 207,\n 179,\n 63,\n 110,\n 178,\n 224,\n 134,\n 237\n ]\n },\n {\n \"name\": \"PresaleCreated\",\n \"discriminator\": [\n 22,\n 188,\n 215,\n 56,\n 113,\n 251,\n 168,\n 248\n ]\n },\n {\n \"name\": \"PresaleRejected\",\n \"discriminator\": [\n 141,\n 151,\n 157,\n 127,\n 100,\n 182,\n 63,\n 52\n ]\n },\n {\n \"name\": \"QuestionAdminCreated\",\n \"discriminator\": [\n 55,\n 250,\n 212,\n 57,\n 174,\n 201,\n 226,\n 158\n ]\n },\n {\n \"name\": \"QuestionApproved\",\n \"discriminator\": [\n 252,\n 132,\n 245,\n 66,\n 7,\n 1,\n 41,\n 211\n ]\n },\n {\n \"name\": \"QuestionCreated\",\n \"discriminator\": [\n 34,\n 127,\n 167,\n 217,\n 216,\n 141,\n 151,\n 205\n ]\n },\n {\n \"name\": \"QuestionMarketInitialized\",\n \"discriminator\": [\n 149,\n 192,\n 87,\n 33,\n 81,\n 246,\n 25,\n 59\n ]\n },\n {\n \"name\": \"QuestionResolvedMarket\",\n \"discriminator\": [\n 103,\n 113,\n 100,\n 154,\n 213,\n 211,\n 64,\n 126\n ]\n },\n {\n \"name\": \"QuestionStatusUpdated\",\n \"discriminator\": [\n 38,\n 83,\n 232,\n 103,\n 133,\n 238,\n 55,\n 194\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"ApprovePresaleParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"content_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"hook_program\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authorized_clob\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"expiration_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"ConfigUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"updated_by\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_admin\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"new_oracle\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"is_paused\",\n \"type\": {\n \"option\": \"bool\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"CreatePresaleParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"initial_buy_amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"CreateQuestionAdminParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"content_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"hook_program\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authorized_clob\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"expiration_time\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"FeeConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"company_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"referral_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale_revenue_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"investors_market_rev\",\n \"docs\": [\n \"Market revenue split: investors + company (out of FEE_DENOMINATOR = 1_000_000)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_market_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"agents_presale_rev\",\n \"docs\": [\n \"Presale revenue split: agents + company (out of FEE_DENOMINATOR = 1_000_000)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_presale_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 10\n ]\n }\n },\n {\n \"name\": \"whitelist_len\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"InitializeParams\",\n \"docs\": [\n \"Parameters for initializing the Question Market config\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"admin\",\n \"docs\": [\n \"Admin who can approve/reject questions\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"docs\": [\n \"ConditionalTokens program ID for CPI\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"oracle\",\n \"docs\": [\n \"Oracle pubkey that will resolve conditions\"\n ],\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"MarketApproved\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"approved_by\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"approved_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleApprovedAndMarketCreated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"market_oracle\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"market_oracle_vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleCreated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale_index\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"qt_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"currency_mint\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleRejected\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"Question\",\n \"docs\": [\n \"Individual question account\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"docs\": [\n \"Schema version\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"config\",\n \"docs\": [\n \"Reference to the QuestionMarketConfig\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"docs\": [\n \"Unique question identifier (32-byte hash)\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"content_hash\",\n \"docs\": [\n \"Hash of question content (title, description, etc.)\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"outcome_slot_count\",\n \"docs\": [\n \"Number of possible outcomes (2 for binary, up to 255)\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"condition_id\",\n \"docs\": [\n \"Derived condition ID for ConditionalTokens (hash of oracle + question_id)\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"expiration_time\",\n \"docs\": [\n \"Question expiration timestamp (when market closes)\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"currency_mint\",\n \"docs\": [\n \"Currency mint for this question's market (e.g., USDC)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"docs\": [\n \"Creator of the question\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"docs\": [\n \"Linked ConditionalTokens condition (None until approved)\"\n ],\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"status\",\n \"docs\": [\n \"Current status\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"QuestionStatus\"\n }\n }\n },\n {\n \"name\": \"created_at\",\n \"docs\": [\n \"Timestamp when question was created\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"approved_at\",\n \"docs\": [\n \"Timestamp when question was approved (0 if not approved)\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"resolved_at\",\n \"docs\": [\n \"Timestamp when question was resolved (0 if not resolved)\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump seed for PDA derivation\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"docs\": [\n \"Reserved space for future upgrades\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"QuestionAdminCreated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"yes_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"no_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"expiration_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"currency_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"QuestionApproved\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"approved_by\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"approved_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"QuestionCreated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"outcome_slot_count\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"expiration_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"currency_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"QuestionMarketConfig\",\n \"docs\": [\n \"Global configuration for the Question Market program\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"docs\": [\n \"Schema version\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"owner\",\n \"docs\": [\n \"Owner with full control (can transfer ownership)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"admin\",\n \"docs\": [\n \"Admin for day-to-day operations (approve/reject questions)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"docs\": [\n \"ConditionalTokens program ID for CPI\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"oracle\",\n \"docs\": [\n \"Oracle pubkey that will resolve conditions\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_count\",\n \"docs\": [\n \"Total questions created\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"approved_count\",\n \"docs\": [\n \"Total questions approved (became markets)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"rejected_count\",\n \"docs\": [\n \"Total questions rejected\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"whitelist\",\n \"docs\": [\n \"Whitelist of addresses that can create questions and manage presales\"\n ],\n \"type\": {\n \"array\": [\n \"pubkey\",\n 30\n ]\n }\n },\n {\n \"name\": \"whitelist_len\",\n \"docs\": [\n \"Number of entries in whitelist\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"is_paused\",\n \"docs\": [\n \"Whether the program is paused\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump seed for PDA derivation\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"presale_count\",\n \"docs\": [\n \"Total presales created\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"_reserved\",\n \"docs\": [\n \"Reserved space for future upgrades\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 120\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"QuestionMarketInitialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"oracle\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"QuestionResolvedMarket\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"payout_numerators\",\n \"type\": {\n \"vec\": \"u64\"\n }\n },\n {\n \"name\": \"resolved_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"QuestionStatus\",\n \"docs\": [\n \"Status of a question in its lifecycle\"\n ],\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Pending\"\n },\n {\n \"name\": \"Approved\"\n },\n {\n \"name\": \"Rejected\"\n },\n {\n \"name\": \"Resolved\"\n }\n ]\n }\n },\n {\n \"name\": \"QuestionStatusUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"old_status\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"new_status\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"updated_by\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"updated_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"StatusUpdateType\",\n \"docs\": [\n \"Type of status update\"\n ],\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Reject\"\n },\n {\n \"name\": \"MarkResolved\"\n }\n ]\n }\n },\n {\n \"name\": \"UpdateConfigParams\",\n \"docs\": [\n \"Parameters for updating config\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"new_admin\",\n \"docs\": [\n \"New admin (optional)\"\n ],\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"new_oracle\",\n \"docs\": [\n \"New oracle (optional)\"\n ],\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"is_paused\",\n \"docs\": [\n \"Pause/unpause (optional)\"\n ],\n \"type\": {\n \"option\": \"bool\"\n }\n },\n {\n \"name\": \"new_conditional_tokens_program\",\n \"docs\": [\n \"New ConditionalTokens program (optional)\"\n ],\n \"type\": {\n \"option\": \"pubkey\"\n }\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"A6N1F8MRsdgcojAx8p6FaECvw8mo8w6qJcWsbKQBANK4\",\n \"metadata\": {\n \"name\": \"conditional_tokens\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Conditional Tokens program for XMarket prediction platform\"\n },\n \"instructions\": [\n {\n \"name\": \"initialize_vault\",\n \"docs\": [\n \"Initialize a shared collateral vault for a given collateral mint (e.g. USDC).\",\n \"One vault per collateral type, shared across all conditions.\"\n ],\n \"discriminator\": [\n 48,\n 191,\n 163,\n 44,\n 71,\n 129,\n 63,\n 164\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Payer for account creation\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"collateral_mint\",\n \"docs\": [\n \"The collateral token mint (e.g., USDC)\"\n ]\n },\n {\n \"name\": \"collateral_vault\",\n \"docs\": [\n \"The collateral vault state account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 108,\n 108,\n 97,\n 116,\n 101,\n 114,\n 97,\n 108,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_mint\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"docs\": [\n \"The vault token account (holds ALL collateral for this mint type)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116,\n 95,\n 116,\n 111,\n 107,\n 101,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_mint\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"rent\",\n \"address\": \"SysvarRent111111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"merge_position\",\n \"docs\": [\n \"Merge YES + NO tokens back into collateral.\",\n \"User must have equal amounts of both outcome tokens.\"\n ],\n \"discriminator\": [\n 226,\n 29,\n 189,\n 110,\n 130,\n 19,\n 223,\n 219\n ],\n \"accounts\": [\n {\n \"name\": \"user\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Pays tx fee (BE wallet — user wallet needs zero SOL)\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"condition\",\n \"writable\": true\n },\n {\n \"name\": \"collateral_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 108,\n 108,\n 97,\n 116,\n 101,\n 114,\n 97,\n 108,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"condition.collateral_mint\",\n \"account\": \"Condition\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"user_collateral\",\n \"writable\": true\n },\n {\n \"name\": \"yes_mint\",\n \"writable\": true\n },\n {\n \"name\": \"user_yes_ata\",\n \"writable\": true\n },\n {\n \"name\": \"no_mint\",\n \"writable\": true\n },\n {\n \"name\": \"user_no_ata\",\n \"writable\": true\n },\n {\n \"name\": \"yes_position\",\n \"writable\": true\n },\n {\n \"name\": \"no_position\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"token_2022_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"prepare_condition\",\n \"docs\": [\n \"Prepare a new binary condition: creates Condition PDA + YES/NO Token-2022 mints.\",\n \"Called by QuestionMarket via CPI when a question is created.\"\n ],\n \"discriminator\": [\n 245,\n 103,\n 50,\n 34,\n 239,\n 55,\n 114,\n 1\n ],\n \"accounts\": [\n {\n \"name\": \"oracle\",\n \"docs\": [\n \"The oracle config pubkey that will resolve this condition\"\n ]\n },\n {\n \"name\": \"condition\",\n \"docs\": [\n \"Condition PDA — seeds: [CONDITION_SEED, oracle, question_id]\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 100,\n 105,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"oracle\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"question_id\"\n }\n ]\n }\n },\n {\n \"name\": \"yes_mint\",\n \"docs\": [\n \"YES Token-2022 mint — deterministic PDA from [YES_MINT_SEED, condition]\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 121,\n 101,\n 115,\n 95,\n 109,\n 105,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"condition\"\n }\n ]\n }\n },\n {\n \"name\": \"no_mint\",\n \"docs\": [\n \"NO Token-2022 mint — deterministic PDA from [NO_MINT_SEED, condition]\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 110,\n 111,\n 95,\n 109,\n 105,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"condition\"\n }\n ]\n }\n },\n {\n \"name\": \"mint_authority\",\n \"docs\": [\n \"Mint authority PDA — signs mint_to / burn during split/merge/redeem\",\n \"seeds: [MINT_AUTHORITY_SEED, condition]\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 105,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"condition\"\n }\n ]\n }\n },\n {\n \"name\": \"collateral_mint\",\n \"docs\": [\n \"Collateral mint (USDC)\"\n ]\n },\n {\n \"name\": \"collateral_vault\",\n \"docs\": [\n \"Shared collateral vault (must be initialized first)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 108,\n 108,\n 97,\n 116,\n 101,\n 114,\n 97,\n 108,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_mint\"\n }\n ]\n }\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"rent\",\n \"address\": \"SysvarRent111111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"hook_program\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authorized_clob\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"redeem_positions\",\n \"docs\": [\n \"Redeem positions after resolution.\",\n \"Burns all outcome tokens; winning token holders receive USDC proportional to payout.\"\n ],\n \"discriminator\": [\n 72,\n 165,\n 213,\n 89,\n 22,\n 234,\n 44,\n 236\n ],\n \"accounts\": [\n {\n \"name\": \"user\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Pays tx fee (BE wallet — user wallet needs zero SOL)\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"condition\",\n \"writable\": true\n },\n {\n \"name\": \"collateral_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 108,\n 108,\n 97,\n 116,\n 101,\n 114,\n 97,\n 108,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"condition.collateral_mint\",\n \"account\": \"Condition\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"user_collateral\",\n \"writable\": true\n },\n {\n \"name\": \"yes_mint\",\n \"writable\": true\n },\n {\n \"name\": \"user_yes_ata\",\n \"writable\": true\n },\n {\n \"name\": \"no_mint\",\n \"writable\": true\n },\n {\n \"name\": \"user_no_ata\",\n \"writable\": true\n },\n {\n \"name\": \"yes_position\",\n \"writable\": true\n },\n {\n \"name\": \"no_position\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"token_2022_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"reinitialize_vault\",\n \"docs\": [\n \"Overwrite corrupt vault data with correct values. Only callable by upgrade authority.\"\n ],\n \"discriminator\": [\n 119,\n 225,\n 89,\n 221,\n 250,\n 227,\n 252,\n 255\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"collateral_mint\"\n },\n {\n \"name\": \"collateral_vault\",\n \"docs\": [\n \"Use canonical bump derivation (no bump = vault.bump) so corrupt bump doesn't block us\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 108,\n 108,\n 97,\n 116,\n 101,\n 114,\n 97,\n 108,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_mint\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"docs\": [\n \"Existing vault token account — just update the reference\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116,\n 95,\n 116,\n 111,\n 107,\n 101,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_mint\"\n }\n ]\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"report_payouts\",\n \"docs\": [\n \"Report payouts directly as the oracle — resolves the condition.\",\n \"The signer must match condition.oracle.\"\n ],\n \"discriminator\": [\n 133,\n 122,\n 65,\n 66,\n 174,\n 245,\n 105,\n 71\n ],\n \"accounts\": [\n {\n \"name\": \"oracle\",\n \"docs\": [\n \"The oracle resolving the condition (must match condition.oracle)\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"condition\",\n \"docs\": [\n \"The condition being resolved\"\n ],\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"payout_numerators\",\n \"type\": {\n \"vec\": \"u64\"\n }\n }\n ]\n },\n {\n \"name\": \"set_payout\",\n \"docs\": [\n \"Set payout and mark condition as resolved — ONLY callable by QuestionMarket via CPI.\"\n ],\n \"discriminator\": [\n 55,\n 43,\n 132,\n 51,\n 227,\n 169,\n 242,\n 195\n ],\n \"accounts\": [\n {\n \"name\": \"question_market_authority\",\n \"docs\": [\n \"The QuestionMarket program must sign via CPI\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"condition\",\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"payout_numerators\",\n \"type\": {\n \"vec\": \"u64\"\n }\n }\n ]\n },\n {\n \"name\": \"split_position\",\n \"docs\": [\n \"Split collateral (USDC) into YES + NO Token-2022 tokens.\",\n \"User gets equal amounts of both. ATAs are created if needed.\"\n ],\n \"discriminator\": [\n 172,\n 241,\n 221,\n 138,\n 161,\n 29,\n 253,\n 42\n ],\n \"accounts\": [\n {\n \"name\": \"user\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Pays tx fee (BE wallet — user wallet needs zero SOL)\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"condition\",\n \"writable\": true\n },\n {\n \"name\": \"collateral_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 108,\n 108,\n 97,\n 116,\n 101,\n 114,\n 97,\n 108,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"condition.collateral_mint\",\n \"account\": \"Condition\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"user_collateral\",\n \"writable\": true\n },\n {\n \"name\": \"yes_mint\",\n \"writable\": true\n },\n {\n \"name\": \"user_yes_ata\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"user\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_2022_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"yes_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"no_mint\",\n \"writable\": true\n },\n {\n \"name\": \"user_no_ata\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"user\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_2022_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"no_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"yes_position\",\n \"writable\": true\n },\n {\n \"name\": \"no_position\",\n \"writable\": true\n },\n {\n \"name\": \"mint_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 105,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"condition\"\n }\n ]\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"token_2022_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"transfer_position\",\n \"docs\": [\n \"Transfer positions between users — ONLY callable by the authorized CLOB program.\",\n \"Used during order matching to redistribute YES/NO tokens.\"\n ],\n \"discriminator\": [\n 139,\n 130,\n 102,\n 147,\n 135,\n 77,\n 113,\n 222\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Wallet that pays for creating `to_position` if it does not yet exist.\",\n \"Must be a system-owned account (no data) so System Program can debit it.\",\n \"Typically the operator keypair from the CLOB program.\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"clob_authority\",\n \"docs\": [\n \"The CLOB program must sign this instruction\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"condition\"\n },\n {\n \"name\": \"outcome_mint\",\n \"writable\": true\n },\n {\n \"name\": \"from_user\"\n },\n {\n \"name\": \"from_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"from_position\",\n \"writable\": true\n },\n {\n \"name\": \"to_user\"\n },\n {\n \"name\": \"to_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"to_position\",\n \"writable\": true\n },\n {\n \"name\": \"token_2022_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"outcome_index\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"update_authorized_clob\",\n \"docs\": [\n \"Update the authorized CLOB on a condition — only callable by the condition's oracle.\"\n ],\n \"discriminator\": [\n 163,\n 149,\n 236,\n 248,\n 250,\n 46,\n 128,\n 223\n ],\n \"accounts\": [\n {\n \"name\": \"oracle\",\n \"docs\": [\n \"The oracle that owns this condition — must sign\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"condition\",\n \"docs\": [\n \"Condition PDA to update\"\n ],\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"new_authorized_clob\",\n \"type\": \"pubkey\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"CollateralVault\",\n \"discriminator\": [\n 19,\n 189,\n 95,\n 155,\n 100,\n 9,\n 159,\n 145\n ]\n },\n {\n \"name\": \"Condition\",\n \"discriminator\": [\n 138,\n 226,\n 74,\n 204,\n 104,\n 23,\n 135,\n 63\n ]\n },\n {\n \"name\": \"Position\",\n \"discriminator\": [\n 170,\n 188,\n 143,\n 228,\n 122,\n 64,\n 247,\n 208\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"ConditionPrepared\",\n \"discriminator\": [\n 78,\n 133,\n 221,\n 12,\n 90,\n 145,\n 68,\n 113\n ]\n },\n {\n \"name\": \"ConditionResolved\",\n \"discriminator\": [\n 35,\n 167,\n 14,\n 224,\n 166,\n 189,\n 149,\n 24\n ]\n },\n {\n \"name\": \"PayoutsReported\",\n \"discriminator\": [\n 2,\n 216,\n 13,\n 200,\n 42,\n 178,\n 34,\n 244\n ]\n },\n {\n \"name\": \"PositionMerged\",\n \"discriminator\": [\n 239,\n 79,\n 71,\n 159,\n 201,\n 11,\n 107,\n 245\n ]\n },\n {\n \"name\": \"PositionSplit\",\n \"discriminator\": [\n 5,\n 144,\n 121,\n 43,\n 146,\n 210,\n 116,\n 5\n ]\n },\n {\n \"name\": \"PositionsRedeemed\",\n \"discriminator\": [\n 120,\n 95,\n 137,\n 254,\n 147,\n 217,\n 106,\n 74\n ]\n },\n {\n \"name\": \"TransferBatch\",\n \"discriminator\": [\n 11,\n 228,\n 95,\n 88,\n 4,\n 149,\n 139,\n 92\n ]\n },\n {\n \"name\": \"TransferSingle\",\n \"discriminator\": [\n 139,\n 49,\n 113,\n 204,\n 250,\n 194,\n 38,\n 75\n ]\n },\n {\n \"name\": \"VaultInitialized\",\n \"discriminator\": [\n 180,\n 43,\n 207,\n 2,\n 18,\n 71,\n 3,\n 75\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"CollateralVault\",\n \"docs\": [\n \"Global collateral vault - ONE vault per collateral type (e.g., USDC)\",\n \"Shared by ALL conditions using this collateral\",\n \"Similar to how EVM CTF contract holds all collateral in one place\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"collateral_mint\",\n \"docs\": [\n \"The SPL token mint this vault accepts (e.g., USDC)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault_token_account\",\n \"docs\": [\n \"The token account holding all collateral\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_locked\",\n \"docs\": [\n \"Total collateral locked across ALL conditions\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"condition_count\",\n \"docs\": [\n \"Number of conditions using this vault\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump seed for this PDA\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"vault_bump\",\n \"docs\": [\n \"Bump seed for the vault token account PDA\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"docs\": [\n \"Reserved for future use\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"Condition\",\n \"docs\": [\n \"A condition represents a binary market tied to an oracle question.\",\n \"Each condition has YES and NO Token-2022 mints that users hold in their wallets.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"oracle\",\n \"docs\": [\n \"The oracle config that will resolve this condition\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"docs\": [\n \"Unique question identifier (matches Oracle's question_id)\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"outcome_slot_count\",\n \"docs\": [\n \"Number of outcomes — always 2 for binary (NO=0, YES=1)\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"payout_numerators\",\n \"docs\": [\n \"Payout ratios set on resolution (e.g. YES wins: [0, 10000])\"\n ],\n \"type\": {\n \"vec\": \"u64\"\n }\n },\n {\n \"name\": \"payout_denominator\",\n \"docs\": [\n \"Sum of payout_numerators after resolution\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_collateral\",\n \"docs\": [\n \"Total USDC locked in the shared vault for this condition\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"collateral_mint\",\n \"docs\": [\n \"The collateral mint (USDC)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"collateral_vault\",\n \"docs\": [\n \"Reference to the shared CollateralVault PDA\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"yes_mint\",\n \"docs\": [\n \"Token-2022 YES mint — deterministic from [yes_mint, condition_id]\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"no_mint\",\n \"docs\": [\n \"Token-2022 NO mint — deterministic from [no_mint, condition_id]\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"hook_program\",\n \"docs\": [\n \"Transfer Hook program that guards YES/NO transfers\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authorized_clob\",\n \"docs\": [\n \"The only CLOB program allowed to call transfer_position\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"is_resolved\",\n \"docs\": [\n \"Whether the condition has been resolved\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"resolved_at\",\n \"docs\": [\n \"Timestamp when resolved (0 if not resolved)\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump seed for PDA derivation\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"ConditionPrepared\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"oracle\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"yes_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"no_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"hook_program\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authorized_clob\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"collateral_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"collateral_vault\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"ConditionResolved\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"oracle\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"payout_numerators\",\n \"type\": {\n \"vec\": \"u64\"\n }\n },\n {\n \"name\": \"resolved_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"PayoutsReported\",\n \"docs\": [\n \"Event emitted when payouts are reported\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"oracle\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"payout_numerators\",\n \"type\": {\n \"vec\": \"u64\"\n }\n },\n {\n \"name\": \"payout_denominator\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"resolved_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"Position\",\n \"docs\": [\n \"ERC-1155 style position tracking\",\n \"Instead of SPL token mints, we track balances directly in PDAs\",\n \"One Position account per (owner, condition, outcome_index) tuple\",\n \"\",\n \"This matches how ERC-1155 works:\",\n \"- mapping(uint256 tokenId => mapping(address owner => uint256 balance))\",\n \"\",\n \"Where tokenId = hash(conditionId, outcomeIndex)\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"docs\": [\n \"Owner of this position\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"docs\": [\n \"The condition this position belongs to\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"outcome_index\",\n \"docs\": [\n \"The outcome index (0-based)\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"balance\",\n \"docs\": [\n \"Position balance (like ERC-1155 balanceOf)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump seed for PDA derivation\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"docs\": [\n \"Reserved for future use\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"PositionMerged\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"PositionSplit\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"PositionsRedeemed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"yes_burned\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"no_burned\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"payout\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"TransferBatch\",\n \"docs\": [\n \"Event emitted on batch transfers (like ERC-1155 TransferBatch)\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"operator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"from\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"to\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"outcome_indices\",\n \"type\": \"bytes\"\n },\n {\n \"name\": \"amounts\",\n \"type\": {\n \"vec\": \"u64\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"TransferSingle\",\n \"docs\": [\n \"Event emitted on position transfers (like ERC-1155 TransferSingle)\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"operator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"from\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"to\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"outcome_index\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"VaultInitialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"collateral_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault_token_account\",\n \"type\": \"pubkey\"\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"Cs4GY1yZVxjxhhyUum3AupMuS3bo4yKRXifgLTTAh1sf\",\n \"metadata\": {\n \"name\": \"clob_exchange\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"CLOB order-matching exchange for XMarket prediction platform\"\n },\n \"instructions\": [\n {\n \"name\": \"add_operator\",\n \"discriminator\": [\n 149,\n 142,\n 187,\n 68,\n 33,\n 250,\n 87,\n 105\n ],\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"signer\": true\n },\n {\n \"name\": \"clob_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"operator\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"cancel_order\",\n \"docs\": [\n \"Cancel an order — close OrderRecord PDA, return rent to maker.\"\n ],\n \"discriminator\": [\n 95,\n 129,\n 237,\n 240,\n 8,\n 49,\n 223,\n 132\n ],\n \"accounts\": [\n {\n \"name\": \"maker\",\n \"docs\": [\n \"Must be the order maker/signer\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"order_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 111,\n 114,\n 100,\n 101,\n 114,\n 95,\n 114,\n 101,\n 99,\n 111,\n 114,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"maker\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"force_reset_clob\",\n \"discriminator\": [\n 96,\n 95,\n 187,\n 95,\n 65,\n 135,\n 120,\n 204\n ],\n \"accounts\": [\n {\n \"name\": \"upgrade_authority\",\n \"docs\": [\n \"Must be the upgrade authority (deployer). Checked in handler via\",\n \"programdata account so we don't hardcode the pubkey.\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"program_data\",\n \"docs\": [\n \"The clob_exchange programdata account (BPF loader stores the upgrade authority here).\"\n ]\n },\n {\n \"name\": \"clob_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_operators\",\n \"type\": {\n \"vec\": \"pubkey\"\n }\n },\n {\n \"name\": \"new_fee_recipient\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_fee_rate_bps\",\n \"type\": \"u16\"\n }\n ]\n },\n {\n \"name\": \"initialize_clob\",\n \"discriminator\": [\n 35,\n 69,\n 176,\n 37,\n 234,\n 108,\n 187,\n 10\n ],\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"clob_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"operators\",\n \"type\": {\n \"vec\": \"pubkey\"\n }\n },\n {\n \"name\": \"fee_recipient\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fee_rate_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"match_complementary\",\n \"docs\": [\n \"COMPLEMENTARY match: 1 taker (BUY) + N makers (SELL) via remaining_accounts.\"\n ],\n \"discriminator\": [\n 100,\n 205,\n 120,\n 91,\n 117,\n 141,\n 116,\n 141\n ],\n \"accounts\": [\n {\n \"name\": \"operator\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"clob_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"condition\"\n },\n {\n \"name\": \"taker\"\n },\n {\n \"name\": \"taker_order_record\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 111,\n 114,\n 100,\n 101,\n 114,\n 95,\n 114,\n 101,\n 99,\n 111,\n 114,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"taker\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"taker_nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"taker_collateral\",\n \"writable\": true\n },\n {\n \"name\": \"taker_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"taker_position\",\n \"writable\": true\n },\n {\n \"name\": \"taker_order_status\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 111,\n 114,\n 100,\n 101,\n 114\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"taker\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"taker_nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"fee_recipient\",\n \"writable\": true\n },\n {\n \"name\": \"outcome_mint\",\n \"writable\": true\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"address\": \"A6N1F8MRsdgcojAx8p6FaECvw8mo8w6qJcWsbKQBANK4\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"token_2022_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"taker_nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fill_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"use_taker_price\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"skip_crossing_check\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"match_merge_orders\",\n \"docs\": [\n \"MERGE match: 1 taker (YES SELL) + N makers (NO SELL) via remaining_accounts.\"\n ],\n \"discriminator\": [\n 105,\n 41,\n 24,\n 78,\n 119,\n 103,\n 20,\n 31\n ],\n \"accounts\": [\n {\n \"name\": \"operator\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"clob_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"condition\",\n \"writable\": true\n },\n {\n \"name\": \"taker\"\n },\n {\n \"name\": \"taker_order_record\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 111,\n 114,\n 100,\n 101,\n 114,\n 95,\n 114,\n 101,\n 99,\n 111,\n 114,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"taker\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"taker_nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"taker_yes_token\",\n \"writable\": true\n },\n {\n \"name\": \"taker_yes_position\",\n \"writable\": true\n },\n {\n \"name\": \"taker_collateral\",\n \"writable\": true\n },\n {\n \"name\": \"taker_order_status\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 111,\n 114,\n 100,\n 101,\n 114\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"taker\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"taker_nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"clob_usdc_ata\",\n \"docs\": [\n \"USDC ATA owned by clob_config — receives USDC from vault after merge\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"clob_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"clob_yes_ata\",\n \"writable\": true\n },\n {\n \"name\": \"clob_no_ata\",\n \"writable\": true\n },\n {\n \"name\": \"clob_yes_position\",\n \"writable\": true\n },\n {\n \"name\": \"clob_no_position\",\n \"writable\": true\n },\n {\n \"name\": \"collateral_vault\",\n \"writable\": true\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"collateral_mint\"\n },\n {\n \"name\": \"yes_mint\",\n \"writable\": true\n },\n {\n \"name\": \"no_mint\",\n \"writable\": true\n },\n {\n \"name\": \"clob_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"address\": \"A6N1F8MRsdgcojAx8p6FaECvw8mo8w6qJcWsbKQBANK4\"\n },\n {\n \"name\": \"collateral_token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"token_2022_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"taker_nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fill_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"skip_crossing_check\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"match_mint_orders\",\n \"docs\": [\n \"MINT match: 1 taker (YES BUY) + N makers (NO BUY) via remaining_accounts.\"\n ],\n \"discriminator\": [\n 146,\n 116,\n 36,\n 17,\n 229,\n 119,\n 148,\n 84\n ],\n \"accounts\": [\n {\n \"name\": \"operator\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"clob_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"condition\",\n \"writable\": true\n },\n {\n \"name\": \"taker\"\n },\n {\n \"name\": \"taker_order_record\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 111,\n 114,\n 100,\n 101,\n 114,\n 95,\n 114,\n 101,\n 99,\n 111,\n 114,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"taker\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"taker_nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"taker_collateral\",\n \"writable\": true\n },\n {\n \"name\": \"taker_yes_token\",\n \"writable\": true\n },\n {\n \"name\": \"taker_yes_position\",\n \"writable\": true\n },\n {\n \"name\": \"taker_order_status\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 111,\n 114,\n 100,\n 101,\n 114\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"taker\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"taker_nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"clob_usdc_ata\",\n \"docs\": [\n \"USDC ATA owned by clob_config — receives combined USDC, then split_position pulls from here\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"clob_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"clob_yes_ata\",\n \"docs\": [\n \"YES Token-2022 ATA owned by clob_config — receives YES from split, then transferred to taker\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"clob_no_ata\",\n \"docs\": [\n \"NO Token-2022 ATA owned by clob_config — receives NO from split, then transferred to makers\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"clob_yes_position\",\n \"docs\": [\n \"YES Position PDA for clob_config (set by CTF split_position init_if_needed)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"clob_no_position\",\n \"docs\": [\n \"NO Position PDA for clob_config (set by CTF split_position init_if_needed)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"collateral_vault\",\n \"writable\": true\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"collateral_mint\"\n },\n {\n \"name\": \"yes_mint\",\n \"writable\": true\n },\n {\n \"name\": \"no_mint\",\n \"writable\": true\n },\n {\n \"name\": \"mint_authority\",\n \"writable\": true\n },\n {\n \"name\": \"clob_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"address\": \"A6N1F8MRsdgcojAx8p6FaECvw8mo8w6qJcWsbKQBANK4\"\n },\n {\n \"name\": \"collateral_token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"token_2022_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"taker_nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fill_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"skip_crossing_check\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"register_order\",\n \"docs\": [\n \"Register a signed order on-chain (Ed25519 verify at registration time).\",\n \"ix[0] must be Ed25519 precompile with 1 entry for order.signer.\"\n ],\n \"discriminator\": [\n 92,\n 37,\n 29,\n 46,\n 77,\n 250,\n 219,\n 6\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Operator pays rent for the OrderRecord PDA.\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"clob_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"ix_sysvar\",\n \"address\": \"Sysvar1nstructions1111111111111111111111111\"\n },\n {\n \"name\": \"order_signer\"\n },\n {\n \"name\": \"order_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 111,\n 114,\n 100,\n 101,\n 114,\n 95,\n 114,\n 101,\n 99,\n 111,\n 114,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"order_signer\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"order_status\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 111,\n 114,\n 100,\n 101,\n 114\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"order_signer\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"reinit_clob\",\n \"discriminator\": [\n 41,\n 95,\n 240,\n 222,\n 95,\n 170,\n 14,\n 224\n ],\n \"accounts\": [\n {\n \"name\": \"upgrade_authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"program_data\"\n },\n {\n \"name\": \"clob_config\",\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_operators\",\n \"type\": {\n \"vec\": \"pubkey\"\n }\n },\n {\n \"name\": \"new_fee_recipient\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_fee_rate_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"remove_operator\",\n \"discriminator\": [\n 84,\n 183,\n 126,\n 251,\n 137,\n 150,\n 214,\n 134\n ],\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"signer\": true\n },\n {\n \"name\": \"clob_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"operator\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"set_paused\",\n \"discriminator\": [\n 91,\n 60,\n 125,\n 192,\n 176,\n 225,\n 166,\n 218\n ],\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"signer\": true\n },\n {\n \"name\": \"clob_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"paused\",\n \"type\": \"bool\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"ClobConfig\",\n \"discriminator\": [\n 232,\n 137,\n 70,\n 131,\n 139,\n 180,\n 99,\n 160\n ]\n },\n {\n \"name\": \"OrderStatus\",\n \"discriminator\": [\n 46,\n 90,\n 241,\n 73,\n 178,\n 104,\n 65,\n 3\n ]\n },\n {\n \"name\": \"SignedOrderRecord\",\n \"discriminator\": [\n 16,\n 167,\n 189,\n 166,\n 85,\n 0,\n 231,\n 55\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"ComplementaryMatchEvent\",\n \"discriminator\": [\n 119,\n 80,\n 38,\n 83,\n 91,\n 51,\n 194,\n 114\n ]\n },\n {\n \"name\": \"MergeMatchEvent\",\n \"discriminator\": [\n 168,\n 213,\n 228,\n 238,\n 136,\n 1,\n 205,\n 8\n ]\n },\n {\n \"name\": \"MintMatchEvent\",\n \"discriminator\": [\n 100,\n 181,\n 33,\n 71,\n 124,\n 61,\n 130,\n 23\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"ClobConfig\",\n \"docs\": [\n \"Global CLOB configuration.\",\n \"Stores the fee recipient, authorized operators, and program references.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"admin\",\n \"docs\": [\n \"Admin who can update operators and config\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"operators\",\n \"docs\": [\n \"Operators authorized to submit match transactions.\",\n \"Off-chain matching engine(s) use these keys.\"\n ],\n \"type\": {\n \"vec\": \"pubkey\"\n }\n },\n {\n \"name\": \"fee_recipient\",\n \"docs\": [\n \"Fee recipient token account (USDC)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fee_rate_bps\",\n \"docs\": [\n \"Fee rate in basis points charged on each trade (e.g. 50 = 0.5%)\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"docs\": [\n \"The conditional-tokens program ID (for CPI)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"is_paused\",\n \"docs\": [\n \"Whether the CLOB is paused\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump for this PDA\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"CollateralVault\",\n \"docs\": [\n \"Global collateral vault - ONE vault per collateral type (e.g., USDC)\",\n \"Shared by ALL conditions using this collateral\",\n \"Similar to how EVM CTF contract holds all collateral in one place\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"collateral_mint\",\n \"docs\": [\n \"The SPL token mint this vault accepts (e.g., USDC)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault_token_account\",\n \"docs\": [\n \"The token account holding all collateral\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_locked\",\n \"docs\": [\n \"Total collateral locked across ALL conditions\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"condition_count\",\n \"docs\": [\n \"Number of conditions using this vault\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump seed for this PDA\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"vault_bump\",\n \"docs\": [\n \"Bump seed for the vault token account PDA\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"docs\": [\n \"Reserved for future use\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"ComplementaryMatchEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"taker\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fill_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"Condition\",\n \"docs\": [\n \"A condition represents a binary market tied to an oracle question.\",\n \"Each condition has YES and NO Token-2022 mints that users hold in their wallets.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"oracle\",\n \"docs\": [\n \"The oracle config that will resolve this condition\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"docs\": [\n \"Unique question identifier (matches Oracle's question_id)\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"outcome_slot_count\",\n \"docs\": [\n \"Number of outcomes — always 2 for binary (NO=0, YES=1)\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"payout_numerators\",\n \"docs\": [\n \"Payout ratios set on resolution (e.g. YES wins: [0, 10000])\"\n ],\n \"type\": {\n \"vec\": \"u64\"\n }\n },\n {\n \"name\": \"payout_denominator\",\n \"docs\": [\n \"Sum of payout_numerators after resolution\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_collateral\",\n \"docs\": [\n \"Total USDC locked in the shared vault for this condition\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"collateral_mint\",\n \"docs\": [\n \"The collateral mint (USDC)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"collateral_vault\",\n \"docs\": [\n \"Reference to the shared CollateralVault PDA\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"yes_mint\",\n \"docs\": [\n \"Token-2022 YES mint — deterministic from [yes_mint, condition_id]\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"no_mint\",\n \"docs\": [\n \"Token-2022 NO mint — deterministic from [no_mint, condition_id]\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"hook_program\",\n \"docs\": [\n \"Transfer Hook program that guards YES/NO transfers\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authorized_clob\",\n \"docs\": [\n \"The only CLOB program allowed to call transfer_position\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"is_resolved\",\n \"docs\": [\n \"Whether the condition has been resolved\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"resolved_at\",\n \"docs\": [\n \"Timestamp when resolved (0 if not resolved)\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump seed for PDA derivation\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"MergeMatchEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"taker\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fill_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"MintMatchEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"buyer_yes\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fill_amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"OrderStatus\",\n \"docs\": [\n \"Tracks the fill state of an order for replay protection.\",\n \"PDA seeds: [b\\\"order\\\", maker_pubkey, nonce_le_bytes]\",\n \"\",\n \"Created on first fill (init_if_needed). A missing PDA means the order\",\n \"has never been touched (remaining = order.amount).\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"maker\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"filled_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"SignedOrderRecord\",\n \"docs\": [\n \"On-chain verified order record.\",\n \"Created by `register_order` after Ed25519 signature verification.\",\n \"Read by match instructions via remaining_accounts.\",\n \"Closed (rent returned) when order is fully filled or cancelled.\",\n \"\",\n \"PDA seeds: [b\\\"order_record\\\", maker, nonce_le_bytes]\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"maker\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"side\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"maker_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"taker_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"taker\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"signer\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"DuYyXguB5PVSKg6E2p4XPrrXZSCJnuBhoGpkGCBN5bBb\",\n \"metadata\": {\n \"name\": \"fee_management\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Fee Management program for XMarket prediction platform\"\n },\n \"instructions\": [\n {\n \"name\": \"add_to_whitelist\",\n \"discriminator\": [\n 157,\n 211,\n 52,\n 54,\n 144,\n 81,\n 5,\n 55\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"fee_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"fee_config.owner\",\n \"account\": \"FeeConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"distribute_fee\",\n \"discriminator\": [\n 30,\n 155,\n 128,\n 162,\n 157,\n 113,\n 53,\n 42\n ],\n \"accounts\": [\n {\n \"name\": \"fee_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"fee_config.owner\",\n \"account\": \"FeeConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"market_fee_override\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 97,\n 114,\n 107,\n 101,\n 116,\n 95,\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"source_ata\",\n \"writable\": true\n },\n {\n \"name\": \"company_ata\",\n \"writable\": true\n },\n {\n \"name\": \"market_oracle_vault\",\n \"docs\": [\n \"Writable: tokens are transferred here when is_admin=false.\",\n \"For admin questions pass any writable account (no transfer occurs).\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"initialize\",\n \"discriminator\": [\n 175,\n 175,\n 109,\n 31,\n 13,\n 152,\n 155,\n 237\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"fee_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"InitializeParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"remove_from_whitelist\",\n \"discriminator\": [\n 7,\n 144,\n 216,\n 239,\n 243,\n 236,\n 193,\n 235\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"fee_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"fee_config.owner\",\n \"account\": \"FeeConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"set_admin\",\n \"discriminator\": [\n 251,\n 163,\n 0,\n 52,\n 91,\n 194,\n 187,\n 92\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"fee_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"fee_config.owner\",\n \"account\": \"FeeConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"set_market_fee_override\",\n \"discriminator\": [\n 141,\n 43,\n 11,\n 123,\n 189,\n 90,\n 240,\n 198\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"fee_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"fee_config.owner\",\n \"account\": \"FeeConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"market_fee_override\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 97,\n 114,\n 107,\n 101,\n 116,\n 95,\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"investors\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"company\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"is_admin\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"set_presale_fee_override\",\n \"discriminator\": [\n 38,\n 169,\n 138,\n 149,\n 77,\n 51,\n 133,\n 71\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"fee_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"fee_config.owner\",\n \"account\": \"FeeConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"presale_fee_override\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 101,\n 115,\n 97,\n 108,\n 101,\n 95,\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"presale\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agents\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"company\",\n \"type\": \"u32\"\n }\n ]\n },\n {\n \"name\": \"set_question_fee\",\n \"discriminator\": [\n 83,\n 142,\n 163,\n 186,\n 112,\n 116,\n 160,\n 22\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"fee_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"fee_config.owner\",\n \"account\": \"FeeConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"question_fee\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 117,\n 101,\n 115,\n 116,\n 105,\n 111,\n 110,\n 95,\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"merge_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"redeem_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"swap_fee\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"update_config\",\n \"discriminator\": [\n 29,\n 158,\n 252,\n 191,\n 10,\n 83,\n 219,\n 99\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"fee_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"fee_config.owner\",\n \"account\": \"FeeConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"UpdateConfigParams\"\n }\n }\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"FeeConfig\",\n \"discriminator\": [\n 143,\n 52,\n 146,\n 187,\n 219,\n 123,\n 76,\n 155\n ]\n },\n {\n \"name\": \"MarketFeeOverride\",\n \"discriminator\": [\n 186,\n 172,\n 43,\n 139,\n 229,\n 80,\n 54,\n 35\n ]\n },\n {\n \"name\": \"PresaleFeeOverride\",\n \"discriminator\": [\n 65,\n 15,\n 119,\n 40,\n 59,\n 212,\n 183,\n 238\n ]\n },\n {\n \"name\": \"QuestionFee\",\n \"discriminator\": [\n 43,\n 28,\n 92,\n 26,\n 6,\n 96,\n 87,\n 145\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"FeeAdminUpdated\",\n \"discriminator\": [\n 10,\n 109,\n 73,\n 161,\n 51,\n 119,\n 6,\n 105\n ]\n },\n {\n \"name\": \"FeeConfigInitialized\",\n \"discriminator\": [\n 99,\n 232,\n 112,\n 161,\n 28,\n 61,\n 171,\n 178\n ]\n },\n {\n \"name\": \"FeeConfigUpdated\",\n \"discriminator\": [\n 45,\n 50,\n 42,\n 173,\n 193,\n 67,\n 52,\n 244\n ]\n },\n {\n \"name\": \"FeeDistributed\",\n \"discriminator\": [\n 6,\n 133,\n 116,\n 50,\n 44,\n 151,\n 179,\n 65\n ]\n },\n {\n \"name\": \"FeeWhitelistUpdated\",\n \"discriminator\": [\n 113,\n 215,\n 161,\n 200,\n 232,\n 138,\n 118,\n 127\n ]\n },\n {\n \"name\": \"MarketFeeOverrideSet\",\n \"discriminator\": [\n 199,\n 221,\n 153,\n 8,\n 223,\n 7,\n 236,\n 168\n ]\n },\n {\n \"name\": \"PresaleFeeOverrideSet\",\n \"discriminator\": [\n 37,\n 59,\n 174,\n 56,\n 179,\n 181,\n 109,\n 235\n ]\n },\n {\n \"name\": \"QuestionFeeUpdated\",\n \"discriminator\": [\n 109,\n 34,\n 209,\n 115,\n 126,\n 213,\n 136,\n 3\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"FeeAdminUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"fee_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"old_admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"updated_by\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"FeeConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"company_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"referral_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale_revenue_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"investors_market_rev\",\n \"docs\": [\n \"Market revenue split: investors + company (out of FEE_DENOMINATOR = 1_000_000)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_market_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"agents_presale_rev\",\n \"docs\": [\n \"Presale revenue split: agents + company (out of FEE_DENOMINATOR = 1_000_000)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_presale_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 10\n ]\n }\n },\n {\n \"name\": \"whitelist_len\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"FeeConfigInitialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"fee_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"admin\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"FeeConfigUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"fee_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"updated_by\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"FeeDistributed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"is_admin\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"company_share\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"FeeWhitelistUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"fee_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"added\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"updated_by\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"InitializeParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"company_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"referral_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale_revenue_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"investors_market_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_market_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"agents_presale_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_presale_rev\",\n \"type\": \"u32\"\n }\n ]\n }\n },\n {\n \"name\": \"MarketFeeOverride\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"investors\",\n \"docs\": [\n \"Revenue split out of FEE_DENOMINATOR (1_000_000)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"company\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"is_admin\",\n \"docs\": [\n \"true = admin-created question (100% → company)\",\n \"false = presale question (split per investors/company rates)\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"MarketFeeOverrideSet\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"fee_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"investors\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"company\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"is_admin\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"set_by\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleFeeOverride\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agents\",\n \"docs\": [\n \"Revenue split out of FEE_DENOMINATOR (1_000_000)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"company\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleFeeOverrideSet\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"fee_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agents\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"company\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"set_by\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"QuestionFee\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"merge_fee\",\n \"docs\": [\n \"Fees out of FEE_DENOMINATOR (1_000_000). E.g. 2_000 = 0.2%\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"redeem_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"swap_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"QuestionFeeUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"fee_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"merge_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"redeem_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"swap_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"updated_by\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"UpdateConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"company_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"referral_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale_revenue_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"investors_market_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_market_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"agents_presale_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_presale_rev\",\n \"type\": \"u32\"\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"2Rnw1VoEtsUMQ7wkvYZjDehqSqRob6uNkeymDfvKrquB\",\n \"metadata\": {\n \"name\": \"presale\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Presale program for XMarket prediction platform\"\n },\n \"instructions\": [\n {\n \"name\": \"buy\",\n \"discriminator\": [\n 102,\n 6,\n 61,\n 18,\n 1,\n 218,\n 235,\n 234\n ],\n \"accounts\": [\n {\n \"name\": \"buyer\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"presale\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 101,\n 115,\n 97,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.question_market_config\",\n \"account\": \"PresaleAccount\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.presale_index\",\n \"account\": \"PresaleAccount\"\n }\n ]\n }\n },\n {\n \"name\": \"qt_mint\",\n \"writable\": true\n },\n {\n \"name\": \"qt_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n }\n ]\n }\n },\n {\n \"name\": \"buyer_qt_ata\",\n \"docs\": [\n \"Buyer's MST token account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"qt_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"buyer_currency_ata\",\n \"docs\": [\n \"Buyer's currency (USDC) account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"presale_vault\",\n \"docs\": [\n \"Presale USDC vault\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"currency_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"user_buy_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 117,\n 115,\n 101,\n 114,\n 95,\n 98,\n 117,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\n }\n ]\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"qt_amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"buy_for_creator\",\n \"discriminator\": [\n 162,\n 128,\n 209,\n 122,\n 169,\n 17,\n 19,\n 181\n ],\n \"accounts\": [\n {\n \"name\": \"operator\",\n \"docs\": [\n \"question_market_config PDA — signs via CPI from question-market\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"presale\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 101,\n 115,\n 97,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.question_market_config\",\n \"account\": \"PresaleAccount\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.presale_index\",\n \"account\": \"PresaleAccount\"\n }\n ]\n }\n },\n {\n \"name\": \"qt_mint\",\n \"writable\": true\n },\n {\n \"name\": \"qt_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n }\n ]\n }\n },\n {\n \"name\": \"creator_qt_ata\",\n \"docs\": [\n \"Creator's MST token account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"qt_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"creator\"\n },\n {\n \"name\": \"user_buy_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 117,\n 115,\n 101,\n 114,\n 95,\n 98,\n 117,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n }\n ]\n }\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"currency_amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"distribute_presale_revenue\",\n \"discriminator\": [\n 235,\n 196,\n 203,\n 30,\n 149,\n 159,\n 144,\n 244\n ],\n \"accounts\": [\n {\n \"name\": \"operator\",\n \"docs\": [\n \"question_market_config PDA — signs via CPI from question-market\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"presale\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 101,\n 115,\n 97,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.question_market_config\",\n \"account\": \"PresaleAccount\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.presale_index\",\n \"account\": \"PresaleAccount\"\n }\n ]\n }\n },\n {\n \"name\": \"presale_vault\",\n \"docs\": [\n \"Presale USDC vault (source) — closed after distribution\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"currency_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"referral_token_account\",\n \"docs\": [\n \"Referral address USDC token account (receives agents_fee)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"company_token_account\",\n \"docs\": [\n \"Company address USDC token account (receives company_fee)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"botmm_token_account\",\n \"docs\": [\n \"BOTMM token account (receives remaining ~80%)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Receives lamports from closed presale_vault + presale PDA\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"initialize_presale\",\n \"discriminator\": [\n 9,\n 174,\n 12,\n 126,\n 150,\n 119,\n 68,\n 100\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"question_market_config\"\n },\n {\n \"name\": \"presale\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 101,\n 115,\n 97,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"question_market_config\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"params.presale_index\"\n }\n ]\n }\n },\n {\n \"name\": \"qt_mint\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 116,\n 95,\n 109,\n 105,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n }\n ]\n }\n },\n {\n \"name\": \"qt_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n }\n ]\n }\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"presale_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"currency_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"qt_metadata\",\n \"writable\": true\n },\n {\n \"name\": \"token_metadata_program\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"rent\",\n \"address\": \"SysvarRent111111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"InitializePresaleParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"refund\",\n \"discriminator\": [\n 2,\n 96,\n 183,\n 251,\n 63,\n 208,\n 46,\n 46\n ],\n \"accounts\": [\n {\n \"name\": \"user\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Pays tx fee (BE wallet — user wallet needs zero SOL)\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"presale\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 101,\n 115,\n 97,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.question_market_config\",\n \"account\": \"PresaleAccount\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.presale_index\",\n \"account\": \"PresaleAccount\"\n }\n ]\n }\n },\n {\n \"name\": \"qt_mint\",\n \"writable\": true\n },\n {\n \"name\": \"user_qt_ata\",\n \"docs\": [\n \"User's MST token account (burned on refund)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"user\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"qt_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"user_currency_ata\",\n \"docs\": [\n \"User's USDC account (receives refund)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"presale_vault\",\n \"docs\": [\n \"Presale USDC vault (source of refund)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"currency_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"user_buy_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 117,\n 115,\n 101,\n 114,\n 95,\n 98,\n 117,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"user\"\n }\n ]\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"set_approved\",\n \"discriminator\": [\n 230,\n 214,\n 166,\n 156,\n 205,\n 38,\n 182,\n 106\n ],\n \"accounts\": [\n {\n \"name\": \"operator\",\n \"docs\": [\n \"question_market_config PDA — signs via CPI from question-market\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"presale\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 101,\n 115,\n 97,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.question_market_config\",\n \"account\": \"PresaleAccount\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.presale_index\",\n \"account\": \"PresaleAccount\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"set_rejected\",\n \"discriminator\": [\n 158,\n 2,\n 222,\n 64,\n 65,\n 180,\n 195,\n 24\n ],\n \"accounts\": [\n {\n \"name\": \"operator\",\n \"docs\": [\n \"question_market_config PDA — signs via CPI from question-market\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"presale\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 101,\n 115,\n 97,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.question_market_config\",\n \"account\": \"PresaleAccount\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.presale_index\",\n \"account\": \"PresaleAccount\"\n }\n ]\n }\n }\n ],\n \"args\": []\n }\n ],\n \"accounts\": [\n {\n \"name\": \"PresaleAccount\",\n \"discriminator\": [\n 199,\n 34,\n 38,\n 30,\n 209,\n 182,\n 217,\n 206\n ]\n },\n {\n \"name\": \"UserBuyRecord\",\n \"discriminator\": [\n 70,\n 83,\n 101,\n 8,\n 175,\n 129,\n 230,\n 160\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"Bought\",\n \"discriminator\": [\n 193,\n 56,\n 215,\n 24,\n 156,\n 76,\n 42,\n 104\n ]\n },\n {\n \"name\": \"BoughtForCreator\",\n \"discriminator\": [\n 88,\n 165,\n 191,\n 190,\n 67,\n 40,\n 221,\n 144\n ]\n },\n {\n \"name\": \"PresaleApproved\",\n \"discriminator\": [\n 57,\n 9,\n 254,\n 224,\n 93,\n 21,\n 177,\n 70\n ]\n },\n {\n \"name\": \"PresaleInitialized\",\n \"discriminator\": [\n 103,\n 99,\n 225,\n 170,\n 238,\n 250,\n 90,\n 75\n ]\n },\n {\n \"name\": \"PresaleRejected\",\n \"discriminator\": [\n 141,\n 151,\n 157,\n 127,\n 100,\n 182,\n 63,\n 52\n ]\n },\n {\n \"name\": \"PresaleRevenueDistributed\",\n \"discriminator\": [\n 10,\n 172,\n 132,\n 246,\n 218,\n 186,\n 99,\n 129\n ]\n },\n {\n \"name\": \"Refunded\",\n \"discriminator\": [\n 35,\n 103,\n 149,\n 246,\n 196,\n 123,\n 221,\n 99\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"Bought\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"buyer\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"usdc_cost\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"sold_token_amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"BoughtForCreator\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"currency_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"sold_token_amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"InitializePresaleParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"presale_index\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"agents_rev\",\n \"docs\": [\n \"Ignored — fee % is now a program constant (PRESALE_AGENTS_FEE_BPS)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_rev\",\n \"docs\": [\n \"Ignored — fee % is now a program constant (PRESALE_COMPANY_FEE_BPS)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"referral_address\",\n \"docs\": [\n \"Wallet that receives agents/referral fee (AGENT in .env)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"company_address\",\n \"docs\": [\n \"Wallet that receives company fee (COMPANY in .env)\"\n ],\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleAccount\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"question_market_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale_index\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"currency_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_mint_bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"qt_authority_bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"status\",\n \"type\": {\n \"defined\": {\n \"name\": \"PresaleStatus\"\n }\n }\n },\n {\n \"name\": \"sold_token_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"initial_token_amount_creator\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"agents_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"referral_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"company_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"is_distribute_revenue\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"creator_claimable_revenue\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"PresaleApproved\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleInitialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_market_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale_index\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"currency_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleRejected\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleRevenueDistributed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"balance\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"agents_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"company_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"botmm_revenue\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleStatus\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Pending\"\n },\n {\n \"name\": \"Approved\"\n },\n {\n \"name\": \"Rejected\"\n }\n ]\n }\n },\n {\n \"name\": \"Refunded\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_burned\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"currency_refunded\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"UserBuyRecord\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"currency_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"ADWF4J3nCJ2kWnCtycuem2jhu7amUqJWQG3oa5xF67QJ\",\n \"metadata\": {\n \"name\": \"market_oracle\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Market Oracle program for XMarket prediction platform\"\n },\n \"instructions\": [\n {\n \"name\": \"claim_fees_share\",\n \"discriminator\": [\n 252,\n 175,\n 173,\n 207,\n 195,\n 75,\n 96,\n 53\n ],\n \"accounts\": [\n {\n \"name\": \"user\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"market_oracle\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 97,\n 114,\n 107,\n 101,\n 116,\n 95,\n 111,\n 114,\n 97,\n 99,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"market_oracle.question\",\n \"account\": \"MarketOracleAccount\"\n }\n ]\n }\n },\n {\n \"name\": \"market_oracle_vault\",\n \"docs\": [\n \"Market oracle USDC vault (source of payout)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"market_oracle\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"currency_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"qt_mint\",\n \"docs\": [\n \"QT (MST) mint — for burning\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"user_qt_ata\",\n \"docs\": [\n \"User's QT token account (burned)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"user\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"qt_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"user_currency_ata\",\n \"docs\": [\n \"User's USDC token account (receives payout)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"user_claim_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 117,\n 115,\n 101,\n 114,\n 95,\n 99,\n 108,\n 97,\n 105,\n 109\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"market_oracle\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"user\"\n }\n ]\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"distribute_fees_share\",\n \"discriminator\": [\n 18,\n 122,\n 69,\n 52,\n 253,\n 171,\n 106,\n 233\n ],\n \"accounts\": [\n {\n \"name\": \"operator\",\n \"docs\": [\n \"question_market_config PDA — signs via CPI\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"market_oracle\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 97,\n 114,\n 107,\n 101,\n 116,\n 95,\n 111,\n 114,\n 97,\n 99,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"market_oracle.question\",\n \"account\": \"MarketOracleAccount\"\n }\n ]\n }\n },\n {\n \"name\": \"qt_mint\",\n \"docs\": [\n \"QT (MST) token mint — supply snapshot taken here\"\n ]\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"initialize_market\",\n \"discriminator\": [\n 35,\n 35,\n 189,\n 193,\n 155,\n 48,\n 170,\n 203\n ],\n \"accounts\": [\n {\n \"name\": \"operator\",\n \"docs\": [\n \"question_market_config PDA — signs via CPI from question-market\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"question\"\n },\n {\n \"name\": \"market_oracle\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 97,\n 114,\n 107,\n 101,\n 116,\n 95,\n 111,\n 114,\n 97,\n 99,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"question\"\n }\n ]\n }\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"market_oracle_vault\",\n \"docs\": [\n \"Market oracle USDC vault — ATA of market_oracle PDA\",\n \"This is set as fee_recipient in CLOB config for this market\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"market_oracle\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"currency_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"rent\",\n \"address\": \"SysvarRent111111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"MarketOracleAccount\",\n \"discriminator\": [\n 94,\n 161,\n 62,\n 46,\n 191,\n 0,\n 214,\n 182\n ]\n },\n {\n \"name\": \"UserClaimRecord\",\n \"discriminator\": [\n 85,\n 4,\n 42,\n 63,\n 186,\n 93,\n 76,\n 140\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"FeesShareClaimed\",\n \"discriminator\": [\n 134,\n 23,\n 132,\n 206,\n 108,\n 241,\n 26,\n 120\n ]\n },\n {\n \"name\": \"FeesShareDistributed\",\n \"discriminator\": [\n 99,\n 92,\n 62,\n 91,\n 18,\n 188,\n 164,\n 238\n ]\n },\n {\n \"name\": \"MarketInitialized\",\n \"discriminator\": [\n 134,\n 160,\n 122,\n 87,\n 50,\n 3,\n 255,\n 81\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"FeesShareClaimed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"market_oracle\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_burned\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fees_share\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"FeesShareDistributed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"market_oracle\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_total_supply\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"MarketInitialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"market_oracle\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_market_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"currency_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"MarketOracleAccount\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"question\",\n \"docs\": [\n \"The question PDA this oracle is for\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_market_config\",\n \"docs\": [\n \"question_market program config — the operator\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"currency_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_mint\",\n \"docs\": [\n \"MST token mint — set at distribute_fees_share\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fees_distributed\",\n \"docs\": [\n \"True after distribute_fees_share is called\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"qt_total_supply\",\n \"docs\": [\n \"Snapshot of qt total supply at distribution time\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_claimed\",\n \"docs\": [\n \"Running total of USDC paid out to claimers\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"UserClaimRecord\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"market_oracle\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"has_claimed\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"4NdD5962SfGqofmeyjfifJpdGnwTAiKaUKB5Z42UDc9T\",\n \"metadata\": {\n \"name\": \"admin_contract\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Admin contract for XMarket — whitelist, presale revenue custody, claim\"\n },\n \"instructions\": [\n {\n \"name\": \"add_admin\",\n \"discriminator\": [\n 177,\n 236,\n 33,\n 205,\n 124,\n 152,\n 55,\n 186\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 100,\n 109,\n 105,\n 110,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"AdminConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"add_to_whitelist\",\n \"discriminator\": [\n 157,\n 211,\n 52,\n 54,\n 144,\n 81,\n 5,\n 55\n ],\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 100,\n 109,\n 105,\n 110,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"AdminConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"claim\",\n \"discriminator\": [\n 62,\n 198,\n 214,\n 193,\n 213,\n 159,\n 108,\n 210\n ],\n \"accounts\": [\n {\n \"name\": \"claimer\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 100,\n 109,\n 105,\n 110,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"AdminConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"admin_vault\",\n \"docs\": [\n \"ATA owned by config PDA\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"config\"\n },\n {\n \"kind\": \"const\",\n \"value\": [\n 6,\n 221,\n 246,\n 225,\n 215,\n 101,\n 161,\n 147,\n 217,\n 203,\n 225,\n 70,\n 206,\n 235,\n 121,\n 172,\n 28,\n 180,\n 133,\n 237,\n 95,\n 91,\n 55,\n 145,\n 58,\n 140,\n 245,\n 133,\n 126,\n 255,\n 0,\n 169\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.collateral_mint\",\n \"account\": \"AdminConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"claim_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 97,\n 105,\n 109,\n 95,\n 114,\n 101,\n 99,\n 111,\n 114,\n 100\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ]\n }\n },\n {\n \"name\": \"claimer_token_account\",\n \"docs\": [\n \"Claimer's USDC token account (receives payout)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"distribute_market\",\n \"discriminator\": [\n 130,\n 221,\n 123,\n 201,\n 185,\n 168,\n 63,\n 19\n ],\n \"accounts\": [\n {\n \"name\": \"claimer\",\n \"docs\": [\n \"BOTMM — must be in whitelist\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 100,\n 109,\n 105,\n 110,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"AdminConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"claimer_token_account\",\n \"docs\": [\n \"BOTMM's USDC token account (source — claimer signs)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"market_oracle_vault\",\n \"docs\": [\n \"market_oracle vault — MST holder reward pool for this condition\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"initialize\",\n \"discriminator\": [\n 175,\n 175,\n 109,\n 31,\n 13,\n 152,\n 155,\n 237\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 100,\n 109,\n 105,\n 110,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"collateral_mint\"\n },\n {\n \"name\": \"admin_vault\",\n \"docs\": [\n \"ATA owned by config PDA — holds USDC for unclaimed presale revenue\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"config\"\n },\n {\n \"kind\": \"const\",\n \"value\": [\n 6,\n 221,\n 246,\n 225,\n 215,\n 101,\n 161,\n 147,\n 217,\n 203,\n 225,\n 70,\n 206,\n 235,\n 121,\n 172,\n 28,\n 180,\n 133,\n 237,\n 95,\n 91,\n 55,\n 145,\n 58,\n 140,\n 245,\n 133,\n 126,\n 255,\n 0,\n 169\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"authorized_caller\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"remove_admin\",\n \"discriminator\": [\n 74,\n 202,\n 71,\n 106,\n 252,\n 31,\n 72,\n 183\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 100,\n 109,\n 105,\n 110,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"AdminConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"remove_from_whitelist\",\n \"discriminator\": [\n 7,\n 144,\n 216,\n 239,\n 243,\n 236,\n 193,\n 235\n ],\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 100,\n 109,\n 105,\n 110,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"AdminConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"set_presale_amount\",\n \"discriminator\": [\n 73,\n 71,\n 238,\n 3,\n 202,\n 163,\n 8,\n 254\n ],\n \"accounts\": [\n {\n \"name\": \"caller\",\n \"docs\": [\n \"question_market config PDA — signs this CPI call via seeds\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 100,\n 109,\n 105,\n 110,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"AdminConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"claim_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 97,\n 105,\n 109,\n 95,\n 114,\n 101,\n 99,\n 111,\n 114,\n 100\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"update_config\",\n \"discriminator\": [\n 29,\n 158,\n 252,\n 191,\n 10,\n 83,\n 219,\n 99\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 100,\n 109,\n 105,\n 110,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"AdminConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"authorized_caller\",\n \"type\": \"pubkey\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"AdminConfig\",\n \"discriminator\": [\n 156,\n 10,\n 79,\n 161,\n 71,\n 9,\n 62,\n 77\n ]\n },\n {\n \"name\": \"ClaimRecord\",\n \"discriminator\": [\n 57,\n 229,\n 0,\n 9,\n 65,\n 62,\n 96,\n 7\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"AdminConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"collateral_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authorized_caller\",\n \"docs\": [\n \"question_market config PDA — only this can call set_presale_amount\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"admin_whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 10\n ]\n }\n },\n {\n \"name\": \"admin_whitelist_len\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 30\n ]\n }\n },\n {\n \"name\": \"whitelist_len\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"ClaimRecord\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n }\n ]\n}","import * as anchor from \"@coral-xyz/anchor\";\nimport { Connection, PublicKey } from \"@solana/web3.js\";\nimport { NetworkConfig, ProgramIds } from \"./config/networks\";\nimport { OracleClient } from \"./programs/oracle\";\nimport { HookClient } from \"./programs/hook\";\nimport { MarketClient } from \"./programs/market\";\nimport { CtfClient } from \"./programs/ctf\";\nimport { ClobClient } from \"./programs/clob\";\nimport { FeeManagementClient } from \"./programs/fee_management\";\nimport { PresaleClient } from \"./programs/presale\";\nimport { MarketOracleClient } from \"./programs/market_oracle\";\nimport { AdminClient } from \"./programs/admin\";\n\nimport oracleIdl from \"./idls/oracle.json\";\nimport hookIdl from \"./idls/hook.json\";\nimport questionMarketIdl from \"./idls/question_market.json\";\nimport conditionalTokensIdl from \"./idls/conditional_tokens.json\";\nimport clobExchangeIdl from \"./idls/clob_exchange.json\";\nimport feeManagementIdl from \"./idls/fee_management.json\";\nimport presaleIdl from \"./idls/presale.json\";\nimport marketOracleIdl from \"./idls/market_oracle.json\";\nimport adminContractIdl from \"./idls/admin_contract.json\";\n\nexport class XMarketSDK {\n readonly provider: anchor.AnchorProvider;\n readonly networkConfig: NetworkConfig;\n\n private readonly _programIds: ProgramIds;\n private readonly _marketOwner: PublicKey;\n\n private _oracle?: OracleClient;\n private _hook?: HookClient;\n private _market?: MarketClient;\n private _ctf?: CtfClient;\n private _clob?: ClobClient;\n private _fee?: FeeManagementClient;\n private _presale?: PresaleClient;\n private _marketOracle?: MarketOracleClient;\n private _admin?: AdminClient; // lazy-init in get admin()\n\n constructor(\n config: NetworkConfig,\n wallet: anchor.Wallet,\n marketOwner?: PublicKey,\n ) {\n this.networkConfig = config;\n this.provider = new anchor.AnchorProvider(\n new Connection(config.rpcUrl, \"confirmed\"),\n wallet,\n { commitment: \"confirmed\", preflightCommitment: \"confirmed\" },\n );\n anchor.setProvider(this.provider);\n this._programIds = config.programIds;\n this._marketOwner = marketOwner ?? wallet.publicKey;\n }\n\n private _withAddress(idl: object, address: PublicKey): anchor.Idl {\n return { ...idl, address: address.toBase58() } as anchor.Idl;\n }\n\n get oracle(): OracleClient {\n if (!this._oracle) {\n const program = new anchor.Program(this._withAddress(oracleIdl, this._programIds.oracle), this.provider);\n this._oracle = new OracleClient(program, this.provider, this._programIds);\n }\n return this._oracle;\n }\n\n get hook(): HookClient {\n if (!this._hook) {\n const program = new anchor.Program(this._withAddress(hookIdl, this._programIds.hook), this.provider);\n this._hook = new HookClient(program, this.provider, this._programIds);\n }\n return this._hook;\n }\n\n get market(): MarketClient {\n if (!this._market) {\n const program = new anchor.Program(this._withAddress(questionMarketIdl, this._programIds.questionMarket), this.provider);\n this._market = new MarketClient(program, this.provider, this._programIds, this._marketOwner);\n this._market.ctfClient = this.ctf;\n }\n return this._market;\n }\n\n get ctf(): CtfClient {\n if (!this._ctf) {\n const program = new anchor.Program(this._withAddress(conditionalTokensIdl, this._programIds.conditionalTokens), this.provider);\n this._ctf = new CtfClient(program, this.provider, this._programIds);\n }\n return this._ctf;\n }\n\n get clob(): ClobClient {\n if (!this._clob) {\n const program = new anchor.Program(this._withAddress(clobExchangeIdl, this._programIds.clobExchange), this.provider);\n this._clob = new ClobClient(program, this.provider, this._programIds, this.networkConfig);\n if (this.networkConfig.feeConfigOwner && this._programIds.feeManagement) {\n this._clob.feeConfigOwner = this.networkConfig.feeConfigOwner;\n this._clob.feeClient = this.fee;\n }\n }\n return this._clob;\n }\n\n get fee(): FeeManagementClient {\n if (!this._fee) {\n if (!this._programIds.feeManagement) throw new Error(\"feeManagement program ID not configured in NetworkConfig\");\n const program = new anchor.Program(this._withAddress(feeManagementIdl, this._programIds.feeManagement), this.provider);\n this._fee = new FeeManagementClient(program, this.provider, this._programIds);\n }\n return this._fee;\n }\n\n get presale(): PresaleClient {\n if (!this._presale) {\n if (!this._programIds.presale) throw new Error(\"presale program ID not configured in NetworkConfig\");\n const program = new anchor.Program(this._withAddress(presaleIdl, this._programIds.presale), this.provider);\n this._presale = new PresaleClient(program, this.provider, this._programIds);\n }\n return this._presale;\n }\n\n get marketOracle(): MarketOracleClient {\n if (!this._marketOracle) {\n if (!this._programIds.marketOracle) throw new Error(\"marketOracle program ID not configured in NetworkConfig\");\n const program = new anchor.Program(this._withAddress(marketOracleIdl, this._programIds.marketOracle), this.provider);\n this._marketOracle = new MarketOracleClient(program, this.provider, this._programIds);\n }\n return this._marketOracle;\n }\n\n get admin(): AdminClient {\n if (!this._admin) {\n if (!this._programIds.adminContract) throw new Error(\"adminContract program ID not configured in NetworkConfig\");\n const program = new anchor.Program(this._withAddress(adminContractIdl, this._programIds.adminContract), this.provider);\n this._admin = new AdminClient(program, this.provider, this._programIds);\n }\n return this._admin;\n }\n}\n","/**\n * SPL Token / Token-2022 approve utilities for the CLOB matching flow.\n *\n * Before a match instruction can transfer tokens on behalf of a user, the user\n * must approve the CLOB config PDA as a delegate. These helpers build the\n * approve transactions that need two signers:\n * - signer = the token owner (user wallet — must sign the approve instruction)\n * - payer = the BE wallet (pays transaction fees)\n *\n * Both must sign the resulting Transaction before sending.\n */\nimport {\n PublicKey,\n Transaction,\n} from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n createApproveInstruction,\n createAssociatedTokenAccountIdempotentInstruction,\n} from \"@solana/spl-token\";\nimport BN from \"bn.js\";\nimport { PDA } from \"./pda\";\nimport { ProgramIds } from \"./config/networks\";\n\n/** Maximum u64 — approve \"unlimited\" amount. */\nexport const MAX_APPROVE_AMOUNT = new BN(\"18446744073709551615\");\n\n// ─── User ATA creation ────────────────────────────────────────────────────────\n\n/**\n * Build a Transaction that creates YES and NO Token-2022 ATAs for a user\n * (idempotent — safe to call even if they already exist).\n *\n * Required signer: payer (fee payer). No user signature needed.\n *\n * @param condition - condition PDA\n * @param user - wallet that will own the ATAs\n * @param payer - fee payer wallet pubkey\n * @param programIds - network program IDs\n */\nexport function buildCreateUserAtasTx(\n condition: PublicKey,\n user: PublicKey,\n payer: PublicKey,\n programIds: ProgramIds,\n): Transaction {\n const [yesMint] = PDA.yesMint(condition, programIds);\n const [noMint] = PDA.noMint(condition, programIds);\n\n const yesAta = getAssociatedTokenAddressSync(yesMint, user, false, TOKEN_2022_PROGRAM_ID);\n const noAta = getAssociatedTokenAddressSync(noMint, user, false, TOKEN_2022_PROGRAM_ID);\n\n const tx = new Transaction();\n tx.feePayer = payer;\n tx.add(\n createAssociatedTokenAccountIdempotentInstruction(\n payer, yesAta, user, yesMint, TOKEN_2022_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID,\n ),\n createAssociatedTokenAccountIdempotentInstruction(\n payer, noAta, user, noMint, TOKEN_2022_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID,\n ),\n );\n return tx;\n}\n\n// ─── Collateral (SPL Token) approve ──────────────────────────────────────────\n\n/**\n * Build a Transaction that approves the CLOB config PDA to transfer collateral\n * (USDC) from the signer's ATA.\n *\n * Required signers: signer (token owner), payer (fee payer).\n *\n * @param collateralMint - e.g. USDC mint\n * @param signer - token owner (must sign)\n * @param payer - fee payer wallet pubkey\n * @param delegate - clob config PDA (the spender)\n * @param amount - amount to approve (defaults to MAX_APPROVE_AMOUNT)\n */\nexport function buildApproveCollateralTx(\n collateralMint: PublicKey,\n signer: PublicKey,\n payer: PublicKey,\n delegate: PublicKey,\n amount: BN = MAX_APPROVE_AMOUNT,\n): Transaction {\n const ownerAta = getAssociatedTokenAddressSync(collateralMint, signer, false, TOKEN_PROGRAM_ID);\n const approveIx = createApproveInstruction(\n ownerAta,\n delegate,\n signer,\n BigInt(amount.toString()),\n [],\n TOKEN_PROGRAM_ID,\n );\n const tx = new Transaction();\n tx.feePayer = payer;\n tx.add(approveIx);\n return tx;\n}\n\n/**\n * Build a Transaction that approves the CLOB config PDA to transfer BOTH\n * YES and NO outcome tokens from the signer's ATAs (two approve instructions).\n *\n * Required signers: signer (token owner), payer (fee payer).\n */\nexport function buildApproveAllOutcomeTokensTx(\n condition: PublicKey,\n signer: PublicKey,\n payer: PublicKey,\n delegate: PublicKey,\n programIds: ProgramIds,\n amount: BN = MAX_APPROVE_AMOUNT,\n): Transaction {\n const [yesMint] = PDA.yesMint(condition, programIds);\n const [noMint] = PDA.noMint(condition, programIds);\n\n const yesAta = getAssociatedTokenAddressSync(yesMint, signer, false, TOKEN_2022_PROGRAM_ID);\n const noAta = getAssociatedTokenAddressSync(noMint, signer, false, TOKEN_2022_PROGRAM_ID);\n const amountBig = BigInt(amount.toString());\n\n const approveYesIx = createApproveInstruction(\n yesAta, delegate, signer, amountBig, [], TOKEN_2022_PROGRAM_ID,\n );\n const approveNoIx = createApproveInstruction(\n noAta, delegate, signer, amountBig, [], TOKEN_2022_PROGRAM_ID,\n );\n\n const tx = new Transaction();\n tx.feePayer = payer;\n tx.add(approveYesIx, approveNoIx);\n return tx;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/pda.ts","../src/programs/oracle.ts","../src/programs/hook.ts","../src/types.ts","../src/programs/market.ts","../src/programs/ctf.ts","../src/signing.ts","../src/order.ts","../src/programs/clob.ts","../src/programs/fee_management.ts","../src/programs/presale.ts","../src/programs/market_oracle.ts","../src/programs/admin.ts","../src/idls/oracle.json","../src/idls/hook.json","../src/idls/question_market.json","../src/idls/conditional_tokens.json","../src/idls/clob_exchange.json","../src/idls/fee_management.json","../src/idls/presale.json","../src/idls/market_oracle.json","../src/idls/admin_contract.json","../src/sdk.ts","../src/approve.ts"],"names":["anchor","SystemProgram","QuestionStatus","PublicKey","anchor2","TOKEN_2022_PROGRAM_ID","SYSVAR_RENT_PUBKEY","TOKEN_PROGRAM_ID","getAssociatedTokenAddressSync","ASSOCIATED_TOKEN_PROGRAM_ID","Transaction","anchor3","TransactionInstruction","BN","aBuy","bBuy","Ed25519Program","SYSVAR_INSTRUCTIONS_PUBKEY","createAssociatedTokenAccountIdempotentInstruction","ComputeBudgetProgram","TransactionMessage","VersionedTransaction","anchor4","nacl","ixs"],"mappings":"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","file":"index.mjs","sourcesContent":["import { PublicKey } from \"@solana/web3.js\";\nimport BN from \"bn.js\";\nimport { createHash } from \"crypto\";\nimport { ProgramIds } from \"./config/networks\";\n\n// ─── PDA Seeds ────────────────────────────────────────────────────────────────\n// These are constants — they don't change per network.\n\nexport const SEEDS = {\n config: Buffer.from(\"config\"),\n question: Buffer.from(\"question\"),\n condition: Buffer.from(\"condition\"),\n collateralVault: Buffer.from(\"collateral_vault\"),\n vaultToken: Buffer.from(\"vault_token\"),\n position: Buffer.from(\"position\"),\n yesMint: Buffer.from(\"yes_mint\"),\n noMint: Buffer.from(\"no_mint\"),\n mintAuthority: Buffer.from(\"mint_authority\"),\n reporter: Buffer.from(\"reporter\"),\n result: Buffer.from(\"result\"),\n ctfConfig: Buffer.from(\"ctf_config\"),\n hookConfig: Buffer.from(\"hook_config\"),\n extraAccountMetas: Buffer.from(\"extra-account-metas\"),\n clobConfig: Buffer.from(\"clob_config\"),\n order: Buffer.from(\"order\"),\n feeConfig: Buffer.from(\"fee_config\"),\n questionFee: Buffer.from(\"question_fee\"),\n marketFee: Buffer.from(\"market_fee\"),\n // Presale\n presale: Buffer.from(\"presale\"),\n qtMint: Buffer.from(\"qt_mint\"),\n qtAuthority: Buffer.from(\"qt_authority\"),\n userBuy: Buffer.from(\"user_buy\"),\n // Market Oracle\n marketOracle: Buffer.from(\"market_oracle\"),\n userClaim: Buffer.from(\"user_claim\"),\n // Admin Contract\n adminConfig: Buffer.from(\"admin_config\"),\n claimRecord: Buffer.from(\"claim_record\"),\n} as const;\n\n// ─── PDA derivation helpers ───────────────────────────────────────────────────\n// All methods require explicit programIds — no hidden globals.\n\nexport class PDA {\n // ─── Question Market ────────────────────────────────────────────────────────\n\n static questionMarketConfig(\n owner: PublicKey,\n programIds: Pick<ProgramIds, \"questionMarket\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.config, owner.toBuffer()],\n programIds.questionMarket\n );\n }\n\n static question(\n config: PublicKey,\n questionId: Uint8Array,\n programIds: Pick<ProgramIds, \"questionMarket\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.question, config.toBuffer(), Buffer.from(questionId)],\n programIds.questionMarket\n );\n }\n\n // ─── Conditional Tokens ─────────────────────────────────────────────────────\n\n static ctfConfig(\n programIds: Pick<ProgramIds, \"conditionalTokens\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.ctfConfig],\n programIds.conditionalTokens\n );\n }\n\n static condition(\n oracle: PublicKey,\n questionId: Uint8Array,\n programIds: Pick<ProgramIds, \"conditionalTokens\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.condition, oracle.toBuffer(), Buffer.from(questionId)],\n programIds.conditionalTokens\n );\n }\n\n static collateralVault(\n collateralMint: PublicKey,\n programIds: Pick<ProgramIds, \"conditionalTokens\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.collateralVault, collateralMint.toBuffer()],\n programIds.conditionalTokens\n );\n }\n\n static vaultToken(\n collateralMint: PublicKey,\n programIds: Pick<ProgramIds, \"conditionalTokens\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.vaultToken, collateralMint.toBuffer()],\n programIds.conditionalTokens\n );\n }\n\n static yesMint(\n condition: PublicKey,\n programIds: Pick<ProgramIds, \"conditionalTokens\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.yesMint, condition.toBuffer()],\n programIds.conditionalTokens\n );\n }\n\n static noMint(\n condition: PublicKey,\n programIds: Pick<ProgramIds, \"conditionalTokens\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.noMint, condition.toBuffer()],\n programIds.conditionalTokens\n );\n }\n\n static mintAuthority(\n condition: PublicKey,\n programIds: Pick<ProgramIds, \"conditionalTokens\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.mintAuthority, condition.toBuffer()],\n programIds.conditionalTokens\n );\n }\n\n static position(\n condition: PublicKey,\n outcomeIndex: number,\n owner: PublicKey,\n programIds: Pick<ProgramIds, \"conditionalTokens\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.position, condition.toBuffer(), Buffer.from([outcomeIndex]), owner.toBuffer()],\n programIds.conditionalTokens\n );\n }\n\n // ─── Oracle ─────────────────────────────────────────────────────────────────\n\n static oracleConfig(\n owner: PublicKey,\n programIds: Pick<ProgramIds, \"oracle\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.config, owner.toBuffer()],\n programIds.oracle\n );\n }\n\n static reporter(\n oracleConfig: PublicKey,\n reporterAddress: PublicKey,\n programIds: Pick<ProgramIds, \"oracle\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.reporter, oracleConfig.toBuffer(), reporterAddress.toBuffer()],\n programIds.oracle\n );\n }\n\n static questionResult(\n oracleConfig: PublicKey,\n questionId: Uint8Array,\n programIds: Pick<ProgramIds, \"oracle\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.result, oracleConfig.toBuffer(), Buffer.from(questionId)],\n programIds.oracle\n );\n }\n\n // ─── Hook ───────────────────────────────────────────────────────────────────\n\n static hookConfig(\n programIds: Pick<ProgramIds, \"hook\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.hookConfig],\n programIds.hook\n );\n }\n\n static extraAccountMetaList(\n mint: PublicKey,\n programIds: Pick<ProgramIds, \"hook\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.extraAccountMetas, mint.toBuffer()],\n programIds.hook\n );\n }\n\n // ─── CLOB ───────────────────────────────────────────────────────────────────\n\n static clobConfig(\n programIds: Pick<ProgramIds, \"clobExchange\">\n ): [PublicKey, number] {\n return PublicKey.findProgramAddressSync(\n [SEEDS.clobConfig],\n programIds.clobExchange\n );\n }\n\n static orderStatus(\n maker: PublicKey,\n nonce: BN,\n programIds: Pick<ProgramIds, \"clobExchange\">\n ): [PublicKey, number] {\n const nonceBuf = Buffer.alloc(8);\n nonceBuf.writeBigUInt64LE(BigInt(nonce.toString()));\n return PublicKey.findProgramAddressSync(\n [SEEDS.order, maker.toBuffer(), nonceBuf],\n programIds.clobExchange\n );\n }\n\n static orderRecord(\n maker: PublicKey,\n nonce: BN,\n programIds: Pick<ProgramIds, \"clobExchange\">\n ): [PublicKey, number] {\n const nonceBuf = Buffer.alloc(8);\n nonceBuf.writeBigUInt64LE(BigInt(nonce.toString()));\n return PublicKey.findProgramAddressSync(\n [Buffer.from(\"order_record\"), maker.toBuffer(), nonceBuf],\n programIds.clobExchange\n );\n }\n\n // ─── Fee Management ─────────────────────────────────────────────────────────\n\n static feeConfig(\n owner: PublicKey,\n programIds: Pick<ProgramIds, \"feeManagement\">\n ): [PublicKey, number] {\n if (!programIds.feeManagement) throw new Error(\"feeManagement program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.feeConfig, owner.toBuffer()],\n programIds.feeManagement\n );\n }\n\n static questionFee(\n conditionPda: PublicKey,\n programIds: Pick<ProgramIds, \"feeManagement\">\n ): [PublicKey, number] {\n if (!programIds.feeManagement) throw new Error(\"feeManagement program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.questionFee, conditionPda.toBuffer()],\n programIds.feeManagement\n );\n }\n\n static marketFeeOverride(\n conditionPda: PublicKey,\n programIds: Pick<ProgramIds, \"feeManagement\">\n ): [PublicKey, number] {\n if (!programIds.feeManagement) throw new Error(\"feeManagement program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.marketFee, conditionPda.toBuffer()],\n programIds.feeManagement\n );\n }\n\n // ─── Presale ─────────────────────────────────────────────────────────────────\n\n static presale(\n questionMarketConfig: PublicKey,\n presaleIndex: BN,\n programIds: Pick<ProgramIds, \"presale\">\n ): [PublicKey, number] {\n if (!programIds.presale) throw new Error(\"presale program ID not configured\");\n const idxBuf = Buffer.alloc(8);\n idxBuf.writeBigUInt64LE(BigInt(presaleIndex.toString()));\n return PublicKey.findProgramAddressSync(\n [SEEDS.presale, questionMarketConfig.toBuffer(), idxBuf],\n programIds.presale\n );\n }\n\n static qtMint(\n presalePda: PublicKey,\n programIds: Pick<ProgramIds, \"presale\">\n ): [PublicKey, number] {\n if (!programIds.presale) throw new Error(\"presale program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.qtMint, presalePda.toBuffer()],\n programIds.presale\n );\n }\n\n static qtAuthority(\n presalePda: PublicKey,\n programIds: Pick<ProgramIds, \"presale\">\n ): [PublicKey, number] {\n if (!programIds.presale) throw new Error(\"presale program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.qtAuthority, presalePda.toBuffer()],\n programIds.presale\n );\n }\n\n static userBuyRecord(\n presalePda: PublicKey,\n user: PublicKey,\n programIds: Pick<ProgramIds, \"presale\">\n ): [PublicKey, number] {\n if (!programIds.presale) throw new Error(\"presale program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.userBuy, presalePda.toBuffer(), user.toBuffer()],\n programIds.presale\n );\n }\n\n // ─── Market Oracle ────────────────────────────────────────────────────────────\n\n static marketOraclePda(\n questionPda: PublicKey,\n programIds: Pick<ProgramIds, \"marketOracle\">\n ): [PublicKey, number] {\n if (!programIds.marketOracle) throw new Error(\"marketOracle program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.marketOracle, questionPda.toBuffer()],\n programIds.marketOracle\n );\n }\n\n static userClaimRecord(\n marketOraclePda: PublicKey,\n user: PublicKey,\n programIds: Pick<ProgramIds, \"marketOracle\">\n ): [PublicKey, number] {\n if (!programIds.marketOracle) throw new Error(\"marketOracle program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.userClaim, marketOraclePda.toBuffer(), user.toBuffer()],\n programIds.marketOracle\n );\n }\n\n // ─── Admin Contract ──────────────────────────────────────────────────────\n\n static adminConfig(\n owner: PublicKey,\n programIds: Pick<ProgramIds, \"adminContract\">\n ): [PublicKey, number] {\n if (!programIds.adminContract) throw new Error(\"adminContract program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.adminConfig, owner.toBuffer()],\n programIds.adminContract\n );\n }\n\n static claimRecord(\n conditionId: Uint8Array,\n programIds: Pick<ProgramIds, \"adminContract\">\n ): [PublicKey, number] {\n if (!programIds.adminContract) throw new Error(\"adminContract program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.claimRecord, conditionId],\n programIds.adminContract\n );\n }\n}\n\n// ─── Utilities ────────────────────────────────────────────────────────────────\n\n/** Unique 32-byte question ID: SHA-256(content + timestamp). Different each call. */\nexport function generateQuestionId(content: string, salt?: number): Uint8Array {\n const input = content + (salt ?? Date.now());\n return new Uint8Array(createHash(\"sha256\").update(input).digest());\n}\n\n/** Deterministic 32-byte content hash: SHA-256(content). Same content = same hash. */\nexport function generateContentHash(content: string): Uint8Array {\n return new Uint8Array(createHash(\"sha256\").update(content).digest());\n}\n","import * as anchor from \"@coral-xyz/anchor\";\nimport { PublicKey, SystemProgram, Transaction } from \"@solana/web3.js\";\nimport { PDA } from \"../pda\";\nimport { ProgramIds } from \"../config/networks\";\nimport { OracleConfig, QuestionResult, TxResult } from \"../types\";\n\nexport class OracleClient {\n private readonly program: anchor.Program;\n private readonly provider: anchor.AnchorProvider;\n private readonly programIds: ProgramIds;\n\n constructor(\n program: anchor.Program,\n provider: anchor.AnchorProvider,\n programIds: ProgramIds\n ) {\n this.program = program;\n this.provider = provider;\n this.programIds = programIds;\n }\n\n get walletPubkey(): PublicKey {\n return this.provider.wallet.publicKey;\n }\n\n configPda(owner: PublicKey = this.walletPubkey): PublicKey {\n return PDA.oracleConfig(owner, this.programIds)[0];\n }\n\n // ─── Instructions ────────────────────────────────────────────────────────────\n\n /** One-time setup. Caller becomes owner. */\n async initialize(admin: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .initialize(admin)\n .accounts({\n owner: this.walletPubkey,\n oracleConfig: this.configPda(),\n systemProgram: SystemProgram.programId,\n })\n .rpc();\n return { signature: sig };\n }\n\n /** Admin or owner adds an address to the oracle resolver whitelist. */\n async addToWhitelist(address: PublicKey, ownerPubkey?: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .addToWhitelist(address)\n .accounts({\n authority: this.walletPubkey,\n payer: this.walletPubkey,\n oracleConfig: this.configPda(ownerPubkey),\n })\n .rpc();\n return { signature: sig };\n }\n\n /** Admin or owner removes an address from the oracle resolver whitelist. */\n async removeFromWhitelist(address: PublicKey, ownerPubkey?: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .removeFromWhitelist(address)\n .accounts({\n authority: this.walletPubkey,\n payer: this.walletPubkey,\n oracleConfig: this.configPda(ownerPubkey),\n })\n .rpc();\n return { signature: sig };\n }\n\n /**\n * Whitelisted reporter resolves a question.\n * reporter signs the instruction; payer covers the tx fee (Kora pattern).\n */\n async resolveQuestion(\n questionId: Uint8Array,\n outcomeCount: number,\n payoutNumerators: number[],\n conditionPda: PublicKey,\n reporter: PublicKey = this.walletPubkey,\n payer: PublicKey = this.walletPubkey,\n ownerPubkey?: PublicKey,\n ): Promise<Transaction> {\n const oracleConfig = this.configPda(ownerPubkey);\n const [questionResultPda] = PDA.questionResult(oracleConfig, questionId, this.programIds);\n return this.program.methods\n .resolveQuestion(\n Array.from(questionId) as number[],\n outcomeCount,\n payoutNumerators.map((n) => new anchor.BN(n))\n )\n .accounts({\n reporter,\n oracleConfig,\n questionResult: questionResultPda,\n condition: conditionPda,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n payer,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n /** Owner updates the admin. */\n async updateAdmin(newAdmin: PublicKey, ownerPubkey?: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .updateAdmin(newAdmin)\n .accounts({\n owner: this.walletPubkey,\n payer: this.walletPubkey,\n oracleConfig: this.configPda(ownerPubkey),\n })\n .rpc();\n return { signature: sig };\n }\n\n /** Owner transfers ownership to a new keypair. */\n async transferOwnership(newOwner: PublicKey, ownerPubkey?: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .transferOwnership(newOwner)\n .accounts({\n owner: this.walletPubkey,\n oracleConfig: this.configPda(ownerPubkey),\n })\n .rpc();\n return { signature: sig };\n }\n\n /** Admin or owner pause/unpause the oracle. */\n async pause(paused: boolean, ownerPubkey?: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .pause(paused)\n .accounts({\n authority: this.walletPubkey,\n oracleConfig: this.configPda(ownerPubkey),\n })\n .rpc();\n return { signature: sig };\n }\n\n // ─── Queries ─────────────────────────────────────────────────────────────────\n\n async fetchConfig(owner?: PublicKey): Promise<OracleConfig | null> {\n try {\n const acc = await (this.program.account as any).oracleConfig.fetch(\n this.configPda(owner ?? this.walletPubkey)\n );\n return {\n owner: acc.owner,\n admin: acc.admin,\n questionCount: acc.questionCount.toNumber(),\n whitelist: acc.whitelist as PublicKey[],\n whitelistLen: acc.whitelistLen,\n isPaused: acc.isPaused,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchQuestionResult(\n questionId: Uint8Array,\n ownerPubkey?: PublicKey\n ): Promise<QuestionResult | null> {\n try {\n const oracleConfig = this.configPda(ownerPubkey);\n const [pda] = PDA.questionResult(oracleConfig, questionId, this.programIds);\n const acc = await (this.program.account as any).questionResult.fetch(pda);\n return {\n oracleConfig: acc.oracleConfig,\n questionId: new Uint8Array(acc.questionId),\n outcomeIndex: acc.outcomeIndex,\n outcomeCount: acc.outcomeCount,\n payoutNumerators: acc.payoutNumerators,\n isResolved: acc.isResolved,\n resolvedAt: acc.resolvedAt.toNumber(),\n reporter: acc.reporter,\n condition: acc.condition ?? null,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n}\n","import * as anchor from \"@coral-xyz/anchor\";\nimport { PublicKey, SystemProgram } from \"@solana/web3.js\";\nimport { TOKEN_2022_PROGRAM_ID } from \"@solana/spl-token\";\nimport { PDA } from \"../pda\";\nimport { ProgramIds } from \"../config/networks\";\nimport { HookConfig, TxResult } from \"../types\";\n\nexport class HookClient {\n private readonly program: anchor.Program;\n private readonly provider: anchor.AnchorProvider;\n private readonly programIds: ProgramIds;\n\n constructor(\n program: anchor.Program,\n provider: anchor.AnchorProvider,\n programIds: ProgramIds\n ) {\n this.program = program;\n this.provider = provider;\n this.programIds = programIds;\n }\n\n get walletPubkey(): PublicKey {\n return this.provider.wallet.publicKey;\n }\n\n configPda(): PublicKey {\n return PDA.hookConfig(this.programIds)[0];\n }\n\n // ─── Instructions ────────────────────────────────────────────────────────────\n\n /** One-time setup. Caller becomes owner. */\n async initialize(initialWhitelist: PublicKey[]): Promise<TxResult> {\n const sig = await this.program.methods\n .initializeHookConfig(initialWhitelist)\n .accounts({\n owner: this.walletPubkey,\n hookConfig: this.configPda(),\n systemProgram: SystemProgram.programId,\n })\n .rpc();\n return { signature: sig };\n }\n\n /**\n * Register extra account metas for a Token-2022 YES/NO mint.\n * Must be called once per mint after CTF creates it.\n */\n async initializeExtraAccountMetaList(mint: PublicKey): Promise<TxResult> {\n const [extraAccountMetaList] = PDA.extraAccountMetaList(mint, this.programIds);\n const sig = await this.program.methods\n .initializeExtraAccountMetaList()\n .accounts({\n payer: this.walletPubkey,\n extraAccountMetaList,\n mint,\n hookConfig: this.configPda(),\n tokenProgram: TOKEN_2022_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .rpc();\n return { signature: sig };\n }\n\n /** Owner adds a program to the transfer whitelist. */\n async addToWhitelist(program: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .addToWhitelist(program)\n .accounts({\n owner: this.walletPubkey,\n hookConfig: this.configPda(),\n })\n .rpc();\n return { signature: sig };\n }\n\n /** Owner removes a program from the transfer whitelist. */\n async removeFromWhitelist(program: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .removeFromWhitelist(program)\n .accounts({\n owner: this.walletPubkey,\n hookConfig: this.configPda(),\n })\n .rpc();\n return { signature: sig };\n }\n\n /** Permanently freeze the whitelist — no further changes allowed. */\n async freezeWhitelist(): Promise<TxResult> {\n const sig = await this.program.methods\n .freezeWhitelist()\n .accounts({\n owner: this.walletPubkey,\n hookConfig: this.configPda(),\n })\n .rpc();\n return { signature: sig };\n }\n\n /**\n * SPL Transfer-Hook `execute` — invoked automatically by Token-2022 on every\n * YES/NO token transfer. Validates the destination against the whitelist.\n *\n * Calling this directly is useful for:\n * - Off-chain simulation (\"would this transfer be allowed?\")\n * - Integration tests that verify whitelist enforcement\n *\n * Token-2022 calls this automatically; you normally don't call it manually.\n *\n * @param sourceToken - Source token account (tokens leaving)\n * @param mint - The YES/NO Token-2022 mint\n * @param destinationToken - Destination token account (tokens arriving)\n * @param owner - Authority that authorized the transfer\n * @param amount - Token amount being transferred\n */\n async execute(\n sourceToken: PublicKey,\n mint: PublicKey,\n destinationToken: PublicKey,\n owner: PublicKey,\n amount: anchor.BN\n ): Promise<TxResult> {\n const [extraAccountMetaList] = PDA.extraAccountMetaList(mint, this.programIds);\n const sig = await this.program.methods\n .execute(amount)\n .accounts({\n sourceToken,\n mint,\n destinationToken,\n owner,\n extraAccountMetaList,\n hookConfig: this.configPda(),\n })\n .rpc();\n return { signature: sig };\n }\n\n // ─── Queries ─────────────────────────────────────────────────────────────────\n\n async fetchConfig(): Promise<HookConfig | null> {\n try {\n const acc = await (this.program.account as any).hookConfig.fetch(this.configPda());\n return {\n owner: acc.owner,\n whitelist: acc.whitelist as PublicKey[],\n whitelistLen: acc.whitelistLen,\n isFrozen: acc.isFrozen,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async isWhitelisted(program: PublicKey): Promise<boolean> {\n const config = await this.fetchConfig();\n if (!config) return false;\n return config.whitelist.some((p) => p.equals(program));\n }\n}\n","import { PublicKey } from \"@solana/web3.js\";\nimport BN from \"bn.js\";\n\n// ─── Shared ───────────────────────────────────────────────────────────────────\n\nexport interface TxResult {\n signature: string;\n}\n\n// ─── Oracle ───────────────────────────────────────────────────────────────────\n\nexport interface OracleConfig {\n owner: PublicKey;\n admin: PublicKey;\n questionCount: number;\n whitelist: PublicKey[];\n whitelistLen: number;\n isPaused: boolean;\n bump: number;\n}\n\nexport interface QuestionResult {\n oracleConfig: PublicKey;\n questionId: Uint8Array;\n outcomeIndex: number;\n outcomeCount: number;\n payoutNumerators: BN[];\n isResolved: boolean;\n resolvedAt: number;\n reporter: PublicKey;\n condition: PublicKey | null;\n bump: number;\n}\n\n// ─── Conditional Tokens ───────────────────────────────────────────────────────\n\nexport interface Condition {\n oracle: PublicKey;\n questionId: Uint8Array;\n outcomeSlotCount: number;\n payoutNumerators: BN[];\n payoutDenominator: BN;\n totalCollateral: BN;\n collateralMint: PublicKey;\n collateralVault: PublicKey;\n yesMint: PublicKey;\n noMint: PublicKey;\n hookProgram: PublicKey;\n authorizedClob: PublicKey;\n isResolved: boolean;\n resolvedAt: number;\n bump: number;\n}\n\nexport interface CollateralVault {\n collateralMint: PublicKey;\n vaultTokenAccount: PublicKey;\n totalLocked: BN;\n conditionCount: BN;\n bump: number;\n vaultBump: number;\n}\n\nexport interface Position {\n owner: PublicKey;\n condition: PublicKey;\n outcomeIndex: number;\n balance: BN;\n bump: number;\n}\n\n// ─── Question Market ──────────────────────────────────────────────────────────\n\nexport enum QuestionStatus {\n Pending = \"pending\",\n Approved = \"approved\",\n Rejected = \"rejected\",\n Resolved = \"resolved\",\n}\n\nexport interface QuestionMarketConfig {\n owner: PublicKey;\n admin: PublicKey;\n oracle: PublicKey;\n conditionalTokensProgram: PublicKey;\n questionCount: number;\n approvedCount: number;\n rejectedCount: number;\n presaleCount: number;\n whitelist: PublicKey[];\n whitelistLen: number;\n isPaused: boolean;\n bump: number;\n}\n\nexport interface Question {\n config: PublicKey;\n questionId: Uint8Array;\n contentHash: Uint8Array;\n expirationTime: number;\n currencyMint: PublicKey;\n creator: PublicKey;\n condition: PublicKey | null;\n status: QuestionStatus;\n createdAt: number;\n approvedAt: number;\n resolvedAt: number;\n bump: number;\n}\n\nexport interface CreateQuestionParams {\n /** Human-readable question text — used to derive questionId + contentHash */\n content: string;\n /** Expiration as Unix timestamp */\n expirationTime: number;\n /** Collateral mint (e.g. USDC) */\n collateralMint: PublicKey;\n /** Hook program ID for Token-2022 transfer enforcement */\n hookProgram: PublicKey;\n /** Authorized CLOB program ID */\n authorizedClob: PublicKey;\n /** Override auto-generated questionId */\n questionId?: Uint8Array;\n /** Override auto-generated contentHash */\n contentHash?: Uint8Array;\n}\n\n// ─── Conditional Tokens (CtfConfig) ──────────────────────────────────────────\n\nexport interface CtfConfig {\n owner: PublicKey;\n bump: number;\n}\n\n// ─── Hook ─────────────────────────────────────────────────────────────────────\n\nexport interface HookConfig {\n owner: PublicKey;\n whitelist: PublicKey[];\n whitelistLen: number;\n isFrozen: boolean;\n bump: number;\n}\n\n// ─── CLOB Exchange ────────────────────────────────────────────────────────────\n\nexport interface ClobConfig {\n owner: PublicKey;\n operators: PublicKey[];\n operatorsLen: number;\n feeRecipient: PublicKey;\n feeRateBps: number;\n conditionalTokensProgram: PublicKey;\n isPaused: boolean;\n bump: number;\n}\n\nexport interface OrderStatus {\n maker: PublicKey;\n nonce: BN;\n filledAmount: BN;\n bump: number;\n}\n\n// ─── Fee Management ───────────────────────────────────────────────────────────\n\n/** Per-question fee rates, all out of FEE_DENOMINATOR (10_000). E.g. 200 = 2%, 2_000 = 20% */\nexport interface QuestionFee {\n conditionId: Uint8Array;\n mergeFee: BN;\n redeemFee: BN;\n swapFee: BN;\n bump: number;\n}\n\nexport const FEE_DENOMINATOR = 10_000;\n\n/**\n * Off-chain order struct passed as instruction data.\n * Operator validates + submits matched order pairs on-chain.\n *\n * Semantics (mirrors EVM makerAmount/takerAmount):\n * BUY (side=0): makerAmount = USDC paid, takerAmount = CTF tokens received\n * SELL (side=1): makerAmount = CTF tokens given, takerAmount = USDC received\n */\nexport interface Order {\n /** Maker's wallet public key */\n maker: PublicKey;\n /** Condition PDA this order belongs to */\n condition: PublicKey;\n /** Outcome token: 0 = NO, 1 = YES */\n tokenId: number;\n /** Side: 0 = BUY (give USDC, want tokens), 1 = SELL (give tokens, want USDC) — matches EVM convention */\n side: number;\n /** Amount the maker puts in: BUY → USDC, SELL → CTF tokens */\n makerAmount: BN;\n /** Amount the maker wants to receive: BUY → CTF tokens, SELL → USDC */\n takerAmount: BN;\n /** Unique nonce per maker — used for OrderStatus PDA + replay protection */\n nonce: BN;\n /** Unix timestamp expiry (0 = no expiry) */\n expiry: BN;\n /** Creation timestamp (Unix seconds) */\n createdAt: BN;\n /** Fixed USDC amount (9 decimals) taker pays to treasury after all fills. 0 = no fee. Set by operator off-chain. */\n fee: BN;\n /** Directed order: only this pubkey can be counterparty. PublicKey.default() = public */\n taker: PublicKey;\n /** Ed25519 signer key. Must equal maker for now (proxy not supported) */\n signer: PublicKey;\n}\n\n/**\n * Signed order — Order + 64-byte Ed25519 signature over serializeOrderToBytes().\n * This is the on-chain instruction data type for all match_* instructions.\n */\nexport interface SignedOrder {\n order: Order;\n /** Ed25519 signature (64 bytes) from order.maker over serializeOrderToBytes() */\n signature: Uint8Array;\n}\n\n// ─── Errors ───────────────────────────────────────────────────────────────────\n\nexport class XMarketError extends Error {\n constructor(message: string, public code?: string) {\n super(message);\n this.name = \"XMarketError\";\n }\n}\n\nexport class UnauthorizedError extends XMarketError {\n constructor(msg = \"Unauthorized\") {\n super(msg, \"UNAUTHORIZED\");\n this.name = \"UnauthorizedError\";\n }\n}\n\nexport class AccountNotFoundError extends XMarketError {\n constructor(account: string, address?: string) {\n super(`${account} not found${address ? `: ${address}` : \"\"}`, \"NOT_FOUND\");\n this.name = \"AccountNotFoundError\";\n }\n}\n\nexport class InvalidParamError extends XMarketError {\n constructor(msg = \"Invalid parameter\") {\n super(msg, \"INVALID_PARAM\");\n this.name = \"InvalidParamError\";\n }\n}\n","import * as anchor from \"@coral-xyz/anchor\";\nimport {\n PublicKey, SystemProgram, SYSVAR_RENT_PUBKEY, Transaction, ComputeBudgetProgram,\n VersionedTransaction, TransactionMessage, AddressLookupTableAccount,\n} from \"@solana/web3.js\";\n\nconst TOKEN_METADATA_PROGRAM_ID = new PublicKey(\"metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s\");\nimport {\n TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n} from \"@solana/spl-token\";\nimport { PDA, generateQuestionId, generateContentHash } from \"../pda\";\nimport { ProgramIds } from \"../config/networks\";\nimport {\n QuestionMarketConfig,\n Question,\n QuestionStatus,\n CreateQuestionParams,\n Position,\n} from \"../types\";\nimport type { CtfClient } from \"./ctf\";\n\nexport class MarketClient {\n private readonly program: anchor.Program;\n private readonly provider: anchor.AnchorProvider;\n private readonly programIds: ProgramIds;\n readonly configPda: PublicKey;\n\n /** Injected by XMarketSDK after construction — enables fetchQuestionBalances. */\n ctfClient?: CtfClient;\n\n constructor(\n program: anchor.Program,\n provider: anchor.AnchorProvider,\n programIds: ProgramIds,\n ownerPubkey: PublicKey\n ) {\n this.program = program;\n this.provider = provider;\n this.programIds = programIds;\n this.configPda = PDA.questionMarketConfig(ownerPubkey, programIds)[0];\n }\n\n get walletPubkey(): PublicKey {\n return this.provider.wallet.publicKey;\n }\n\n // ─── Instructions (return Transaction — caller signs + sends) ───────────────\n\n async initialize(\n admin: PublicKey,\n oracle: PublicKey,\n owner: PublicKey = this.walletPubkey\n ): Promise<Transaction> {\n return this.program.methods\n .initialize({\n admin,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n oracle,\n })\n .accounts({\n owner,\n config: this.configPda,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n /**\n * Build createQuestionAdmin transaction (whitelist/admin path — status = Approved immediately).\n * @param creator - Whitelisted creator (must be in whitelist or be admin/owner)\n * @param payer - Fee payer (pays rent; can differ from creator)\n */\n async createQuestionAdmin(\n params: CreateQuestionParams,\n oracle: PublicKey,\n creator: PublicKey = this.walletPubkey,\n payer: PublicKey = this.walletPubkey\n ): Promise<{ tx: Transaction; questionPda: PublicKey; conditionPda: PublicKey; questionId: Uint8Array }> {\n const questionId = params.questionId ?? generateQuestionId(params.content);\n const contentHash = params.contentHash ?? generateContentHash(params.content);\n\n const [questionPda] = PDA.question(this.configPda, questionId, this.programIds);\n const [conditionPda] = PDA.condition(oracle, questionId, this.programIds);\n const [yesMint] = PDA.yesMint(conditionPda, this.programIds);\n const [noMint] = PDA.noMint(conditionPda, this.programIds);\n const [mintAuthority] = PDA.mintAuthority(conditionPda, this.programIds);\n const [collateralVault] = PDA.collateralVault(params.collateralMint, this.programIds);\n\n if (!this.programIds.feeManagement) throw new Error(\"feeManagement program ID not configured\");\n const [questionFeePda] = PDA.questionFee(conditionPda, this.programIds);\n\n const tx = await this.program.methods\n .createQuestionAdmin({\n questionId: Array.from(questionId) as number[],\n contentHash: Array.from(contentHash) as number[],\n hookProgram: params.hookProgram,\n authorizedClob: params.authorizedClob,\n expirationTime: new anchor.BN(params.expirationTime),\n })\n .accounts({\n creator,\n payer,\n config: this.configPda,\n question: questionPda,\n currencyMint: params.collateralMint,\n oracle,\n condition: conditionPda,\n yesMint,\n noMint,\n mintAuthority,\n collateralVault,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n questionFee: questionFeePda,\n feeManagementProgram: this.programIds.feeManagement,\n tokenProgram: TOKEN_2022_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n rent: SYSVAR_RENT_PUBKEY,\n })\n .transaction();\n\n return { tx, questionPda, conditionPda, questionId };\n }\n\n async approveQuestion(\n questionPda: PublicKey,\n admin: PublicKey = this.walletPubkey,\n payer: PublicKey = admin\n ): Promise<Transaction> {\n return this.program.methods\n .approveQuestion()\n .accounts({\n admin,\n payer,\n config: this.configPda,\n question: questionPda,\n })\n .transaction();\n }\n\n async updateConfig(\n params: { newAdmin?: PublicKey; newOracle?: PublicKey; isPaused?: boolean; newConditionalTokensProgram?: PublicKey },\n authority: PublicKey = this.walletPubkey,\n payer: PublicKey = authority\n ): Promise<Transaction> {\n return this.program.methods\n .updateConfig({\n newAdmin: params.newAdmin ?? null,\n newOracle: params.newOracle ?? null,\n isPaused: params.isPaused ?? null,\n newConditionalTokensProgram: params.newConditionalTokensProgram ?? null,\n })\n .accounts({\n authority,\n payer,\n config: this.configPda,\n })\n .transaction();\n }\n\n /** Set the admin (owner only). Replaces any existing admin. */\n async addAdmin(\n newAdmin: PublicKey,\n owner: PublicKey = this.walletPubkey\n ): Promise<Transaction> {\n return this.program.methods\n .addAdmin(newAdmin)\n .accounts({\n owner,\n config: this.configPda,\n })\n .transaction();\n }\n\n /** Clear the admin (owner only). Sets admin to default pubkey. */\n async removeAdmin(\n owner: PublicKey = this.walletPubkey\n ): Promise<Transaction> {\n return this.program.methods\n .removeAdmin()\n .accounts({\n owner,\n config: this.configPda,\n })\n .transaction();\n }\n\n async addToWhitelist(\n address: PublicKey,\n authority: PublicKey = this.walletPubkey,\n payer: PublicKey = authority\n ): Promise<Transaction> {\n return this.program.methods\n .addToWhitelist(address)\n .accounts({\n authority,\n payer,\n config: this.configPda,\n })\n .transaction();\n }\n\n async removeFromWhitelist(\n address: PublicKey,\n authority: PublicKey = this.walletPubkey,\n payer: PublicKey = authority\n ): Promise<Transaction> {\n return this.program.methods\n .removeFromWhitelist(address)\n .accounts({\n authority,\n payer,\n config: this.configPda,\n })\n .transaction();\n }\n\n async growConfig(\n owner: PublicKey = this.walletPubkey,\n payer: PublicKey = owner\n ): Promise<Transaction> {\n return this.program.methods\n .growConfig()\n .accounts({\n payer,\n owner,\n config: this.configPda,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n async restoreConfig(\n snapshot: Buffer,\n owner: PublicKey = this.walletPubkey,\n payer: PublicKey = owner\n ): Promise<Transaction> {\n return this.program.methods\n .restoreConfig(Array.from(snapshot))\n .accounts({\n payer,\n owner,\n config: this.configPda,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n // ─── Queries ─────────────────────────────────────────────────────────────────\n\n async fetchConfig(): Promise<QuestionMarketConfig | null> {\n try {\n const acc = await (this.program.account as any).questionMarketConfig.fetch(this.configPda);\n return {\n owner: acc.owner,\n admin: acc.admin,\n oracle: acc.oracle,\n conditionalTokensProgram: acc.conditionalTokensProgram,\n questionCount: acc.questionCount.toNumber(),\n approvedCount: acc.approvedCount.toNumber(),\n rejectedCount: acc.rejectedCount.toNumber(),\n presaleCount: acc.presaleCount.toNumber(),\n whitelist: acc.whitelist as PublicKey[],\n whitelistLen: acc.whitelistLen,\n isPaused: acc.isPaused,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchQuestion(questionPda: PublicKey): Promise<Question | null> {\n try {\n const acc = await (this.program.account as any).question.fetch(questionPda);\n return {\n config: acc.config,\n questionId: new Uint8Array(acc.questionId),\n contentHash: new Uint8Array(acc.contentHash),\n expirationTime: acc.expirationTime.toNumber(),\n currencyMint: acc.currencyMint,\n creator: acc.creator,\n condition: acc.condition ?? null,\n status: this._parseStatus(acc.status),\n createdAt: acc.createdAt.toNumber(),\n approvedAt: acc.approvedAt.toNumber(),\n resolvedAt: acc.resolvedAt.toNumber(),\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n questionPda(questionId: Uint8Array): PublicKey {\n return PDA.question(this.configPda, questionId, this.programIds)[0];\n }\n\n private _parseStatus(raw: any): QuestionStatus {\n if (raw.pending !== undefined) return QuestionStatus.Pending;\n if (raw.approved !== undefined) return QuestionStatus.Approved;\n if (raw.rejected !== undefined) return QuestionStatus.Rejected;\n if (raw.resolved !== undefined) return QuestionStatus.Resolved;\n return QuestionStatus.Pending;\n }\n\n /**\n * Convenience: fetch YES and NO token balances for a question.\n * Returns null for each if question not approved or position not initialized.\n * Requires ctfClient to be injected (done automatically by XMarketSDK).\n */\n async fetchQuestionBalances(\n questionPda: PublicKey,\n owner: PublicKey\n ): Promise<{ yes: Position | null; no: Position | null }> {\n if (!this.ctfClient) return { yes: null, no: null };\n const q = await this.fetchQuestion(questionPda);\n if (!q || !q.condition) return { yes: null, no: null };\n return this.ctfClient.fetchBothPositions(q.condition, owner);\n }\n\n // ─── Presale instructions ────────────────────────────────────────────────────\n\n /**\n * Any user creates a presale + initial buy (question-market::create_presale).\n * Reads agents_rev / company_rev from fee_config.\n *\n * @param feeConfig fee_management fee_config PDA (owner = feeConfigOwner)\n * @param currencyMint collateral token (e.g. USDC)\n * @param presaleIndex config.presale_count — fetch config first or pass 0 for first presale\n */\n async createPresale(\n params: {\n price: anchor.BN;\n startTime: anchor.BN;\n endTime: anchor.BN;\n initialBuyAmount: anchor.BN;\n },\n feeConfig: PublicKey,\n currencyMint: PublicKey,\n presaleIndex: anchor.BN,\n creator: PublicKey = this.walletPubkey,\n payer: PublicKey = creator,\n ): Promise<{ tx: Transaction; presalePda: PublicKey; qtMint: PublicKey }> {\n if (!this.programIds.presale) throw new Error(\"presale program ID not configured\");\n\n const [presalePda] = PDA.presale(this.configPda, presaleIndex, this.programIds);\n const [qtMint] = PDA.qtMint(presalePda, this.programIds);\n const [qtAuthority] = PDA.qtAuthority(presalePda, this.programIds);\n const [userBuyRecord] = PDA.userBuyRecord(presalePda, creator, this.programIds);\n\n const presaleVault = getAssociatedTokenAddressSync(currencyMint, presalePda, true);\n const creatorQtAta = getAssociatedTokenAddressSync(qtMint, creator);\n const creatorCurrencyAta = getAssociatedTokenAddressSync(currencyMint, creator);\n const [qtMetadata] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"metadata\"), TOKEN_METADATA_PROGRAM_ID.toBuffer(), qtMint.toBuffer()],\n TOKEN_METADATA_PROGRAM_ID,\n );\n\n const tx = await this.program.methods\n .createPresale({\n price: params.price,\n startTime: params.startTime,\n endTime: params.endTime,\n initialBuyAmount: params.initialBuyAmount,\n })\n .accounts({\n creator,\n payer,\n config: this.configPda,\n feeConfig,\n presale: presalePda,\n qtMint,\n qtAuthority,\n currencyMint,\n presaleVault,\n creatorCurrencyAta,\n creatorQtAta,\n userBuyRecord,\n qtMetadata,\n tokenMetadataProgram: TOKEN_METADATA_PROGRAM_ID,\n presaleProgram: this.programIds.presale,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n rent: SYSVAR_RENT_PUBKEY,\n })\n .transaction();\n\n tx.instructions.unshift(\n ComputeBudgetProgram.setComputeUnitLimit({ units: 400_000 }),\n );\n\n return { tx, presalePda, qtMint };\n }\n\n /**\n * Whitelist-only: approve presale → creates question + CTF condition + market_oracle in one tx.\n *\n * @param presalePda the presale account\n * @param contentHash 32-byte hash for question content\n * @param hookProgram token-2022 transfer hook program\n * @param authorizedClob clob program allowed to do CTF transfers\n * @param expirationTime Unix seconds\n * @param creator presale creator pubkey (stored in question)\n * @param currencyMint collateral mint\n */\n async approvePresale(params: {\n presalePda: PublicKey;\n contentHash: Uint8Array;\n hookProgram: PublicKey;\n authorizedClob: PublicKey;\n expirationTime: anchor.BN;\n creator: PublicKey;\n currencyMint: PublicKey;\n /** Revenue distribution — required: approvePresale now distributes 80/10/10 automatically */\n referralAddress: PublicKey;\n companyAddress: PublicKey;\n adminOwner: PublicKey;\n caller?: PublicKey;\n payer?: PublicKey;\n /** Provide an ALT to use VersionedTransaction (required: 31 accounts exceeds legacy tx limit) */\n lookupTable?: AddressLookupTableAccount;\n }): Promise<{ tx: Transaction | VersionedTransaction; questionPda: PublicKey; conditionPda: PublicKey; marketOraclePda: PublicKey; marketOracleVault: PublicKey }> {\n const {\n presalePda, contentHash, hookProgram, authorizedClob,\n expirationTime, creator, currencyMint,\n referralAddress, companyAddress, adminOwner,\n } = params;\n const caller = params.caller ?? this.walletPubkey;\n const payer = params.payer ?? caller;\n if (!this.programIds.presale) throw new Error(\"presale program ID not configured\");\n if (!this.programIds.marketOracle) throw new Error(\"marketOracle program ID not configured\");\n if (!this.programIds.feeManagement) throw new Error(\"feeManagement program ID not configured\");\n if (!this.programIds.adminContract) throw new Error(\"adminContract program ID not configured\");\n\n const questionId = presalePda.toBytes();\n const [questionPda] = PDA.question(this.configPda, questionId, this.programIds);\n const marketConfig = await this.fetchConfig();\n if (!marketConfig) throw new Error(\"QuestionMarketConfig not found\");\n\n const oraclePubkey = marketConfig.oracle;\n const [conditionPda] = PDA.condition(oraclePubkey, questionId, this.programIds);\n const [yesMint] = PDA.yesMint(conditionPda, this.programIds);\n const [noMint] = PDA.noMint(conditionPda, this.programIds);\n const [mintAuthority] = PDA.mintAuthority(conditionPda, this.programIds);\n const [collateralVault] = PDA.collateralVault(currencyMint, this.programIds);\n const [marketOraclePda] = PDA.marketOraclePda(questionPda, this.programIds);\n const marketOracleVault = getAssociatedTokenAddressSync(currencyMint, marketOraclePda, true);\n const [questionFeePda] = PDA.questionFee(conditionPda, this.programIds);\n\n // Revenue distribution accounts\n const presaleVault = getAssociatedTokenAddressSync(currencyMint, presalePda, true);\n const referralTokenAccount = getAssociatedTokenAddressSync(currencyMint, referralAddress);\n const companyTokenAccount = getAssociatedTokenAddressSync(currencyMint, companyAddress);\n const [adminConfig] = PDA.adminConfig(adminOwner, this.programIds);\n const adminVault = getAssociatedTokenAddressSync(currencyMint, adminConfig, true);\n // conditionId for claimRecord = condition.key().to_bytes() (SDK convention)\n const [claimRecord] = PDA.claimRecord(conditionPda.toBytes(), this.programIds);\n\n const builder = this.program.methods\n .approvePresale({\n contentHash: Array.from(contentHash) as number[],\n hookProgram,\n authorizedClob,\n expirationTime,\n creator,\n })\n .accounts({\n caller,\n payer,\n config: this.configPda,\n presale: presalePda,\n question: questionPda,\n currencyMint,\n oracle: oraclePubkey,\n condition: conditionPda,\n yesMint,\n noMint,\n mintAuthority,\n collateralVault,\n marketOracle: marketOraclePda,\n marketOracleVault,\n presaleVault,\n referralTokenAccount,\n companyTokenAccount,\n adminVault,\n adminConfig,\n claimRecord,\n questionFee: questionFeePda,\n feeManagementProgram: this.programIds.feeManagement,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n presaleProgram: this.programIds.presale,\n marketOracleProgram: this.programIds.marketOracle,\n adminProgram: this.programIds.adminContract,\n tokenProgram: TOKEN_PROGRAM_ID,\n token2022Program: TOKEN_2022_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n rent: SYSVAR_RENT_PUBKEY,\n });\n\n let tx: Transaction | VersionedTransaction;\n\n if (params.lookupTable) {\n const ix = await builder.instruction();\n const cu = ComputeBudgetProgram.setComputeUnitLimit({ units: 1_400_000 });\n const { blockhash } = await this.provider.connection.getLatestBlockhash();\n const msg = new TransactionMessage({\n payerKey: payer,\n recentBlockhash: blockhash,\n instructions: [cu, ix],\n }).compileToV0Message([params.lookupTable]);\n tx = new VersionedTransaction(msg);\n } else {\n tx = await builder.transaction();\n }\n\n return { tx, questionPda, conditionPda, marketOraclePda, marketOracleVault };\n }\n\n /**\n * Whitelist-only: reject presale so users can refund.\n */\n async rejectPresale(\n presalePda: PublicKey,\n caller: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n if (!this.programIds.presale) throw new Error(\"presale program ID not configured\");\n return this.program.methods\n .rejectPresale()\n .accounts({\n caller,\n config: this.configPda,\n presale: presalePda,\n presaleProgram: this.programIds.presale,\n })\n .transaction();\n }\n\n /**\n * Whitelist-only: distribute presale vault → 10% agents + 10% company + 80% botmm.\n * Closes presale_vault ATA and presale PDA after distribution; lamports returned to payer.\n */\n async collectPresaleRevenue(params: {\n presalePda: PublicKey;\n currencyMint: PublicKey;\n conditionId: Uint8Array;\n referralAddress: PublicKey;\n companyAddress: PublicKey;\n adminOwner: PublicKey;\n caller?: PublicKey;\n payer?: PublicKey;\n }): Promise<Transaction> {\n const {\n presalePda, currencyMint, conditionId,\n referralAddress, companyAddress, adminOwner,\n } = params;\n const caller = params.caller ?? this.walletPubkey;\n const payer = params.payer ?? this.walletPubkey;\n if (!this.programIds.presale) throw new Error(\"presale program ID not configured\");\n if (!this.programIds.adminContract) throw new Error(\"adminContract program ID not configured\");\n\n const presaleVault = getAssociatedTokenAddressSync(currencyMint, presalePda, true);\n const referralTokenAccount = getAssociatedTokenAddressSync(currencyMint, referralAddress);\n const companyTokenAccount = getAssociatedTokenAddressSync(currencyMint, companyAddress);\n\n const [adminConfig] = PDA.adminConfig(adminOwner, this.programIds);\n const [claimRecord] = PDA.claimRecord(conditionId, this.programIds);\n const adminVault = getAssociatedTokenAddressSync(currencyMint, adminConfig, true);\n\n return this.program.methods\n .collectPresaleRevenue(Array.from(conditionId))\n .accounts({\n caller,\n config: this.configPda,\n presale: presalePda,\n presaleVault,\n currencyMint,\n referralTokenAccount,\n companyTokenAccount,\n adminVault,\n adminConfig,\n claimRecord,\n payer,\n presaleProgram: this.programIds.presale,\n adminProgram: this.programIds.adminContract,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n /**\n * Whitelist-only: snapshot MST supply so holders can claim trading fees.\n * Call after oracle resolves the question.\n */\n async collectTradingFee(\n marketOraclePda: PublicKey,\n qtMint: PublicKey,\n caller: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n if (!this.programIds.marketOracle) throw new Error(\"marketOracle program ID not configured\");\n return this.program.methods\n .collectTradingFee()\n .accounts({\n caller,\n config: this.configPda,\n marketOracle: marketOraclePda,\n qtMint,\n marketOracleProgram: this.programIds.marketOracle,\n })\n .transaction();\n }\n}\n","import * as anchor from \"@coral-xyz/anchor\";\nimport { Keypair, PublicKey, SystemProgram, SYSVAR_RENT_PUBKEY, Transaction, TransactionInstruction } from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n createAssociatedTokenAccountIdempotentInstruction,\n} from \"@solana/spl-token\";\nimport { PDA } from \"../pda\";\nimport { ProgramIds } from \"../config/networks\";\nimport { Condition, CollateralVault, CtfConfig, Position, TxResult } from \"../types\";\n\nexport class CtfClient {\n private readonly program: anchor.Program;\n private readonly provider: anchor.AnchorProvider;\n private readonly programIds: ProgramIds;\n\n constructor(\n program: anchor.Program,\n provider: anchor.AnchorProvider,\n programIds: ProgramIds\n ) {\n this.program = program;\n this.provider = provider;\n this.programIds = programIds;\n }\n\n get walletPubkey(): PublicKey {\n return this.provider.wallet.publicKey;\n }\n\n // ─── Instructions ────────────────────────────────────────────────────────────\n\n /**\n * Create a Condition directly (bypasses QuestionMarket).\n * oracle is UncheckedAccount — set it to any pubkey (e.g. user wallet)\n * so that wallet can later sign reportPayouts.\n * payer covers rent for condition + mints.\n */\n async prepareCondition(\n questionId: Uint8Array,\n oracle: PublicKey,\n collateralMint: PublicKey,\n hookProgram: PublicKey,\n authorizedClob: PublicKey,\n payer: PublicKey = this.walletPubkey,\n signers: Keypair[] = []\n ): Promise<{ signature: string; conditionPda: PublicKey; yesMint: PublicKey; noMint: PublicKey }> {\n const [conditionPda] = PDA.condition(oracle, questionId, this.programIds);\n const [yesMint] = PDA.yesMint(conditionPda, this.programIds);\n const [noMint] = PDA.noMint(conditionPda, this.programIds);\n const [mintAuthority] = PDA.mintAuthority(conditionPda, this.programIds);\n const [collateralVault] = PDA.collateralVault(collateralMint, this.programIds);\n\n const sig = await this.program.methods\n .prepareCondition(\n Array.from(questionId) as number[],\n hookProgram,\n authorizedClob\n )\n .accounts({\n oracle,\n condition: conditionPda,\n yesMint,\n noMint,\n mintAuthority,\n collateralMint,\n collateralVault,\n payer,\n tokenProgram: TOKEN_2022_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n rent: SYSVAR_RENT_PUBKEY,\n })\n .signers(signers)\n .rpc({ skipPreflight: true });\n\n return { signature: sig, conditionPda, yesMint, noMint };\n }\n\n /** One-time setup. Caller becomes the CTF owner. Can only be called once. */\n async initializeCtfConfig(): Promise<TxResult> {\n const [ctfConfig] = PDA.ctfConfig(this.programIds);\n const sig = await this.program.methods\n .initializeCtfConfig()\n .accounts({\n payer: this.walletPubkey,\n ctfConfig,\n systemProgram: SystemProgram.programId,\n })\n .rpc();\n return { signature: sig };\n }\n\n /**\n * Create the shared collateral vault for a given collateral mint (e.g. USDC).\n * Only callable by the CTF owner (as stored in ctf_config).\n * authority defaults to the wallet — pass a different signer if needed.\n */\n async initializeVault(collateralMint: PublicKey): Promise<TxResult> {\n const [ctfConfig] = PDA.ctfConfig(this.programIds);\n const [collateralVault] = PDA.collateralVault(collateralMint, this.programIds);\n const [vaultTokenAccount] = PDA.vaultToken(collateralMint, this.programIds);\n const sig = await this.program.methods\n .initializeVault()\n .accounts({\n authority: this.walletPubkey,\n payer: this.walletPubkey,\n ctfConfig,\n collateralMint,\n collateralVault,\n vaultTokenAccount,\n systemProgram: SystemProgram.programId,\n tokenProgram: TOKEN_PROGRAM_ID,\n rent: SYSVAR_RENT_PUBKEY,\n })\n .rpc();\n return { signature: sig };\n }\n\n /**\n * Initialize an empty Position account (balance = 0) for a user.\n * Needed before redeemPositions when the user only holds the opposite outcome\n * (e.g. buyer received YES via CLOB match but never had a NO position).\n *\n * Idempotent — call `fetchPosition` first to skip if already initialized.\n */\n async initPosition(\n condition: PublicKey,\n outcomeIndex: number,\n user: PublicKey = this.walletPubkey\n ): Promise<TxResult> {\n const [position] = PDA.position(condition, outcomeIndex, user, this.programIds);\n const sig = await this.program.methods\n .initPosition(outcomeIndex)\n .accounts({\n user,\n condition,\n position,\n systemProgram: SystemProgram.programId,\n })\n .rpc();\n return { signature: sig };\n }\n\n /**\n * Split `amount` collateral into equal YES + NO tokens.\n * ATAs created automatically via `init_if_needed`.\n */\n async splitPosition(\n condition: PublicKey,\n collateralMint: PublicKey,\n amount: anchor.BN,\n user: PublicKey = this.walletPubkey,\n payer: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [collateralVault] = PDA.collateralVault(collateralMint, this.programIds);\n const [vaultTokenAccount] = PDA.vaultToken(collateralMint, this.programIds);\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const [mintAuthority] = PDA.mintAuthority(condition, this.programIds);\n const [yesPosition] = PDA.position(condition, 1, user, this.programIds);\n const [noPosition] = PDA.position(condition, 0, user, this.programIds);\n\n const userYesAta = getAssociatedTokenAddressSync(yesMint, user, false, TOKEN_2022_PROGRAM_ID);\n const userNoAta = getAssociatedTokenAddressSync(noMint, user, false, TOKEN_2022_PROGRAM_ID);\n const userCollateral = getAssociatedTokenAddressSync(collateralMint, user);\n\n return this.program.methods\n .splitPosition(amount)\n .accounts({\n user,\n payer,\n condition,\n collateralVault,\n vaultTokenAccount,\n userCollateral,\n yesMint,\n userYesAta,\n noMint,\n userNoAta,\n yesPosition,\n noPosition,\n mintAuthority,\n tokenProgram: TOKEN_PROGRAM_ID,\n token2022Program: TOKEN_2022_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n /**\n * Merge `amount` YES + NO tokens back into collateral.\n * Both token balances must be ≥ amount.\n */\n async mergePosition(\n condition: PublicKey,\n collateralMint: PublicKey,\n amount: anchor.BN,\n user: PublicKey = this.walletPubkey,\n payer: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [collateralVault] = PDA.collateralVault(collateralMint, this.programIds);\n const [vaultTokenAccount] = PDA.vaultToken(collateralMint, this.programIds);\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const [yesPosition] = PDA.position(condition, 1, user, this.programIds);\n const [noPosition] = PDA.position(condition, 0, user, this.programIds);\n\n const userYesAta = getAssociatedTokenAddressSync(yesMint, user, false, TOKEN_2022_PROGRAM_ID);\n const userNoAta = getAssociatedTokenAddressSync(noMint, user, false, TOKEN_2022_PROGRAM_ID);\n const userCollateral = getAssociatedTokenAddressSync(collateralMint, user);\n\n return this.program.methods\n .mergePosition(amount)\n .accounts({\n user,\n payer,\n condition,\n collateralVault,\n vaultTokenAccount,\n userCollateral,\n yesMint,\n userYesAta,\n noMint,\n userNoAta,\n yesPosition,\n noPosition,\n tokenProgram: TOKEN_PROGRAM_ID,\n token2022Program: TOKEN_2022_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n /**\n * After condition resolves: burn outcome tokens proportional to payout\n * and receive USDC. Works for winning, losing, or both positions.\n */\n async redeemPositions(\n condition: PublicKey,\n collateralMint: PublicKey,\n user: PublicKey = this.walletPubkey,\n payer: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [collateralVault] = PDA.collateralVault(collateralMint, this.programIds);\n const [vaultTokenAccount] = PDA.vaultToken(collateralMint, this.programIds);\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const [yesPosition] = PDA.position(condition, 1, user, this.programIds);\n const [noPosition] = PDA.position(condition, 0, user, this.programIds);\n\n const userYesAta = getAssociatedTokenAddressSync(yesMint, user, false, TOKEN_2022_PROGRAM_ID);\n const userNoAta = getAssociatedTokenAddressSync(noMint, user, false, TOKEN_2022_PROGRAM_ID);\n const userCollateral = getAssociatedTokenAddressSync(collateralMint, user);\n\n const createYesAtaIx = createAssociatedTokenAccountIdempotentInstruction(\n payer, userYesAta, user, yesMint, TOKEN_2022_PROGRAM_ID,\n );\n const createNoAtaIx = createAssociatedTokenAccountIdempotentInstruction(\n payer, userNoAta, user, noMint, TOKEN_2022_PROGRAM_ID,\n );\n\n const redeemIx = await this.program.methods\n .redeemPositions()\n .accounts({\n user,\n payer,\n condition,\n collateralVault,\n vaultTokenAccount,\n userCollateral,\n yesMint,\n userYesAta,\n noMint,\n userNoAta,\n yesPosition,\n noPosition,\n tokenProgram: TOKEN_PROGRAM_ID,\n token2022Program: TOKEN_2022_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .instruction();\n\n const tx = new Transaction();\n tx.add(createYesAtaIx, createNoAtaIx, redeemIx);\n return tx;\n }\n\n /**\n * Oracle directly resolves a condition with payout numerators.\n * Bypasses QuestionMarket — only for oracle-owned conditions.\n */\n async reportPayouts(\n condition: PublicKey,\n payoutNumerators: number[]\n ): Promise<TxResult> {\n const sig = await this.program.methods\n .reportPayouts(payoutNumerators.map((n) => new anchor.BN(n)))\n .accounts({\n oracle: this.walletPubkey,\n condition,\n })\n .rpc();\n return { signature: sig };\n }\n\n /**\n * Build the `transfer_position` instruction for use in a CLOB CPI.\n *\n * This instruction requires `clob_authority` (the CLOB's PDA) to sign.\n * A PDA can only sign from within its own program via CPI — this method\n * CANNOT be called directly from a wallet transaction.\n *\n * Use-cases:\n * - Custom CLOB implementations that call CTF.transfer_position via CPI\n * - Anchor CPI builders in other Rust programs\n *\n * @param condition - Condition PDA\n * @param outcomeMint - YES or NO mint\n * @param fromUser - Source wallet\n * @param fromTokenAccount - Source ATA\n * @param fromPosition - Source Position PDA\n * @param toUser - Destination wallet\n * @param toTokenAccount - Destination ATA (created if needed — payer covers rent)\n * @param toPosition - Destination Position PDA\n * @param payer - Pays rent for toPosition + toTokenAccount creation\n * @param clobAuthority - CLOB config PDA (must sign via CPI)\n * @param outcomeIndex - 0 = NO, 1 = YES\n * @param amount - Token amount to transfer\n */\n async transferPositionIx(\n condition: PublicKey,\n outcomeMint: PublicKey,\n fromUser: PublicKey,\n fromTokenAccount: PublicKey,\n fromPosition: PublicKey,\n toUser: PublicKey,\n toTokenAccount: PublicKey,\n toPosition: PublicKey,\n payer: PublicKey,\n clobAuthority: PublicKey,\n outcomeIndex: number,\n amount: anchor.BN\n ): Promise<TransactionInstruction> {\n return this.program.methods\n .transferPosition(outcomeIndex, amount)\n .accounts({\n payer,\n clobAuthority,\n condition,\n outcomeMint,\n fromUser,\n fromTokenAccount,\n fromPosition,\n toUser,\n toTokenAccount,\n toPosition,\n token2022Program: TOKEN_2022_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .instruction();\n }\n\n /**\n * Update the authorized CLOB on a condition.\n * Only callable by the condition's oracle (the wallet that signed createQuestion).\n */\n async updateAuthorizedClob(\n condition: PublicKey,\n newAuthorizedClob: PublicKey\n ): Promise<TxResult> {\n const sig = await this.program.methods\n .updateAuthorizedClob(newAuthorizedClob)\n .accounts({\n oracle: this.walletPubkey,\n condition,\n })\n .rpc();\n return { signature: sig };\n }\n\n // ─── Queries ─────────────────────────────────────────────────────────────────\n\n async fetchCtfConfig(): Promise<CtfConfig | null> {\n try {\n const [ctfConfig] = PDA.ctfConfig(this.programIds);\n const acc = await (this.program.account as any).ctfConfig.fetch(ctfConfig);\n return {\n owner: acc.owner,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchCondition(conditionPda: PublicKey): Promise<Condition | null> {\n try {\n const acc = await (this.program.account as any).condition.fetch(conditionPda);\n return {\n oracle: acc.oracle,\n questionId: new Uint8Array(acc.questionId),\n outcomeSlotCount: acc.outcomeSlotCount,\n payoutNumerators: acc.payoutNumerators,\n payoutDenominator: acc.payoutDenominator,\n totalCollateral: acc.totalCollateral,\n collateralMint: acc.collateralMint,\n collateralVault: acc.collateralVault,\n yesMint: acc.yesMint,\n noMint: acc.noMint,\n hookProgram: acc.hookProgram,\n authorizedClob: acc.authorizedClob,\n isResolved: acc.isResolved,\n resolvedAt: acc.resolvedAt?.toNumber() ?? 0,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchVault(collateralMint: PublicKey): Promise<CollateralVault | null> {\n try {\n const [vaultPda] = PDA.collateralVault(collateralMint, this.programIds);\n const acc = await (this.program.account as any).collateralVault.fetch(vaultPda);\n return {\n collateralMint: acc.collateralMint,\n vaultTokenAccount: acc.vaultTokenAccount,\n totalLocked: acc.totalLocked,\n conditionCount: acc.conditionCount,\n bump: acc.bump,\n vaultBump: acc.vaultBump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchPosition(\n condition: PublicKey,\n outcomeIndex: number,\n owner: PublicKey = this.walletPubkey\n ): Promise<Position | null> {\n try {\n const [pda] = PDA.position(condition, outcomeIndex, owner, this.programIds);\n const acc = await (this.program.account as any).position.fetch(pda);\n return {\n owner: acc.owner,\n condition: acc.condition,\n outcomeIndex: acc.outcomeIndex,\n balance: acc.balance,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n /** YES = outcome index 1, NO = outcome index 0. */\n async fetchBothPositions(\n condition: PublicKey,\n owner: PublicKey = this.walletPubkey\n ): Promise<{ yes: Position | null; no: Position | null }> {\n const [yes, no] = await Promise.all([\n this.fetchPosition(condition, 1, owner),\n this.fetchPosition(condition, 0, owner),\n ]);\n return { yes, no };\n }\n\n /** Thin wrapper: fetch position for a single outcome token (0=NO, 1=YES). */\n async fetchTokenBalance(\n condition: PublicKey,\n tokenId: number,\n owner: PublicKey = this.walletPubkey\n ): Promise<Position | null> {\n return this.fetchPosition(condition, tokenId, owner);\n }\n\n // ─── PDA helpers (public for consumers) ──────────────────────────────────────\n\n yesMintPda(condition: PublicKey): PublicKey {\n return PDA.yesMint(condition, this.programIds)[0];\n }\n\n noMintPda(condition: PublicKey): PublicKey {\n return PDA.noMint(condition, this.programIds)[0];\n }\n\n mintAuthorityPda(condition: PublicKey): PublicKey {\n return PDA.mintAuthority(condition, this.programIds)[0];\n }\n\n collateralVaultPda(collateralMint: PublicKey): PublicKey {\n return PDA.collateralVault(collateralMint, this.programIds)[0];\n }\n}\n","/**\n * Order signing utilities.\n *\n * Canonical message layout (178 bytes) — must match Rust `Order::to_signable_bytes()`:\n * [0..31] maker pubkey\n * [32..63] condition pubkey\n * [64] token_id (u8)\n * [65] side (u8)\n * [66..73] maker_amount (u64 le)\n * [74..81] taker_amount (u64 le)\n * [82..89] nonce (u64 le)\n * [90..97] expiry (i64 le)\n * [98..105] created_at (i64 le)\n * [106..113] fee (u64 le)\n * [114..145] taker pubkey\n * [146..177] signer pubkey\n */\nimport {\n TransactionInstruction,\n Ed25519Program,\n SYSVAR_INSTRUCTIONS_PUBKEY,\n} from \"@solana/web3.js\";\nimport { Order, SignedOrder } from \"./types\";\n\n// ─── Serialization ────────────────────────────────────────────────────────────\n\nexport function serializeOrderToBytes(order: Order): Uint8Array {\n const buf = new Uint8Array(178);\n\n buf.set(order.maker.toBytes(), 0);\n buf.set(order.condition.toBytes(), 32);\n buf[64] = order.tokenId;\n buf[65] = order.side;\n\n buf.set(order.makerAmount.toArrayLike(Buffer, \"le\", 8), 66);\n buf.set(order.takerAmount.toArrayLike(Buffer, \"le\", 8), 74);\n buf.set(order.nonce.toArrayLike(Buffer, \"le\", 8), 82);\n buf.set(order.expiry.toArrayLike(Buffer, \"le\", 8), 90);\n buf.set(order.createdAt.toArrayLike(Buffer, \"le\", 8), 98);\n buf.set(order.fee.toArrayLike(Buffer, \"le\", 8), 106);\n buf.set(order.taker.toBytes(), 114);\n buf.set(order.signer.toBytes(), 146);\n\n return buf;\n}\n\n// ─── Signing ──────────────────────────────────────────────────────────────────\n\n/**\n * Sign an order with a keypair's sign function.\n * The `signFn` receives the 98-byte canonical message and returns a 64-byte signature.\n *\n * Usage with a Keypair:\n * const signed = signOrder(order, (msg) => keypair.secretKey.slice(0,64) && nacl.sign.detached(msg, keypair.secretKey))\n *\n * Or use the convenience wrapper `signOrderWithKeypair` from this module.\n */\nexport async function signOrder(\n order: Order,\n signFn: (message: Uint8Array) => Uint8Array | Promise<Uint8Array>\n): Promise<SignedOrder> {\n const message = serializeOrderToBytes(order);\n const signature = await signFn(message);\n if (signature.length !== 64) throw new Error(\"signature must be 64 bytes\");\n return { order, signature };\n}\n\n// ─── Ed25519 instruction builder ─────────────────────────────────────────────\n\n/**\n * Build a single batched Ed25519 precompile instruction for N signed orders.\n *\n * All signatures are packed into one instruction (ix[0]).\n * The on-chain program reads sig[i] via `extract_order_from_ed25519_ix(sysvar, i)`.\n *\n * Batched layout saves ~12 bytes vs N separate Ed25519 instructions — critical for\n * fitting 1-taker + 2-maker transactions within Solana's 1232-byte raw tx limit.\n *\n * Data format:\n * [0] num_sigs (N)\n * [1] padding\n * [2+i*14] per-sig offset entries (14 bytes each)\n * Then: sigs (64B each), pubkeys (32B each), messages (178B each)\n */\nexport function buildBatchedEd25519Instruction(orders: SignedOrder[]): TransactionInstruction {\n const N = orders.length;\n if (N === 0) throw new Error(\"At least 1 order required\");\n\n const MSG_SIZE = 178;\n const SIG_SIZE = 64;\n const PK_SIZE = 32;\n const HEADER = 2 + N * 14;\n const sigBase = HEADER;\n const pkBase = sigBase + N * SIG_SIZE;\n const msgBase = pkBase + N * PK_SIZE;\n const totalSize = msgBase + N * MSG_SIZE;\n\n const data = Buffer.alloc(totalSize);\n data[0] = N;\n data[1] = 0;\n\n for (let i = 0; i < N; i++) {\n const e = 2 + i * 14;\n data.writeUInt16LE(sigBase + i * SIG_SIZE, e); // sig_offset\n data.writeUInt16LE(0xffff, e + 2); // sig_ix_index (this ix)\n data.writeUInt16LE(pkBase + i * PK_SIZE, e + 4); // pubkey_offset\n data.writeUInt16LE(0xffff, e + 6); // pubkey_ix_index (this ix)\n data.writeUInt16LE(msgBase + i * MSG_SIZE, e + 8); // msg_offset\n data.writeUInt16LE(MSG_SIZE, e + 10); // msg_size\n data.writeUInt16LE(0xffff, e + 12); // msg_ix_index (this ix)\n\n data.set(orders[i].signature, sigBase + i * SIG_SIZE);\n data.set(orders[i].order.maker.toBytes(), pkBase + i * PK_SIZE);\n data.set(serializeOrderToBytes(orders[i].order), msgBase + i * MSG_SIZE);\n }\n\n return new TransactionInstruction({\n keys: [],\n programId: Ed25519Program.programId,\n data,\n });\n}\n\n/**\n * The Solana instructions sysvar public key.\n * Pass this as `ixSysvar` to all match_* instruction accounts.\n */\nexport const IX_SYSVAR = SYSVAR_INSTRUCTIONS_PUBKEY;\n\n// ─── Anchor serialization helper ─────────────────────────────────────────────\n\n/**\n * Convert SignedOrder to the shape anchor expects for SignedOrder struct.\n * The signature must be passed as a fixed-size array of 64 numbers.\n */\nexport function _toAnchorSignedOrder(signed: SignedOrder) {\n const sig = Array.from(signed.signature);\n if (sig.length !== 64) throw new Error(\"signature must be 64 bytes\");\n return {\n order: {\n maker: signed.order.maker,\n condition: signed.order.condition,\n tokenId: signed.order.tokenId,\n side: signed.order.side,\n makerAmount: signed.order.makerAmount,\n takerAmount: signed.order.takerAmount,\n nonce: signed.order.nonce,\n expiry: signed.order.expiry,\n createdAt: signed.order.createdAt,\n fee: signed.order.fee,\n taker: signed.order.taker,\n signer: signed.order.signer,\n },\n signature: sig,\n };\n}\n","/**\n * High-level order utilities — build, sign, serialize, verify, detect match type.\n *\n * These helpers layer on top of the low-level `signing.ts` primitives and\n * provide a convenient interface for both the browser (wallet adapters) and\n * Node.js (Keypair-based) environments.\n */\nimport { Keypair, PublicKey } from \"@solana/web3.js\";\nimport BN from \"bn.js\";\nimport * as nacl from \"tweetnacl\";\nimport { Order, SignedOrder, InvalidParamError } from \"./types\";\nimport { serializeOrderToBytes, signOrder } from \"./signing\";\n\n// ─── Order factory ────────────────────────────────────────────────────────────\n\n/**\n * Build a fully-populated Order.\n * Sets `signer = maker` (proxy not yet supported).\n * `taker` defaults to new PublicKey(new Uint8Array(32)) (public order).\n * `createdAt` defaults to current Unix timestamp.\n * `fee` defaults to 0 (use global fee_rate_bps).\n */\nexport function buildOrder(params: {\n maker: PublicKey;\n condition: PublicKey;\n tokenId: number;\n side: number;\n makerAmount: BN;\n takerAmount: BN;\n nonce?: BN;\n expiry?: BN;\n createdAt?: BN;\n fee?: BN;\n taker?: PublicKey;\n}): Order {\n return {\n maker: params.maker,\n condition: params.condition,\n tokenId: params.tokenId,\n side: params.side,\n makerAmount: params.makerAmount,\n takerAmount: params.takerAmount,\n nonce: params.nonce ?? new BN(Date.now()),\n expiry: params.expiry ?? new BN(0),\n createdAt: params.createdAt ?? new BN(Math.floor(Date.now() / 1000)),\n fee: params.fee ?? new BN(0),\n taker: params.taker ?? new PublicKey(new Uint8Array(32)),\n signer: params.maker,\n };\n}\n\n// ─── Price → Amount helpers ───────────────────────────────────────────────────\n\n/**\n * Compute makerAmount / takerAmount from a limit price and quantity.\n *\n * ALWAYS use the order's own limit price (e.g., 51 for a 51% limit order).\n * NEVER pass `averageMatchedPrice` — that is an output of the matching engine,\n * not an order input. Using avgPrice here causes crossing checks to fail\n * for any maker whose price equals the limit price exactly.\n *\n * BUY YES (side=0): makerAmount = USDS spent = qty × price/100\n * takerAmount = YES received = qty\n * SELL YES (side=1): makerAmount = YES given = qty\n * takerAmount = USDS received = qty × price/100\n *\n * @param side 0 = BUY, 1 = SELL\n * @param price Limit price in percentage cents (e.g., 51 for 51% = $0.51/token)\n * @param quantity Whole token count (e.g., 11 for 11 YES tokens)\n * @param decimals Collateral token decimals (default 9 for USDS)\n */\nexport function orderAmountsFromPrice(\n side: 0 | 1,\n price: number,\n quantity: number,\n decimals: number = 9,\n): { makerAmount: BN; takerAmount: BN } {\n // Use integer arithmetic with 6-decimal price precision to avoid floating-point drift.\n const PRICE_PRECISION = new BN(1_000_000); // 10^6\n const DENOM = new BN(100).mul(PRICE_PRECISION); // 100 × 10^6\n const base = new BN(10).pow(new BN(decimals));\n\n const priceScaled = new BN(Math.round(price * 1_000_000)); // price × 10^6\n const quantityBase = new BN(quantity).mul(base); // qty in base units\n const collateral = quantityBase.mul(priceScaled).div(DENOM); // qty × price / 100\n\n return side === 0\n ? { makerAmount: collateral, takerAmount: quantityBase } // BUY: pay USDS, get tokens\n : { makerAmount: quantityBase, takerAmount: collateral }; // SELL: give tokens, get USDS\n}\n\n/**\n * Build a fully-populated Order from human-readable price + quantity.\n * Amounts are computed using the limit price — never use averageMatchedPrice.\n *\n * @param params.side 0 = BUY, 1 = SELL\n * @param params.price Limit price in percentage (e.g., 51 for 51%)\n * @param params.quantity Whole token count (e.g., 11 for 11 YES tokens)\n * @param params.decimals Collateral decimals (default 9 for USDS)\n */\nexport function buildOrderFromPrice(params: {\n maker: PublicKey;\n condition: PublicKey;\n tokenId: number;\n side: 0 | 1;\n price: number;\n quantity: number;\n decimals?: number;\n nonce?: BN;\n expiry?: BN;\n createdAt?: BN;\n fee?: BN;\n taker?: PublicKey;\n}): Order {\n const { makerAmount, takerAmount } = orderAmountsFromPrice(\n params.side, params.price, params.quantity, params.decimals ?? 9,\n );\n return buildOrder({ ...params, makerAmount, takerAmount });\n}\n\n// ─── Signing helpers ──────────────────────────────────────────────────────────\n\n/**\n * Sign an order with a Keypair.\n * Uses Ed25519 (nacl.sign.detached) over the 178-byte canonical message.\n */\nexport function signOrderWithKeypair(order: Order, keypair: Keypair): SignedOrder {\n const message = serializeOrderToBytes(order);\n const signature = nacl.sign.detached(message, keypair.secretKey);\n return { order, signature };\n}\n\n/** Return the 178-byte canonical message that gets signed for an order. */\nexport function getOrderSignBytes(order: Order): Uint8Array {\n return serializeOrderToBytes(order);\n}\n\n// ─── Serialization ────────────────────────────────────────────────────────────\n\n/** Serialize a SignedOrder to bytes: 178 (order) + 64 (sig) = 242 bytes. */\nexport function serializeSignedOrder(signed: SignedOrder): Uint8Array {\n const orderBytes = serializeOrderToBytes(signed.order);\n const buf = new Uint8Array(242);\n buf.set(orderBytes, 0);\n buf.set(signed.signature, 178);\n return buf;\n}\n\n/**\n * Deserialize 242 bytes back to a SignedOrder.\n * Field layout mirrors `serializeOrderToBytes()` + 64-byte signature.\n */\nexport function deserializeSignedOrder(bytes: Uint8Array): SignedOrder {\n if (bytes.length !== 242) throw new InvalidParamError(\"SignedOrder must be 242 bytes\");\n\n const readPubkey = (offset: number) => new PublicKey(bytes.slice(offset, offset + 32));\n const readU64 = (offset: number) => new BN(bytes.slice(offset, offset + 8), \"le\");\n const readI64 = (offset: number) => new BN(bytes.slice(offset, offset + 8), \"le\");\n\n const order: Order = {\n maker: readPubkey(0),\n condition: readPubkey(32),\n tokenId: bytes[64],\n side: bytes[65],\n makerAmount: readU64(66),\n takerAmount: readU64(74),\n nonce: readU64(82),\n expiry: readI64(90),\n createdAt: readI64(98),\n fee: readU64(106),\n taker: readPubkey(114),\n signer: readPubkey(146),\n };\n const signature = bytes.slice(178, 242);\n return { order, signature };\n}\n\n// ─── Verification ─────────────────────────────────────────────────────────────\n\n/**\n * Verify the Ed25519 signature on a signed order.\n * Returns true only if the signature is valid for `order.maker` (or `order.signer`).\n */\nexport function verifySignedOrder(signed: SignedOrder): boolean {\n const message = serializeOrderToBytes(signed.order);\n return nacl.sign.detached.verify(\n message,\n signed.signature,\n signed.order.signer.toBytes(),\n );\n}\n\n// ─── Match type detection ─────────────────────────────────────────────────────\n\nexport type MatchType = \"COMPLEMENTARY\" | \"MINT\" | \"MERGE\";\n\n/**\n * Detect the match type from two orders (pure, no RPC).\n *\n * | tokenId A === B | sides | type |\n * |-----------------|--------------|---------------|\n * | yes | one BUY+SELL | COMPLEMENTARY |\n * | no | both BUY | MINT |\n * | no | both SELL | MERGE |\n */\nexport function detectMatchType(a: Order | SignedOrder, b: Order | SignedOrder): MatchType {\n const _a = \"order\" in a ? a.order : a;\n const _b = \"order\" in b ? b.order : b;\n return _detectMatchType(_a, _b);\n}\n\nfunction _detectMatchType(a: Order, b: Order): MatchType {\n const SIDE_BUY = 0;\n const SIDE_SELL = 1;\n\n if (a.tokenId === b.tokenId) {\n const aBuy = a.side === SIDE_BUY;\n const bBuy = b.side === SIDE_BUY;\n if (aBuy !== bBuy) return \"COMPLEMENTARY\";\n throw new InvalidParamError(\n \"Orders with same tokenId must be one BUY and one SELL (COMPLEMENTARY)\"\n );\n }\n\n const aBuy = a.side === SIDE_BUY;\n const bBuy = b.side === SIDE_BUY;\n if (aBuy && bBuy) return \"MINT\";\n if (!aBuy && !bBuy) return \"MERGE\";\n throw new InvalidParamError(\n \"Orders with different tokenIds must both be BUY (MINT) or both SELL (MERGE)\"\n );\n}\n\nexport { signOrder };\n","import * as anchor from \"@coral-xyz/anchor\";\nimport BN from \"bn.js\";\nimport {\n PublicKey,\n SystemProgram,\n TransactionInstruction,\n TransactionMessage,\n VersionedTransaction,\n AddressLookupTableAccount,\n AddressLookupTableProgram,\n SYSVAR_INSTRUCTIONS_PUBKEY,\n Ed25519Program,\n ComputeBudgetProgram,\n type Signer as SolanaSigner,\n} from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n} from \"@solana/spl-token\";\nimport { PDA } from \"../pda\";\nimport { ProgramIds } from \"../config/networks\";\nimport {\n ClobConfig, OrderStatus, SignedOrder, TxResult, InvalidParamError,\n} from \"../types\";\nimport { buildBatchedEd25519Instruction, IX_SYSVAR, serializeOrderToBytes } from \"../signing\";\nimport { buildOrderFromPrice } from \"../order\";\nimport type { FeeManagementClient } from \"./fee_management\";\n\nexport class ClobClient {\n private readonly program: anchor.Program;\n private readonly provider: anchor.AnchorProvider;\n private readonly programIds: ProgramIds;\n private readonly networkConfig: { defaultCollateral: { mint: PublicKey } };\n\n /** Injected by XMarketSDK after construction — enables auto fee distribution */\n feeClient?: FeeManagementClient;\n feeConfigOwner?: PublicKey;\n\n /** Cached company_address from fee_config to avoid repeated RPC calls */\n private _companyAddress?: PublicKey;\n\n /** ALT cache: condition.toBase58() → loaded ALT account */\n private _altCache = new Map<string, AddressLookupTableAccount>();\n\n constructor(\n program: anchor.Program,\n provider: anchor.AnchorProvider,\n programIds: ProgramIds,\n networkConfig: { defaultCollateral: { mint: PublicKey } },\n ) {\n this.program = program;\n this.provider = provider;\n this.programIds = programIds;\n this.networkConfig = networkConfig;\n }\n\n private async companyAddress(): Promise<PublicKey | undefined> {\n if (!this.feeClient || !this.feeConfigOwner) return undefined;\n if (!this._companyAddress) {\n const cfg = await this.feeClient.fetchFeeConfig(this.feeConfigOwner);\n if (cfg) this._companyAddress = cfg.companyAddress;\n }\n return this._companyAddress;\n }\n\n get walletPubkey(): PublicKey {\n return this.provider.wallet.publicKey;\n }\n\n /**\n * Get or create an ALT for a condition.\n * Includes order_record PDAs for taker + all makers so match tx stays under 1232 bytes.\n */\n async ensureAlt(\n condition: PublicKey,\n collateralMint: PublicKey,\n takerSigned: SignedOrder,\n makers: SignedOrder[],\n ): Promise<AddressLookupTableAccount> {\n const cacheKey = condition.toBase58();\n if (this._altCache.has(cacheKey)) {\n return this._altCache.get(cacheKey)!;\n }\n\n const { connection } = this.provider;\n const payer = this.walletPubkey;\n\n const taker = takerSigned.order.maker;\n const takerNonce = takerSigned.order.nonce;\n const tokenId = takerSigned.order.tokenId;\n\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const [extraAccountMeta] = PDA.extraAccountMetaList(yesMint, this.programIds);\n const [hookConfig] = PDA.hookConfig(this.programIds);\n const [takerOrderStatus] = PDA.orderStatus(taker, takerNonce, this.programIds);\n const [takerOrderRecord] = PDA.orderRecord(taker, takerNonce, this.programIds);\n const [takerPosition] = PDA.position(condition, tokenId, taker, this.programIds);\n const clobConfigPda = this.configPda();\n\n const outcomeMint = tokenId === 1 ? yesMint : noMint;\n\n const feeRecipientAddr = (await this.fetchConfig())?.feeRecipient;\n\n const addresses: PublicKey[] = [\n Ed25519Program.programId,\n this.programIds.clobExchange,\n this.programIds.conditionalTokens,\n this.programIds.hook,\n TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID,\n SystemProgram.programId,\n SYSVAR_INSTRUCTIONS_PUBKEY,\n clobConfigPda,\n hookConfig,\n condition,\n yesMint,\n noMint,\n extraAccountMeta,\n taker,\n getAssociatedTokenAddressSync(collateralMint, taker),\n getAssociatedTokenAddressSync(outcomeMint, taker, false, TOKEN_2022_PROGRAM_ID),\n takerPosition,\n takerOrderStatus,\n takerOrderRecord,\n ];\n\n if (feeRecipientAddr) addresses.push(feeRecipientAddr);\n\n // MINT/MERGE accounts — add to ALT so versioned tx stays small\n const [collateralVault] = PDA.collateralVault(collateralMint, this.programIds);\n const [vaultToken] = PDA.vaultToken(collateralMint, this.programIds);\n const [mintAuth] = PDA.mintAuthority(condition, this.programIds);\n const [extraMetaNo] = PDA.extraAccountMetaList(noMint, this.programIds);\n const clobUsdcAta = getAssociatedTokenAddressSync(collateralMint, clobConfigPda, true);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfigPda, true, TOKEN_2022_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfigPda, true, TOKEN_2022_PROGRAM_ID);\n const [clobYesPos] = PDA.position(condition, 1, clobConfigPda, this.programIds);\n const [clobNoPos] = PDA.position(condition, 0, clobConfigPda, this.programIds);\n addresses.push(\n collateralVault, vaultToken, mintAuth, extraMetaNo,\n clobUsdcAta, clobYesAta, clobNoAta, clobYesPos, clobNoPos,\n collateralMint,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n );\n\n for (const m of makers) {\n const seller = m.order.maker;\n const makerTokenId = m.order.tokenId;\n const makerMint = makerTokenId === 1 ? yesMint : noMint;\n const [sellerPos] = PDA.position(condition, makerTokenId, seller, this.programIds);\n const [sellerStatus] = PDA.orderStatus(seller, m.order.nonce, this.programIds);\n const [sellerRecord] = PDA.orderRecord(seller, m.order.nonce, this.programIds);\n addresses.push(\n seller,\n sellerRecord,\n getAssociatedTokenAddressSync(makerMint, seller, false, TOKEN_2022_PROGRAM_ID),\n getAssociatedTokenAddressSync(collateralMint, seller),\n sellerPos,\n sellerStatus,\n );\n }\n\n if (this.programIds.feeManagement && this.feeConfigOwner) {\n const companyAddr = await this.companyAddress();\n addresses.push(\n this.programIds.feeManagement,\n PDA.feeConfig(this.feeConfigOwner, this.programIds)[0],\n PDA.marketFeeOverride(condition, this.programIds)[0],\n );\n if (companyAddr) {\n addresses.push(getAssociatedTokenAddressSync(collateralMint, companyAddr));\n }\n addresses.push(payer); // oracle_vault placeholder\n }\n\n const slot = await connection.getSlot(\"finalized\");\n const [createIx, altAddress] = AddressLookupTableProgram.createLookupTable({\n authority: payer, payer, recentSlot: slot,\n });\n\n const BATCH = 30;\n const extendIxs: TransactionInstruction[] = [];\n for (let i = 0; i < addresses.length; i += BATCH) {\n extendIxs.push(AddressLookupTableProgram.extendLookupTable({\n payer, authority: payer,\n lookupTable: altAddress,\n addresses: addresses.slice(i, i + BATCH),\n }));\n }\n\n await this._sendLegacyTx([createIx, extendIxs[0]]);\n for (let i = 1; i < extendIxs.length; i++) {\n await this._sendLegacyTx([extendIxs[i]]);\n }\n\n for (let attempt = 0; attempt < 30; attempt++) {\n await new Promise(r => setTimeout(r, 1000));\n const res = await connection.getAddressLookupTable(altAddress);\n if (res.value && res.value.state.addresses.length === addresses.length) {\n this._altCache.set(cacheKey, res.value);\n return res.value;\n }\n }\n throw new Error(`ALT ${altAddress.toBase58()} not active after 30s`);\n }\n\n private async _sendLegacyTxSig(instructions: TransactionInstruction[]): Promise<string> {\n const { connection } = this.provider;\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash();\n const { Transaction } = await import(\"@solana/web3.js\");\n const tx = new Transaction();\n tx.recentBlockhash = blockhash;\n tx.feePayer = this.walletPubkey;\n tx.add(...instructions);\n const signed = await this.provider.wallet.signTransaction(tx);\n const sig = await connection.sendRawTransaction(signed.serialize(), { skipPreflight: true });\n const result = await connection.confirmTransaction({ signature: sig, blockhash, lastValidBlockHeight }, \"confirmed\");\n if (result.value.err) {\n const txInfo = await connection.getTransaction(sig, { maxSupportedTransactionVersion: 0 });\n const logs = txInfo?.meta?.logMessages ?? [];\n const err = new Error(`Register tx failed: ${JSON.stringify(result.value.err)}\\n${logs.join(\"\\n\")}`);\n (err as any).logs = logs;\n throw err;\n }\n return sig;\n }\n\n private async _sendLegacyTx(instructions: TransactionInstruction[]): Promise<void> {\n await this._sendLegacyTxSig(instructions);\n }\n\n private async _ensureClobOutcomeAtas(\n yesMint: PublicKey,\n noMint: PublicKey,\n clobConfig: PublicKey,\n clobYesAta: PublicKey,\n clobNoAta: PublicKey,\n ): Promise<void> {\n const { connection } = this.provider;\n const [yesInfo, noInfo] = await Promise.all([\n connection.getAccountInfo(clobYesAta),\n connection.getAccountInfo(clobNoAta),\n ]);\n const { createAssociatedTokenAccountIdempotentInstruction } = await import(\"@solana/spl-token\");\n const ixs: TransactionInstruction[] = [];\n if (!yesInfo) {\n ixs.push(createAssociatedTokenAccountIdempotentInstruction(\n this.walletPubkey, clobYesAta, clobConfig, yesMint, TOKEN_2022_PROGRAM_ID,\n ));\n }\n if (!noInfo) {\n ixs.push(createAssociatedTokenAccountIdempotentInstruction(\n this.walletPubkey, clobNoAta, clobConfig, noMint, TOKEN_2022_PROGRAM_ID,\n ));\n }\n if (ixs.length > 0) {\n await this._sendLegacyTx(ixs);\n }\n }\n\n /**\n * Send a match transaction as versioned (v0) with optional ALT.\n * Both operator wallet and payer (this.provider.wallet) sign.\n */\n async sendMatchTx(\n instructions: TransactionInstruction[],\n lookupTable?: AddressLookupTableAccount,\n whitelistedWallet?: anchor.Wallet,\n ): Promise<string> {\n const { connection } = this.provider;\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash();\n const cuLimit = ComputeBudgetProgram.setComputeUnitLimit({ units: 1_400_000 });\n const heapFrame = ComputeBudgetProgram.requestHeapFrame({ bytes: 262144 }); // 256KB\n const message = new TransactionMessage({\n payerKey: this.walletPubkey,\n recentBlockhash: blockhash,\n instructions: [cuLimit, heapFrame, ...instructions],\n }).compileToV0Message(lookupTable ? [lookupTable] : []);\n const vtx = new VersionedTransaction(message);\n const signers: SolanaSigner[] = [(this.provider.wallet as any).payer as SolanaSigner];\n if (\n whitelistedWallet &&\n !whitelistedWallet.publicKey.equals(this.walletPubkey)\n ) {\n signers.push((whitelistedWallet as any).payer as SolanaSigner);\n }\n vtx.sign(signers);\n const sig = await connection.sendRawTransaction(vtx.serialize(), {\n skipPreflight: false,\n });\n const result = await connection.confirmTransaction(\n { signature: sig, blockhash, lastValidBlockHeight },\n \"confirmed\",\n );\n if (result.value.err) {\n const txInfo = await connection.getTransaction(sig, { maxSupportedTransactionVersion: 0 });\n const logs = txInfo?.meta?.logMessages ?? [];\n const err = new Error(`Match tx failed: ${JSON.stringify(result.value.err)}\\n${logs.join(\"\\n\")}`);\n (err as any).logs = logs;\n throw err;\n }\n return sig;\n }\n\n configPda(): PublicKey {\n return PDA.clobConfig(this.programIds)[0];\n }\n\n // ─── Register / Cancel ───────────────────────────────────────────────────────\n\n /**\n * Register a signed order on-chain.\n * Sends Ed25519 precompile ix + register_order ix in one legacy tx.\n * Called at match time (engine-triggered), not at order placement.\n */\n async registerOrder(signed: SignedOrder): Promise<string> {\n const nonce = signed.order.nonce;\n const orderSigner = signed.order.maker;\n const [orderRecord] = PDA.orderRecord(orderSigner, nonce, this.programIds);\n\n const ed25519Ix = buildBatchedEd25519Instruction([signed]);\n\n const [orderStatus] = PDA.orderStatus(orderSigner, nonce, this.programIds);\n const registerIx = await this.program.methods\n .registerOrder(nonce)\n .accounts({\n payer: this.walletPubkey,\n clobConfig: this.configPda(),\n ixSysvar: IX_SYSVAR,\n orderSigner,\n orderRecord,\n orderStatus,\n systemProgram: SystemProgram.programId,\n })\n .instruction();\n\n return this._sendLegacyTxSig([ed25519Ix, registerIx]);\n }\n\n /** Register only if the PDA doesn't exist yet (idempotent). */\n private async registerOrderIfNeeded(signed: SignedOrder): Promise<void> {\n const [pda] = PDA.orderRecord(signed.order.maker, signed.order.nonce, this.programIds);\n const existing = await (this.program.account as any).signedOrderRecord.fetchNullable(pda);\n if (!existing) {\n await this.registerOrder(signed);\n }\n }\n\n /** Cancel an order — closes its OrderRecord PDA and returns rent to maker. */\n async cancelOrder(nonce: anchor.BN): Promise<TxResult> {\n const [orderRecord] = PDA.orderRecord(this.walletPubkey, nonce, this.programIds);\n const sig = await this.program.methods\n .cancelOrder(nonce)\n .accounts({\n maker: this.walletPubkey,\n orderRecord,\n systemProgram: SystemProgram.programId,\n })\n .rpc();\n return { signature: sig };\n }\n\n // ─── Admin ───────────────────────────────────────────────────────────────────\n\n async initialize(\n operators: PublicKey[],\n feeRecipient: PublicKey,\n feeRateBps: number\n ): Promise<TxResult> {\n const sig = await this.program.methods\n .initializeClob(\n operators,\n feeRecipient,\n feeRateBps,\n this.programIds.conditionalTokens\n )\n .accounts({\n owner: this.walletPubkey,\n clobConfig: this.configPda(),\n systemProgram: SystemProgram.programId,\n })\n .rpc();\n return { signature: sig };\n }\n\n async addOperator(operator: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .addOperator(operator)\n .accounts({\n admin: this.walletPubkey,\n clobConfig: this.configPda(),\n })\n .rpc();\n return { signature: sig };\n }\n\n async removeOperator(operator: PublicKey): Promise<TxResult> {\n const sig = await this.program.methods\n .removeOperator(operator)\n .accounts({\n admin: this.walletPubkey,\n clobConfig: this.configPda(),\n })\n .rpc();\n return { signature: sig };\n }\n\n async setPaused(paused: boolean): Promise<TxResult> {\n const sig = await this.program.methods\n .setPaused(paused)\n .accounts({\n admin: this.walletPubkey,\n clobConfig: this.configPda(),\n })\n .rpc();\n return { signature: sig };\n }\n\n async forceResetClob(\n programData: PublicKey,\n newAdmin: PublicKey,\n newOperators: PublicKey[],\n newFeeRecipient: PublicKey,\n newFeeRateBps: number\n ): Promise<TxResult> {\n const sig = await this.program.methods\n .forceResetClob(newAdmin, newOperators, newFeeRecipient, newFeeRateBps)\n .accounts({\n upgradeAuthority: this.walletPubkey,\n programData,\n clobConfig: this.configPda(),\n })\n .rpc();\n return { signature: sig };\n }\n\n // ─── Match instructions ───────────────────────────────────────────────────────\n\n /**\n * Build match_complementary instruction (no Ed25519 — OrderRecord PDAs used).\n *\n * remaining_accounts layout:\n * [seller, order_record, seller_token, seller_collateral, seller_position, sell_status] × N\n * [extraAccountMetaList, hookConfig, hookProgram]\n * [feeManagement, fee_config, mkt_override, company_ata, oracle_vault] (when fee > 0)\n */\n async buildMatchComplementaryIxs(\n takerSigned: SignedOrder,\n makersSigned: SignedOrder[],\n collateralMint: PublicKey,\n feeRecipient: PublicKey,\n operator: PublicKey,\n opts?: { marketOracleVault?: PublicKey; fillAmount?: anchor.BN },\n useTakerPrice: boolean = false,\n skipCrossingCheck: boolean = true,\n ): Promise<TransactionInstruction[]> {\n const condition = takerSigned.order.condition;\n const tokenId = takerSigned.order.tokenId;\n const taker = takerSigned.order.maker;\n const takerNonce = takerSigned.order.nonce;\n const fillAmount = opts?.fillAmount ?? new anchor.BN(\"18446744073709551615\");\n\n const [outcomeMint] = tokenId === 1\n ? PDA.yesMint(condition, this.programIds)\n : PDA.noMint(condition, this.programIds);\n\n const [takerOrderRecord] = PDA.orderRecord(taker, takerNonce, this.programIds);\n const takerCollateral = getAssociatedTokenAddressSync(collateralMint, taker);\n const takerTokenAccount = getAssociatedTokenAddressSync(outcomeMint, taker, false, TOKEN_2022_PROGRAM_ID);\n const [takerPosition] = PDA.position(condition, tokenId, taker, this.programIds);\n const [takerOrderStatus] = PDA.orderStatus(taker, takerNonce, this.programIds);\n\n // Per-maker remaining_accounts (6 each): seller, order_record, token, collateral, position, status\n const makerAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n for (const ms of makersSigned) {\n const seller = ms.order.maker;\n const [sellerRecord] = PDA.orderRecord(seller, ms.order.nonce, this.programIds);\n const sellerToken = getAssociatedTokenAddressSync(outcomeMint, seller, false, TOKEN_2022_PROGRAM_ID);\n const sellerCollateral = getAssociatedTokenAddressSync(collateralMint, seller);\n const [sellerPosition] = PDA.position(condition, tokenId, seller, this.programIds);\n const [sellerStatus] = PDA.orderStatus(seller, ms.order.nonce, this.programIds);\n\n makerAccounts.push(\n { pubkey: seller, isSigner: false, isWritable: false },\n { pubkey: sellerRecord, isSigner: false, isWritable: false },\n { pubkey: sellerToken, isSigner: false, isWritable: true },\n { pubkey: sellerCollateral, isSigner: false, isWritable: true },\n { pubkey: sellerPosition, isSigner: false, isWritable: true },\n { pubkey: sellerStatus, isSigner: false, isWritable: true },\n );\n }\n\n // Hook accounts (3): extraAccountMetaList, hookConfig, hookProgram\n const [extraAccountMetaList] = PDA.extraAccountMetaList(outcomeMint, this.programIds);\n const [hookConfig] = PDA.hookConfig(this.programIds);\n const hookAccounts = [\n { pubkey: extraAccountMetaList, isSigner: false, isWritable: false },\n { pubkey: hookConfig, isSigner: false, isWritable: false },\n { pubkey: this.programIds.hook, isSigner: false, isWritable: false },\n ];\n\n // Fee accounts (5, optional) — only added when market_fee_override PDA exists for this condition.\n // If PDA doesn't exist (new conditions without fee config), fee goes directly to fee_recipient.\n let feeAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n if (takerSigned.order.fee.gtn(0) && this.programIds.feeManagement && this.feeConfigOwner) {\n const companyAddr = await this.companyAddress();\n if (companyAddr) {\n const feeOverridePda = PDA.marketFeeOverride(condition, this.programIds)[0];\n const feeOverrideExists = await this.provider.connection.getAccountInfo(feeOverridePda);\n if (feeOverrideExists) {\n const oracleVault = opts?.marketOracleVault ?? this.walletPubkey;\n feeAccounts = [\n { pubkey: this.programIds.feeManagement!, isSigner: false, isWritable: false },\n { pubkey: PDA.feeConfig(this.feeConfigOwner!, this.programIds)[0], isSigner: false, isWritable: false },\n { pubkey: feeOverridePda, isSigner: false, isWritable: false },\n { pubkey: getAssociatedTokenAddressSync(collateralMint, companyAddr), isSigner: false, isWritable: true },\n { pubkey: oracleVault, isSigner: false, isWritable: true },\n ];\n }\n }\n }\n\n const matchIx = await this.program.methods\n .matchComplementary(takerNonce, fillAmount, useTakerPrice, skipCrossingCheck)\n .accounts({\n operator,\n payer: this.walletPubkey,\n clobConfig: this.configPda(),\n condition,\n taker,\n takerOrderRecord,\n takerCollateral,\n takerTokenAccount,\n takerPosition,\n takerOrderStatus,\n feeRecipient,\n outcomeMint,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n tokenProgram: TOKEN_PROGRAM_ID,\n token2022Program: TOKEN_2022_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .remainingAccounts([...makerAccounts, ...hookAccounts, ...feeAccounts])\n .instruction();\n\n return [matchIx];\n }\n\n /**\n * COMPLEMENTARY: 1 taker (BUY) + N makers (SELL), same tokenId.\n * Phase 1: register taker + all makers in parallel.\n * Phase 2: 1 atomic match tx.\n */\n private async matchComplementary(\n takerSigned: SignedOrder,\n makersSigned: SignedOrder[],\n collateralMint: PublicKey,\n feeRecipient: PublicKey,\n operatorWallet: anchor.Wallet,\n lookupTable?: AddressLookupTableAccount,\n opts?: { marketOracleVault?: PublicKey },\n ): Promise<TxResult> {\n await Promise.all([\n this.registerOrderIfNeeded(takerSigned),\n ...makersSigned.map(m => this.registerOrderIfNeeded(m)),\n ]);\n\n const ixs = await this.buildMatchComplementaryIxs(\n takerSigned, makersSigned, collateralMint, feeRecipient, operatorWallet.publicKey, opts,\n );\n const sig = await this.sendMatchTx(ixs, lookupTable, operatorWallet);\n return { signature: sig };\n }\n\n /**\n * 1 SELL taker vs N BUY makers.\n * Program now supports SELL-as-taker natively → 1 instruction with all BUY makers\n * in remaining_accounts (same structure as BUY taker case).\n */\n private async matchComplementarySellVsMultiBuy(\n sellTaker: SignedOrder,\n buyMakers: SignedOrder[],\n collateralMint: PublicKey,\n feeRecipient: PublicKey,\n operatorWallet: anchor.Wallet,\n lookupTable?: AddressLookupTableAccount,\n opts?: { marketOracleVault?: PublicKey },\n ): Promise<TxResult> {\n if (buyMakers.length === 0) {\n throw new InvalidParamError(\"COMPLEMENTARY: no BUY maker orders provided\");\n }\n\n // Aggregate crossing check: sum(buy_i.makerAmount) >= sell.takerAmount\n const sell = sellTaker.order;\n const totalBuyPayment = buyMakers.reduce(\n (acc, b) => acc + BigInt(b.order.makerAmount.toString()),\n BigInt(0),\n );\n const sellExpected = BigInt(sell.takerAmount.toString());\n if (totalBuyPayment < sellExpected) {\n throw new InvalidParamError(\n `COMPLEMENTARY: total buyer payments ${totalBuyPayment} < seller expected ${sellExpected}`,\n );\n }\n\n await Promise.all([\n this.registerOrderIfNeeded(sellTaker),\n ...buyMakers.map(m => this.registerOrderIfNeeded(m)),\n ]);\n\n // 1 instruction: SELL as taker, all BUY makers in remaining_accounts\n // use_taker_price=false: each BUY maker pays at their own price → SELL gets price improvement\n const ixs = await this.buildMatchComplementaryIxs(\n sellTaker, buyMakers, collateralMint, feeRecipient, operatorWallet.publicKey, opts,\n false,\n );\n const sig = await this.sendMatchTx(ixs, lookupTable, operatorWallet);\n return { signature: sig };\n }\n\n /**\n * MINT: 1 YES buyer (taker) + N NO buyers (makers).\n * Phase 1: register taker + all NO makers in parallel.\n * Phase 2: 1 atomic match tx.\n *\n * remaining_accounts per NO maker (5):\n * [order_record, buyer_no_token, buyer_no_collateral, buyer_no_position, no_order_status]\n */\n /** Build the match_mint_orders instruction (no signing, no sending). */\n private async _buildMintIx(\n yesSigned: SignedOrder,\n noMakers: SignedOrder[],\n collateralMint: PublicKey,\n operator: PublicKey,\n payer: PublicKey,\n ): Promise<TransactionInstruction> {\n const condition = yesSigned.order.condition;\n const taker = yesSigned.order.maker;\n const takerNonce = yesSigned.order.nonce;\n const fillAmount = new anchor.BN(\"18446744073709551615\");\n const clobConfig = this.configPda();\n\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const [mintAuthority] = PDA.mintAuthority(condition, this.programIds);\n const [collateralVault] = PDA.collateralVault(collateralMint, this.programIds);\n const [vaultTokenAccount] = PDA.vaultToken(collateralMint, this.programIds);\n const [takerOrderRecord] = PDA.orderRecord(taker, takerNonce, this.programIds);\n const takerCollateral = getAssociatedTokenAddressSync(collateralMint, taker);\n const takerYesToken = getAssociatedTokenAddressSync(yesMint, taker, false, TOKEN_2022_PROGRAM_ID);\n const [takerYesPosition] = PDA.position(condition, 1, taker, this.programIds);\n const [takerOrderStatus] = PDA.orderStatus(taker, takerNonce, this.programIds);\n\n const clobUsdcAta = getAssociatedTokenAddressSync(collateralMint, clobConfig, true);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n const [clobYesPos] = PDA.position(condition, 1, clobConfig, this.programIds);\n const [clobNoPos] = PDA.position(condition, 0, clobConfig, this.programIds);\n\n const [extraMetaYes] = PDA.extraAccountMetaList(yesMint, this.programIds);\n const [extraMetaNo] = PDA.extraAccountMetaList(noMint, this.programIds);\n const [hookConfig] = PDA.hookConfig(this.programIds);\n const hookProgram = this.programIds.hook;\n\n const remainingAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n for (const nm of noMakers) {\n const noMaker = nm.order.maker;\n const [noRecord] = PDA.orderRecord(noMaker, nm.order.nonce, this.programIds);\n const noToken = getAssociatedTokenAddressSync(noMint, noMaker, false, TOKEN_2022_PROGRAM_ID);\n const noCollateral = getAssociatedTokenAddressSync(collateralMint, noMaker);\n const [noPosition] = PDA.position(condition, 0, noMaker, this.programIds);\n const [noStatus] = PDA.orderStatus(noMaker, nm.order.nonce, this.programIds);\n remainingAccounts.push(\n { pubkey: noMaker, isSigner: false, isWritable: false },\n { pubkey: noRecord, isSigner: false, isWritable: false },\n { pubkey: noToken, isSigner: false, isWritable: true },\n { pubkey: noCollateral, isSigner: false, isWritable: true },\n { pubkey: noPosition, isSigner: false, isWritable: true },\n { pubkey: noStatus, isSigner: false, isWritable: true },\n );\n }\n remainingAccounts.push(\n { pubkey: extraMetaYes, isSigner: false, isWritable: false },\n { pubkey: extraMetaNo, isSigner: false, isWritable: false },\n { pubkey: hookConfig, isSigner: false, isWritable: false },\n { pubkey: hookProgram, isSigner: false, isWritable: false },\n );\n\n return this.program.methods\n .matchMintOrders(takerNonce, fillAmount, true)\n .accounts({\n operator, payer, clobConfig, condition, taker,\n takerOrderRecord, takerCollateral, takerYesToken,\n takerYesPosition, takerOrderStatus,\n clobUsdcAta, clobYesAta, clobNoAta,\n clobYesPosition: clobYesPos,\n clobNoPosition: clobNoPos,\n collateralVault, vaultTokenAccount, collateralMint,\n yesMint, noMint, mintAuthority,\n clobAuthority: clobConfig,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n collateralTokenProgram: TOKEN_PROGRAM_ID,\n token2022Program: TOKEN_2022_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .remainingAccounts(remainingAccounts)\n .instruction();\n }\n\n private async matchMintOrders(\n yesSigned: SignedOrder,\n noMakers: SignedOrder[],\n collateralMint: PublicKey,\n _feeRecipient: PublicKey,\n operatorWallet: anchor.Wallet,\n lookupTable?: AddressLookupTableAccount,\n ): Promise<TxResult> {\n await Promise.all([\n this.registerOrderIfNeeded(yesSigned),\n ...noMakers.map(m => this.registerOrderIfNeeded(m)),\n ]);\n const condition = yesSigned.order.condition;\n const clobConfig = this.configPda();\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n const matchIx = await this._buildMintIx(yesSigned, noMakers, collateralMint, operatorWallet.publicKey, this.walletPubkey);\n await this._ensureClobOutcomeAtas(yesMint, noMint, clobConfig, clobYesAta, clobNoAta);\n const sig = await this.sendMatchTx([matchIx], lookupTable, operatorWallet);\n return { signature: sig };\n }\n\n /**\n * MERGE: 1 YES seller (taker) + N NO sellers (makers).\n * Phase 1: register taker + all NO makers in parallel.\n * Phase 2: 1 atomic match tx.\n *\n * remaining_accounts per NO maker (5):\n * [order_record, seller_no_token, seller_no_collateral, seller_no_position, no_order_status]\n * After all makers, optional 5 fee accounts.\n */\n /** Build the match_merge_orders instruction (no signing, no sending). */\n private async _buildMergeIx(\n yesSigned: SignedOrder,\n noMakers: SignedOrder[],\n collateralMint: PublicKey,\n operator: PublicKey,\n payer: PublicKey,\n opts?: { marketOracleVault?: PublicKey },\n ): Promise<TransactionInstruction> {\n const condition = yesSigned.order.condition;\n const sellerYes = yesSigned.order.maker;\n const takerNonce = yesSigned.order.nonce;\n const fillAmount = new anchor.BN(\"18446744073709551615\");\n const clobConfig = this.configPda();\n\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const [collateralVault] = PDA.collateralVault(collateralMint, this.programIds);\n const [vaultTokenAccount] = PDA.vaultToken(collateralMint, this.programIds);\n const [takerOrderRecord] = PDA.orderRecord(sellerYes, takerNonce, this.programIds);\n const takerYesToken = getAssociatedTokenAddressSync(yesMint, sellerYes, false, TOKEN_2022_PROGRAM_ID);\n const [takerYesPosition] = PDA.position(condition, 1, sellerYes, this.programIds);\n const takerCollateral = getAssociatedTokenAddressSync(collateralMint, sellerYes);\n const [takerOrderStatus] = PDA.orderStatus(sellerYes, takerNonce, this.programIds);\n\n const clobUsdcAta = getAssociatedTokenAddressSync(collateralMint, clobConfig, true);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n const [clobYesPos] = PDA.position(condition, 1, clobConfig, this.programIds);\n const [clobNoPos] = PDA.position(condition, 0, clobConfig, this.programIds);\n\n const [extraMetaYes] = PDA.extraAccountMetaList(yesMint, this.programIds);\n const [extraMetaNo] = PDA.extraAccountMetaList(noMint, this.programIds);\n const [hookConfig] = PDA.hookConfig(this.programIds);\n const hookProgram = this.programIds.hook;\n\n const remainingAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n for (const nm of noMakers) {\n const noMaker = nm.order.maker;\n const [noRecord] = PDA.orderRecord(noMaker, nm.order.nonce, this.programIds);\n const noToken = getAssociatedTokenAddressSync(noMint, noMaker, false, TOKEN_2022_PROGRAM_ID);\n const noCollateral = getAssociatedTokenAddressSync(collateralMint, noMaker);\n const [noPosition] = PDA.position(condition, 0, noMaker, this.programIds);\n const [noStatus] = PDA.orderStatus(noMaker, nm.order.nonce, this.programIds);\n remainingAccounts.push(\n { pubkey: noMaker, isSigner: false, isWritable: false },\n { pubkey: noRecord, isSigner: false, isWritable: false },\n { pubkey: noToken, isSigner: false, isWritable: true },\n { pubkey: noCollateral, isSigner: false, isWritable: true },\n { pubkey: noPosition, isSigner: false, isWritable: true },\n { pubkey: noStatus, isSigner: false, isWritable: true },\n );\n }\n remainingAccounts.push(\n { pubkey: extraMetaYes, isSigner: false, isWritable: false },\n { pubkey: extraMetaNo, isSigner: false, isWritable: false },\n { pubkey: hookConfig, isSigner: false, isWritable: false },\n { pubkey: hookProgram, isSigner: false, isWritable: false },\n );\n\n if (yesSigned.order.fee.gtn(0) && this.programIds.feeManagement && this.feeConfigOwner) {\n const companyAddr = await this.companyAddress();\n if (companyAddr) {\n const feeOverridePda = PDA.marketFeeOverride(condition, this.programIds)[0];\n const feeOverrideExists = await this.provider.connection.getAccountInfo(feeOverridePda);\n if (feeOverrideExists) {\n const oracleVault = opts?.marketOracleVault ?? payer;\n remainingAccounts.push(\n { pubkey: this.programIds.feeManagement!, isSigner: false, isWritable: false },\n { pubkey: PDA.feeConfig(this.feeConfigOwner!, this.programIds)[0], isSigner: false, isWritable: false },\n { pubkey: feeOverridePda, isSigner: false, isWritable: false },\n { pubkey: getAssociatedTokenAddressSync(collateralMint, companyAddr), isSigner: false, isWritable: true },\n { pubkey: oracleVault, isSigner: false, isWritable: true },\n );\n }\n }\n }\n\n return this.program.methods\n .matchMergeOrders(takerNonce, fillAmount, true)\n .accounts({\n operator, payer, clobConfig, condition,\n taker: sellerYes,\n takerOrderRecord, takerYesToken, takerYesPosition,\n takerCollateral, takerOrderStatus,\n clobUsdcAta, clobYesAta, clobNoAta,\n clobYesPosition: clobYesPos,\n clobNoPosition: clobNoPos,\n collateralVault, vaultTokenAccount, collateralMint,\n yesMint, noMint,\n clobAuthority: clobConfig,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n collateralTokenProgram: TOKEN_PROGRAM_ID,\n token2022Program: TOKEN_2022_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .remainingAccounts(remainingAccounts)\n .instruction();\n }\n\n private async matchMergeOrders(\n yesSigned: SignedOrder,\n noMakers: SignedOrder[],\n collateralMint: PublicKey,\n _feeRecipient: PublicKey,\n operatorWallet: anchor.Wallet,\n lookupTable?: AddressLookupTableAccount,\n opts?: { marketOracleVault?: PublicKey },\n ): Promise<TxResult> {\n await Promise.all([\n this.registerOrderIfNeeded(yesSigned),\n ...noMakers.map(m => this.registerOrderIfNeeded(m)),\n ]);\n const condition = yesSigned.order.condition;\n const clobConfig = this.configPda();\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n const matchIx = await this._buildMergeIx(yesSigned, noMakers, collateralMint, operatorWallet.publicKey, this.walletPubkey, opts);\n await this._ensureClobOutcomeAtas(yesMint, noMint, clobConfig, clobYesAta, clobNoAta);\n const sig = await this.sendMatchTx([matchIx], lookupTable, operatorWallet);\n return { signature: sig };\n }\n\n /**\n * Auto-detect match type and execute 2-phase:\n * Phase 1 — register all orders (taker + makers) on-chain in parallel.\n * Phase 2 — 1 atomic match transaction.\n *\n * Detection (pure, no RPC):\n * taker.tokenId === makers[0].tokenId:\n * taker BUY + all makers SELL → COMPLEMENTARY\n * taker.tokenId !== makers[0].tokenId + all BUY → MINT\n * taker.tokenId !== makers[0].tokenId + all SELL → MERGE\n *\n * @param opts.marketOracleVault Oracle vault ATA for presale markets.\n * Omit for admin markets (payer used as placeholder).\n */\n async matchOrders(\n taker: SignedOrder,\n makers: SignedOrder[],\n opts?: { marketOracleVault?: PublicKey; operatorWallet?: anchor.Wallet },\n ): Promise<TxResult> {\n if (makers.length === 0) throw new InvalidParamError(\"At least 1 maker required\");\n\n const collateralMint = this.networkConfig.defaultCollateral.mint;\n const cfg = await this.fetchConfig();\n if (!cfg) throw new InvalidParamError(\"CLOB config not found on-chain\");\n const feeRecipient = cfg.feeRecipient;\n // operatorWallet = whitelisted CLOB operator (signs as operator).\n // this.provider.wallet = fee payer (pays tx fee + rent).\n // Both can be the same wallet (default) or separate.\n const operatorWallet = opts?.operatorWallet ?? (this.provider.wallet as anchor.Wallet);\n\n const alt = await this.ensureAlt(\n taker.order.condition,\n collateralMint,\n taker,\n makers,\n );\n\n const t = taker.order;\n const m0 = makers[0].order;\n const SIDE_BUY = 0;\n const SIDE_SELL = 1;\n\n if (t.tokenId === m0.tokenId) {\n // COMPLEMENTARY: one BUY + one or more SELLs (or vice versa), same tokenId.\n // Normalize to (buySigned, crossingSells) — filter out non-crossing makers.\n let buySignedOrder: SignedOrder, sellCandidates: SignedOrder[];\n\n if (t.side === SIDE_BUY && makers.every(m => m.order.side === SIDE_SELL)) {\n buySignedOrder = taker;\n sellCandidates = makers;\n } else if (t.side === SIDE_SELL && makers.every(m => m.order.side === SIDE_BUY)) {\n // 1 SELL taker vs N BUY makers:\n // Rust program only supports 1 BUY taker + N SELL makers.\n // Decompose into N instructions (BUY_i as taker, SELL as single maker) in 1 tx.\n return this.matchComplementarySellVsMultiBuy(taker, makers, collateralMint, feeRecipient, operatorWallet, alt, opts);\n } else {\n throw new InvalidParamError(\"COMPLEMENTARY requires one BUY and one or more SELLs on same tokenId\");\n }\n\n // No SDK-side crossing filter for BUY taker.\n // On-chain per-pair check is authoritative.\n // Build taker with limitPrice so on-chain check passes for all crossing SELLs.\n const finalSells = sellCandidates;\n\n return this.matchComplementary(buySignedOrder, finalSells, collateralMint, feeRecipient, operatorWallet, alt, opts);\n }\n\n const allBuy = t.side === SIDE_BUY && makers.every(m => m.order.side === SIDE_BUY);\n const allSell = t.side === SIDE_SELL && makers.every(m => m.order.side === SIDE_SELL);\n\n if (!allBuy && !allSell) throw new InvalidParamError(\"MINT/MERGE: all orders must be same side\");\n\n const takerIsYes = t.tokenId === 1 && makers.every(m => m.order.tokenId === 0);\n const takerIsNo = t.tokenId === 0 && makers.every(m => m.order.tokenId === 1);\n if (!takerIsYes && !takerIsNo) throw new InvalidParamError(\"MINT/MERGE: orders must be complementary YES+NO pair\");\n\n if (takerIsYes) {\n if (allBuy) return this.matchMintOrders(taker, makers, collateralMint, feeRecipient, operatorWallet, alt);\n return this.matchMergeOrders(taker, makers, collateralMint, feeRecipient, operatorWallet, alt, opts);\n }\n\n // NO taker + N YES makers: Rust program requires YES taker + NO makers.\n // Decompose into N calls — each YES maker becomes the program taker,\n // the NO buyer appears as the sole program maker. Order_status tracks\n // cumulative fills so the NO order is correctly partial-filled across calls.\n let lastResult!: TxResult;\n for (const yesMaker of makers) {\n if (allBuy) lastResult = await this.matchMintOrders(yesMaker, [taker], collateralMint, feeRecipient, operatorWallet, alt);\n else lastResult = await this.matchMergeOrders(yesMaker, [taker], collateralMint, feeRecipient, operatorWallet, alt, opts);\n }\n return lastResult;\n }\n\n /**\n * High-level match: caller passes price + quantity + keypair — SDK builds,\n * signs, and submits in one call. No manual amount calculation needed.\n *\n * Amounts are computed from each order's own limit `price` (percentage, e.g. 51 for 51%).\n * NEVER pass averageMatchedPrice — that is an engine output, not an order input.\n *\n * @param taker { keypair, condition, tokenId, side, price, quantity, nonce?, expiry? }\n * @param makers Array of same shape\n * @param decimals Collateral decimals (default 9 for USDS)\n */\n async matchOrdersFromPrice(\n taker: {\n keypair: { publicKey: PublicKey; secretKey: Uint8Array };\n condition: PublicKey;\n tokenId: number;\n side: 0 | 1;\n price: number;\n quantity: number;\n nonce?: BN;\n expiry?: BN;\n fee?: BN;\n taker?: PublicKey;\n },\n makers: Array<{\n keypair: { publicKey: PublicKey; secretKey: Uint8Array };\n condition: PublicKey;\n tokenId: number;\n side: 0 | 1;\n price: number;\n quantity: number;\n nonce?: BN;\n expiry?: BN;\n fee?: BN;\n taker?: PublicKey;\n }>,\n decimals: number = 9,\n opts?: { marketOracleVault?: PublicKey; operatorWallet?: anchor.Wallet },\n ): Promise<TxResult> {\n const nacl = await import(\"tweetnacl\");\n\n const buildSigned = (p: typeof taker) => {\n const order = buildOrderFromPrice({\n maker: p.keypair.publicKey,\n condition: p.condition,\n tokenId: p.tokenId,\n side: p.side,\n price: p.price,\n quantity: p.quantity,\n decimals,\n nonce: p.nonce,\n expiry: p.expiry,\n fee: p.fee,\n taker: p.taker,\n });\n const msg = serializeOrderToBytes(order);\n const sig = nacl.default.sign.detached(msg, p.keypair.secretKey);\n return { order, signature: sig };\n };\n\n const takerSigned = buildSigned(taker);\n\n // Sort makers by best price for taker before building signed orders:\n // direct BUY taker (side=0, same tokenId) → SELL makers cheapest first (ASC)\n // direct SELL taker (side=1, same tokenId) → BUY makers highest first (DESC)\n // mirror BUY YES taker (tokenId=1,side=0) → BUY NO makers: high NO price = low\n // effective price for taker → sort NO makers DESC (highest NO price fills first)\n // mirror SELL YES taker (tokenId=1,side=1) → SELL NO makers: low NO price = high\n // effective payout → sort NO makers ASC (lowest NO price fills first = best merge)\n const sortedMakers = [...makers].sort((a, b) => {\n const sameToken = a.tokenId === taker.tokenId && b.tokenId === taker.tokenId;\n const isDirectBuy = taker.side === 0 && sameToken;\n const isDirectSell = taker.side === 1 && sameToken;\n const isMint = taker.side === 0 && taker.tokenId === 1;\n const isMerge = taker.side === 1 && taker.tokenId === 1;\n if (isDirectBuy) return a.price - b.price; // SELL ASC: cheapest first\n if (isDirectSell) return b.price - a.price; // BUY DESC: highest first\n if (isMint) return b.price - a.price; // NO DESC: highest NO = lowest effective\n if (isMerge) return a.price - b.price; // NO ASC: lowest NO = highest payout\n return 0;\n });\n\n const makersSigned = sortedMakers.map(buildSigned);\n return this.matchOrders(takerSigned, makersSigned, opts);\n }\n\n /**\n * Build an unsigned VersionedTransaction for a set of match instructions.\n * Callers sign and send externally — mirrors createQuestionAdmin pattern.\n */\n private async _buildUnsignedVtx(\n instructions: TransactionInstruction[],\n lookupTable: AddressLookupTableAccount | undefined,\n payer: PublicKey,\n ): Promise<VersionedTransaction> {\n const { connection } = this.provider;\n const { blockhash } = await connection.getLatestBlockhash();\n const cuLimit = ComputeBudgetProgram.setComputeUnitLimit({ units: 1_400_000 });\n const heapFrame = ComputeBudgetProgram.requestHeapFrame({ bytes: 262144 });\n const message = new TransactionMessage({\n payerKey: payer,\n recentBlockhash: blockhash,\n instructions: [cuLimit, heapFrame, ...instructions],\n }).compileToV0Message(lookupTable ? [lookupTable] : []);\n return new VersionedTransaction(message);\n }\n\n /**\n * Build unsigned VersionedTransaction(s) for matching orders.\n *\n * Mirrors createQuestionAdmin pattern — SDK registers orders internally but\n * returns the match tx unsigned. BE signs with both keypairs and sends:\n *\n * const [vtx] = await sdk.clob.buildMatchOrdersTx(taker, makers, operatorPk, payerPk);\n * vtx.sign([feePayerKeypair, operatorKeypair]);\n * await connection.sendRawTransaction(vtx.serialize());\n *\n * All match types pack into a single VersionedTransaction — same as createQuestionAdmin pattern.\n * NO-taker MINT/MERGE decomposes into N instructions but all packed in 1 tx.\n *\n * @param operator - Whitelisted CLOB operator pubkey (must sign)\n * @param payer - Fee payer pubkey (must sign, pays tx fee + rent)\n */\n async buildMatchOrdersTx(\n taker: SignedOrder,\n makers: SignedOrder[],\n operator: PublicKey,\n payer: PublicKey,\n opts?: { marketOracleVault?: PublicKey },\n ): Promise<VersionedTransaction> {\n if (makers.length === 0) throw new InvalidParamError(\"At least 1 maker required\");\n\n const collateralMint = this.networkConfig.defaultCollateral.mint;\n const cfg = await this.fetchConfig();\n if (!cfg) throw new InvalidParamError(\"CLOB config not found on-chain\");\n const feeRecipient = cfg.feeRecipient;\n\n const alt = await this.ensureAlt(taker.order.condition, collateralMint, taker, makers);\n\n const t = taker.order;\n const m0 = makers[0].order;\n const SIDE_BUY = 0;\n const SIDE_SELL = 1;\n\n // ── COMPLEMENTARY ──────────────────────────────────────────────────────────\n if (t.tokenId === m0.tokenId) {\n let buySignedOrder: SignedOrder, sellCandidates: SignedOrder[];\n if (t.side === SIDE_BUY && makers.every(m => m.order.side === SIDE_SELL)) {\n buySignedOrder = taker; sellCandidates = makers;\n } else if (t.side === SIDE_SELL && makers.every(m => m.order.side === SIDE_BUY)) {\n // SELL taker: 1 instruction, all BUY makers in remaining_accounts\n // use_taker_price=false: each BUY maker pays their own price → price improvement for seller\n await Promise.all([\n this.registerOrderIfNeeded(taker),\n ...makers.map(m => this.registerOrderIfNeeded(m)),\n ]);\n const ixs = await this.buildMatchComplementaryIxs(\n taker, makers, collateralMint, feeRecipient, operator, opts, false,\n );\n return this._buildUnsignedVtx(ixs, alt, payer);\n } else {\n throw new InvalidParamError(\"COMPLEMENTARY requires one BUY and one or more SELLs on same tokenId\");\n }\n await Promise.all([\n this.registerOrderIfNeeded(buySignedOrder),\n ...sellCandidates.map(m => this.registerOrderIfNeeded(m)),\n ]);\n const ixs = await this.buildMatchComplementaryIxs(\n buySignedOrder, sellCandidates, collateralMint, feeRecipient, operator, opts,\n );\n return this._buildUnsignedVtx(ixs, alt, payer);\n }\n\n // ── MINT / MERGE ───────────────────────────────────────────────────────────\n const allBuy = t.side === SIDE_BUY && makers.every(m => m.order.side === SIDE_BUY);\n const allSell = t.side === SIDE_SELL && makers.every(m => m.order.side === SIDE_SELL);\n if (!allBuy && !allSell) throw new InvalidParamError(\"MINT/MERGE: all orders must be same side\");\n\n const takerIsYes = t.tokenId === 1 && makers.every(m => m.order.tokenId === 0);\n const takerIsNo = t.tokenId === 0 && makers.every(m => m.order.tokenId === 1);\n if (!takerIsYes && !takerIsNo) throw new InvalidParamError(\"MINT/MERGE: orders must be complementary YES+NO pair\");\n\n const condition = t.condition;\n const clobConfig = this.configPda();\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_2022_PROGRAM_ID);\n\n if (takerIsYes) {\n await Promise.all([\n this.registerOrderIfNeeded(taker),\n ...makers.map(m => this.registerOrderIfNeeded(m)),\n ]);\n await this._ensureClobOutcomeAtas(yesMint, noMint, clobConfig, clobYesAta, clobNoAta);\n const ix = allBuy\n ? await this._buildMintIx(taker, makers, collateralMint, operator, payer)\n : await this._buildMergeIx(taker, makers, collateralMint, operator, payer, opts);\n return this._buildUnsignedVtx([ix], alt, payer);\n }\n\n // NO taker + N YES makers → N ixs packed in 1 tx\n await Promise.all([\n this.registerOrderIfNeeded(taker),\n ...makers.map(m => this.registerOrderIfNeeded(m)),\n ]);\n await this._ensureClobOutcomeAtas(yesMint, noMint, clobConfig, clobYesAta, clobNoAta);\n const ixs: TransactionInstruction[] = [];\n for (const yesMaker of makers) {\n const ix = allBuy\n ? await this._buildMintIx(yesMaker, [taker], collateralMint, operator, payer)\n : await this._buildMergeIx(yesMaker, [taker], collateralMint, operator, payer, opts);\n ixs.push(ix);\n }\n return this._buildUnsignedVtx(ixs, alt, payer);\n }\n\n // ─── Queries ─────────────────────────────────────────────────────────────────\n\n async fetchConfig(): Promise<ClobConfig | null> {\n try {\n const acc = await (this.program.account as any).clobConfig.fetch(this.configPda());\n return {\n owner: acc.owner,\n operators: acc.operators as PublicKey[],\n operatorsLen: acc.operatorsLen,\n feeRecipient: acc.feeRecipient,\n feeRateBps: acc.feeRateBps,\n conditionalTokensProgram: acc.conditionalTokensProgram,\n isPaused: acc.isPaused,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchOrderStatus(maker: PublicKey, nonce: anchor.BN): Promise<OrderStatus | null> {\n try {\n const [pda] = PDA.orderStatus(maker, nonce, this.programIds);\n const acc = await (this.program.account as any).orderStatus.fetch(pda);\n return {\n maker: acc.maker,\n nonce: acc.nonce,\n filledAmount: acc.filledAmount,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchOrderRecord(maker: PublicKey, nonce: anchor.BN): Promise<{\n maker: PublicKey; condition: PublicKey; tokenId: number; side: number;\n makerAmount: anchor.BN; takerAmount: anchor.BN; nonce: anchor.BN;\n expiry: anchor.BN; fee: anchor.BN; taker: PublicKey; signer: PublicKey;\n } | null> {\n try {\n const [pda] = PDA.orderRecord(maker, nonce, this.programIds);\n const acc = await (this.program.account as any).signedOrderRecord.fetch(pda);\n return acc;\n } catch {\n return null;\n }\n }\n}\n","import * as anchor from \"@coral-xyz/anchor\";\nimport { PublicKey, SystemProgram, TransactionInstruction } from \"@solana/web3.js\";\nimport BN from \"bn.js\";\nimport { ProgramIds } from \"../config/networks\";\nimport { PDA } from \"../pda\";\nimport { QuestionFee, TxResult } from \"../types\";\n\nexport class FeeManagementClient {\n constructor(\n private readonly program: anchor.Program,\n private readonly provider: anchor.AnchorProvider,\n private readonly programIds: ProgramIds,\n ) {}\n\n async initFeeConfig(\n admin: PublicKey,\n companyAddress: PublicKey,\n referralAddress: PublicKey,\n presaleRevenueAddress: PublicKey,\n investorsMarketRev: number,\n companyMarketRev: number,\n agentsPresaleRev: number,\n companyPresaleRev: number,\n authority: PublicKey,\n payer: PublicKey,\n ): Promise<TxResult> {\n const [feeConfigPda] = PDA.feeConfig(authority, this.programIds);\n const sig = await this.program.methods\n .initialize({\n admin,\n companyAddress,\n referralAddress,\n presaleRevenueAddress,\n investorsMarketRev,\n companyMarketRev,\n agentsPresaleRev,\n companyPresaleRev,\n })\n .accounts({\n authority,\n payer,\n feeConfig: feeConfigPda,\n systemProgram: SystemProgram.programId,\n })\n .signers([])\n .rpc();\n return { signature: sig };\n }\n\n async fetchFeeConfig(owner: PublicKey): Promise<any | null> {\n try {\n const [pda] = PDA.feeConfig(owner, this.programIds);\n return await (this.program.account as any).feeConfig.fetch(pda);\n } catch {\n return null;\n }\n }\n\n /**\n * Fetch per-market fees for a condition.\n * Returns null if fees have not been initialized yet.\n * Fees are set automatically via CPI when create_question_admin / approve_presale runs.\n * Defaults: swapFee=200 (2%), redeemFee=0, mergeFee=2000 (20%), out of FEE_DENOMINATOR=10_000.\n */\n async getMarketFee(conditionPda: PublicKey): Promise<QuestionFee | null> {\n return this.fetchQuestionFee(conditionPda);\n }\n\n async fetchQuestionFee(conditionPda: PublicKey): Promise<QuestionFee | null> {\n try {\n const [pda] = PDA.questionFee(conditionPda, this.programIds);\n const acc = await (this.program.account as any).questionFee.fetch(pda);\n return {\n conditionId: new Uint8Array(acc.conditionId),\n mergeFee: acc.mergeFee as BN,\n redeemFee: acc.redeemFee as BN,\n swapFee: acc.swapFee as BN,\n bump: acc.bump as number,\n };\n } catch {\n return null;\n }\n }\n\n /**\n * Set per-question fees for a condition (whitelist-only edit after market creation).\n * @param conditionPda - condition PDA from the question\n * @param mergeFee - fee out of FEE_DENOMINATOR (10_000), e.g. 2_000 = 20%\n * @param redeemFee - fee out of FEE_DENOMINATOR\n * @param swapFee - trading fee out of FEE_DENOMINATOR, e.g. 200 = 2%\n * @param feeConfigOwner - pubkey that owns the fee_config PDA (usually market deployer)\n * @param authority - signer authorized in fee_config whitelist / admin / owner\n * @param payer - rent + tx fee payer\n */\n async updateFeeConfig(\n companyAddress: PublicKey,\n referralAddress: PublicKey,\n presaleRevenueAddress: PublicKey,\n investorsMarketRev: number,\n companyMarketRev: number,\n agentsPresaleRev: number,\n companyPresaleRev: number,\n authority: PublicKey,\n payer: PublicKey,\n ): Promise<TxResult> {\n const [feeConfigPda] = PDA.feeConfig(authority, this.programIds);\n const sig = await this.program.methods\n .updateConfig({\n companyAddress,\n referralAddress,\n presaleRevenueAddress,\n investorsMarketRev,\n companyMarketRev,\n agentsPresaleRev,\n companyPresaleRev,\n })\n .accounts({\n authority,\n payer,\n feeConfig: feeConfigPda,\n })\n .signers([])\n .rpc();\n return { signature: sig };\n }\n\n async setMarketFeeOverride(\n conditionPda: PublicKey,\n investors: number,\n company: number,\n isAdmin: boolean,\n feeConfigOwner: PublicKey,\n authority: PublicKey,\n payer: PublicKey,\n ): Promise<TxResult> {\n const [feeConfigPda] = PDA.feeConfig(feeConfigOwner, this.programIds);\n const [marketFeeOverridePda] = PDA.marketFeeOverride(conditionPda, this.programIds);\n\n const sig = await this.program.methods\n .setMarketFeeOverride(conditionPda, investors, company, isAdmin)\n .accounts({\n authority,\n payer,\n feeConfig: feeConfigPda,\n marketFeeOverride: marketFeeOverridePda,\n systemProgram: SystemProgram.programId,\n })\n .signers([])\n .rpc();\n\n return { signature: sig };\n }\n\n async buildDistributeFeeIx(\n conditionPda: PublicKey,\n amount: BN,\n feeConfigOwner: PublicKey,\n sourceAta: PublicKey,\n companyAta: PublicKey,\n marketOracleVault: PublicKey,\n authority: PublicKey,\n ): Promise<TransactionInstruction> {\n const [feeConfigPda] = PDA.feeConfig(feeConfigOwner, this.programIds);\n const [marketFeeOverridePda] = PDA.marketFeeOverride(conditionPda, this.programIds);\n return this.program.methods\n .distributeFee(conditionPda, amount)\n .accounts({\n feeConfig: feeConfigPda,\n marketFeeOverride: marketFeeOverridePda,\n authority,\n sourceAta,\n companyAta,\n marketOracleVault,\n tokenProgram: new PublicKey(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"),\n })\n .instruction();\n }\n\n async distributeFee(\n conditionPda: PublicKey,\n amount: BN,\n feeConfigOwner: PublicKey,\n sourceAta: PublicKey,\n companyAta: PublicKey,\n marketOracleVault: PublicKey,\n authority: PublicKey,\n ): Promise<TxResult> {\n const [feeConfigPda] = PDA.feeConfig(feeConfigOwner, this.programIds);\n const [marketFeeOverridePda] = PDA.marketFeeOverride(conditionPda, this.programIds);\n\n const sig = await this.program.methods\n .distributeFee(conditionPda, amount)\n .accounts({\n feeConfig: feeConfigPda,\n marketFeeOverride: marketFeeOverridePda,\n authority,\n sourceAta,\n companyAta,\n marketOracleVault,\n tokenProgram: new PublicKey(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"),\n })\n .signers([])\n .rpc();\n\n return { signature: sig };\n }\n\n async setQuestionFee(\n conditionPda: PublicKey,\n mergeFee: BN,\n redeemFee: BN,\n swapFee: BN,\n feeConfigOwner: PublicKey,\n authority: PublicKey,\n payer: PublicKey,\n ): Promise<TxResult> {\n const [feeConfigPda] = PDA.feeConfig(feeConfigOwner, this.programIds);\n const [questionFeePda] = PDA.questionFee(conditionPda, this.programIds);\n\n const sig = await this.program.methods\n .setQuestionFee(\n Array.from(conditionPda.toBytes()),\n mergeFee,\n redeemFee,\n swapFee,\n )\n .accounts({\n authority,\n payer,\n feeConfig: feeConfigPda,\n questionFee: questionFeePda,\n systemProgram: SystemProgram.programId,\n })\n .signers([])\n .rpc();\n\n return { signature: sig };\n }\n}\n","import * as anchor from \"@coral-xyz/anchor\";\nimport { PublicKey, SystemProgram, Transaction } from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n} from \"@solana/spl-token\";\nimport { PDA } from \"../pda\";\nimport { ProgramIds } from \"../config/networks\";\n\nexport interface PresaleInfo {\n version: number;\n questionMarketConfig: PublicKey;\n presaleIndex: anchor.BN;\n creator: PublicKey;\n currencyMint: PublicKey;\n qtMint: PublicKey;\n price: anchor.BN;\n startTime: anchor.BN;\n endTime: anchor.BN;\n status: \"pending\" | \"approved\" | \"rejected\";\n soldTokenAmount: anchor.BN;\n initialTokenAmountCreator: anchor.BN;\n agentsRev: number;\n companyRev: number;\n referralAddress: PublicKey;\n companyAddress: PublicKey;\n isDistributeRevenue: boolean;\n creatorClaimableRevenue: anchor.BN;\n bump: number;\n}\n\nexport interface UserBuyRecord {\n user: PublicKey;\n presale: PublicKey;\n currencyAmount: anchor.BN;\n bump: number;\n}\n\nexport class PresaleClient {\n private readonly program: anchor.Program;\n private readonly provider: anchor.AnchorProvider;\n private readonly programIds: ProgramIds;\n\n constructor(\n program: anchor.Program,\n provider: anchor.AnchorProvider,\n programIds: ProgramIds,\n ) {\n this.program = program;\n this.provider = provider;\n this.programIds = programIds;\n }\n\n get walletPubkey(): PublicKey {\n return this.provider.wallet.publicKey;\n }\n\n presalePda(questionMarketConfig: PublicKey, presaleIndex: anchor.BN): PublicKey {\n return PDA.presale(questionMarketConfig, presaleIndex, this.programIds)[0];\n }\n\n qtMintPda(presalePda: PublicKey): PublicKey {\n return PDA.qtMint(presalePda, this.programIds)[0];\n }\n\n qtAuthorityPda(presalePda: PublicKey): PublicKey {\n return PDA.qtAuthority(presalePda, this.programIds)[0];\n }\n\n userBuyRecordPda(presalePda: PublicKey, user: PublicKey): PublicKey {\n return PDA.userBuyRecord(presalePda, user, this.programIds)[0];\n }\n\n /**\n * Buy MST tokens during presale.\n * qtAmount: amount of MST to receive (9 decimals).\n * USDC cost = qtAmount * price / 1e9.\n */\n async buy(\n presalePda: PublicKey,\n qtAmount: anchor.BN,\n buyer: PublicKey = this.walletPubkey,\n payer: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const presale = await this.fetchPresale(presalePda);\n if (!presale) throw new Error(`Presale not found: ${presalePda.toBase58()}`);\n\n const qtMint = presale.qtMint;\n const currencyMint = presale.currencyMint;\n const qtAuthority = this.qtAuthorityPda(presalePda);\n const userBuyRecord = this.userBuyRecordPda(presalePda, buyer);\n\n const buyerQtAta = getAssociatedTokenAddressSync(qtMint, buyer);\n const buyerCurrencyAta = getAssociatedTokenAddressSync(currencyMint, buyer);\n const presaleVault = getAssociatedTokenAddressSync(currencyMint, presalePda, true);\n\n return this.program.methods\n .buy(qtAmount)\n .accounts({\n buyer,\n payer,\n presale: presalePda,\n qtMint,\n qtAuthority,\n buyerQtAta,\n buyerCurrencyAta,\n presaleVault,\n currencyMint,\n userBuyRecord,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n /**\n * Refund: burn user's MST and return USDC.\n * Only callable when presale status = Rejected.\n */\n async refund(\n presalePda: PublicKey,\n user: PublicKey = this.walletPubkey,\n payer: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const presale = await this.fetchPresale(presalePda);\n if (!presale) throw new Error(`Presale not found: ${presalePda.toBase58()}`);\n\n const qtMint = presale.qtMint;\n const currencyMint = presale.currencyMint;\n const userBuyRecord = this.userBuyRecordPda(presalePda, user);\n\n const userQtAta = getAssociatedTokenAddressSync(qtMint, user);\n const userCurrencyAta = getAssociatedTokenAddressSync(currencyMint, user);\n const presaleVault = getAssociatedTokenAddressSync(currencyMint, presalePda, true);\n\n const tx = await this.program.methods\n .refund()\n .accounts({\n user,\n payer,\n presale: presalePda,\n qtMint,\n userQtAta,\n userCurrencyAta,\n presaleVault,\n currencyMint,\n userBuyRecord,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n tx.feePayer = payer;\n return tx;\n }\n\n // ─── Queries ─────────────────────────────────────────────────────────────────\n\n async fetchPresale(presalePda: PublicKey): Promise<PresaleInfo | null> {\n try {\n const acc = await (this.program.account as any).presaleAccount.fetch(presalePda);\n const rawStatus = acc.status;\n const status: PresaleInfo[\"status\"] =\n rawStatus.approved !== undefined ? \"approved\" :\n rawStatus.rejected !== undefined ? \"rejected\" : \"pending\";\n return {\n version: acc.version,\n questionMarketConfig: acc.questionMarketConfig,\n presaleIndex: acc.presaleIndex,\n creator: acc.creator,\n currencyMint: acc.currencyMint,\n qtMint: acc.qtMint,\n price: acc.price,\n startTime: acc.startTime,\n endTime: acc.endTime,\n status,\n soldTokenAmount: acc.soldTokenAmount,\n initialTokenAmountCreator: acc.initialTokenAmountCreator,\n agentsRev: acc.agentsRev,\n companyRev: acc.companyRev,\n referralAddress: acc.referralAddress,\n companyAddress: acc.companyAddress,\n isDistributeRevenue: acc.isDistributeRevenue,\n creatorClaimableRevenue: acc.creatorClaimableRevenue,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchUserBuyRecord(presalePda: PublicKey, user: PublicKey): Promise<UserBuyRecord | null> {\n try {\n const pda = this.userBuyRecordPda(presalePda, user);\n const acc = await (this.program.account as any).userBuyRecord.fetch(pda);\n return {\n user: acc.user,\n presale: acc.presale,\n currencyAmount: acc.currencyAmount,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n}\n","import * as anchor from \"@coral-xyz/anchor\";\nimport { PublicKey, SystemProgram, Transaction } from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n} from \"@solana/spl-token\";\nimport { PDA } from \"../pda\";\nimport { ProgramIds } from \"../config/networks\";\n\nexport interface MarketOracleInfo {\n version: number;\n question: PublicKey;\n questionMarketConfig: PublicKey;\n currencyMint: PublicKey;\n creator: PublicKey;\n qtMint: PublicKey;\n feesDistributed: boolean;\n qtTotalSupply: anchor.BN;\n totalClaimed: anchor.BN;\n bump: number;\n}\n\nexport interface UserClaimRecord {\n user: PublicKey;\n marketOracle: PublicKey;\n hasClaimed: boolean;\n bump: number;\n}\n\nexport class MarketOracleClient {\n private readonly program: anchor.Program;\n private readonly provider: anchor.AnchorProvider;\n private readonly programIds: ProgramIds;\n\n constructor(\n program: anchor.Program,\n provider: anchor.AnchorProvider,\n programIds: ProgramIds,\n ) {\n this.program = program;\n this.provider = provider;\n this.programIds = programIds;\n }\n\n get walletPubkey(): PublicKey {\n return this.provider.wallet.publicKey;\n }\n\n marketOraclePda(questionPda: PublicKey): PublicKey {\n return PDA.marketOraclePda(questionPda, this.programIds)[0];\n }\n\n userClaimRecordPda(marketOraclePda: PublicKey, user: PublicKey): PublicKey {\n return PDA.userClaimRecord(marketOraclePda, user, this.programIds)[0];\n }\n\n /**\n * User burns their MST and claims proportional share of oracle vault USDC.\n * Call after market.collectTradingFee snapshotted qt supply.\n */\n async claimFeesShare(\n marketOraclePda: PublicKey,\n user: PublicKey = this.walletPubkey,\n payer: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const oracle = await this.fetchMarketOracle(marketOraclePda);\n if (!oracle) throw new Error(`MarketOracle not found: ${marketOraclePda.toBase58()}`);\n\n const currencyMint = oracle.currencyMint;\n const qtMint = oracle.qtMint;\n const marketOracleVault = getAssociatedTokenAddressSync(currencyMint, marketOraclePda, true);\n const userQtAta = getAssociatedTokenAddressSync(qtMint, user);\n const userCurrencyAta = getAssociatedTokenAddressSync(currencyMint, user);\n const userClaimRecord = this.userClaimRecordPda(marketOraclePda, user);\n\n return this.program.methods\n .claimFeesShare()\n .accounts({\n user,\n payer,\n marketOracle: marketOraclePda,\n marketOracleVault,\n currencyMint,\n qtMint,\n userQtAta,\n userCurrencyAta,\n userClaimRecord,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n // ─── Queries ─────────────────────────────────────────────────────────────────\n\n async fetchMarketOracle(marketOraclePda: PublicKey): Promise<MarketOracleInfo | null> {\n try {\n const acc = await (this.program.account as any).marketOracleAccount.fetch(marketOraclePda);\n return {\n version: acc.version,\n question: acc.question,\n questionMarketConfig: acc.questionMarketConfig,\n currencyMint: acc.currencyMint,\n creator: acc.creator,\n qtMint: acc.qtMint,\n feesDistributed: acc.feesDistributed,\n qtTotalSupply: acc.qtTotalSupply,\n totalClaimed: acc.totalClaimed,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchUserClaimRecord(marketOraclePda: PublicKey, user: PublicKey): Promise<UserClaimRecord | null> {\n try {\n const pda = this.userClaimRecordPda(marketOraclePda, user);\n const acc = await (this.program.account as any).userClaimRecord.fetch(pda);\n return {\n user: acc.user,\n marketOracle: acc.marketOracle,\n hasClaimed: acc.hasClaimed,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n}\n","import * as anchor from \"@coral-xyz/anchor\";\nimport { PublicKey, SystemProgram, Transaction } from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n} from \"@solana/spl-token\";\nimport { PDA } from \"../pda\";\nimport { ProgramIds } from \"../config/networks\";\n\nexport interface AdminConfigInfo {\n version: number;\n owner: PublicKey;\n collateralMint: PublicKey;\n authorizedCaller: PublicKey;\n adminWhitelist: PublicKey[];\n whitelist: PublicKey[];\n bump: number;\n}\n\nexport interface ClaimRecordInfo {\n conditionId: number[];\n amount: anchor.BN;\n bump: number;\n}\n\nexport class AdminClient {\n private readonly program: anchor.Program;\n private readonly provider: anchor.AnchorProvider;\n private readonly programIds: ProgramIds;\n\n constructor(\n program: anchor.Program,\n provider: anchor.AnchorProvider,\n programIds: ProgramIds,\n ) {\n this.program = program;\n this.provider = provider;\n this.programIds = programIds;\n }\n\n get walletPubkey(): PublicKey {\n return this.provider.wallet.publicKey;\n }\n\n get configPda(): PublicKey {\n const [pda] = PDA.adminConfig(this.walletPubkey, this.programIds);\n return pda;\n }\n\n configPdaFor(owner: PublicKey): PublicKey {\n const [pda] = PDA.adminConfig(owner, this.programIds);\n return pda;\n }\n\n adminVault(owner: PublicKey, collateralMint: PublicKey): PublicKey {\n const configPda = this.configPdaFor(owner);\n return getAssociatedTokenAddressSync(collateralMint, configPda, true);\n }\n\n // ─── Fetch ────────────────────────────────────────────────────────────────\n\n async fetchConfig(owner = this.walletPubkey): Promise<AdminConfigInfo | null> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n try {\n const acc = await (this.program.account as any).adminConfig.fetch(configPda);\n return {\n version: acc.version,\n owner: acc.owner,\n collateralMint: acc.collateralMint,\n authorizedCaller: acc.authorizedCaller,\n adminWhitelist: acc.adminWhitelist.slice(0, acc.adminWhitelistLen),\n whitelist: acc.whitelist.slice(0, acc.whitelistLen),\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchClaimRecord(conditionId: Uint8Array): Promise<ClaimRecordInfo | null> {\n const [pda] = PDA.claimRecord(conditionId, this.programIds);\n try {\n const acc = await (this.program.account as any).claimRecord.fetch(pda);\n return {\n conditionId: acc.conditionId,\n amount: acc.amount,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n // ─── Instructions ─────────────────────────────────────────────────────────\n\n async initialize(\n authorizedCaller: PublicKey,\n collateralMint: PublicKey,\n owner: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n const vault = getAssociatedTokenAddressSync(collateralMint, configPda, true);\n\n return this.program.methods\n .initialize(authorizedCaller)\n .accounts({\n owner,\n config: configPda,\n collateralMint,\n adminVault: vault,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n async addAdmin(\n address: PublicKey,\n owner: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n return this.program.methods\n .addAdmin(address)\n .accounts({ owner, config: configPda })\n .transaction();\n }\n\n async removeAdmin(\n address: PublicKey,\n owner: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n return this.program.methods\n .removeAdmin(address)\n .accounts({ owner, config: configPda })\n .transaction();\n }\n\n async addToWhitelist(\n address: PublicKey,\n owner: PublicKey,\n admin: PublicKey = this.walletPubkey,\n payer: PublicKey = admin,\n ): Promise<Transaction> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n return this.program.methods\n .addToWhitelist(address)\n .accounts({ admin, payer, config: configPda })\n .transaction();\n }\n\n async removeFromWhitelist(\n address: PublicKey,\n owner: PublicKey,\n admin: PublicKey = this.walletPubkey,\n payer: PublicKey = admin,\n ): Promise<Transaction> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n return this.program.methods\n .removeFromWhitelist(address)\n .accounts({ admin, payer, config: configPda })\n .transaction();\n }\n\n /**\n * Normally called via CPI from question_market (authorized_caller signs).\n * For testing: initialize with authorizedCaller = wallet, call directly.\n */\n async setPresaleAmount(\n conditionId: Uint8Array,\n amount: anchor.BN,\n owner: PublicKey = this.walletPubkey,\n caller: PublicKey = this.walletPubkey,\n payer: PublicKey = caller,\n ): Promise<Transaction> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n const [claimRecord] = PDA.claimRecord(conditionId, this.programIds);\n return this.program.methods\n .setPresaleAmount(Array.from(conditionId), amount)\n .accounts({\n caller,\n payer,\n config: configPda,\n claimRecord,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n async claim(\n conditionId: Uint8Array,\n collateralMint: PublicKey,\n owner: PublicKey,\n claimer: PublicKey = this.walletPubkey,\n payer: PublicKey = claimer,\n ): Promise<Transaction> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n const [claimRecord] = PDA.claimRecord(conditionId, this.programIds);\n const vault = getAssociatedTokenAddressSync(collateralMint, configPda, true);\n const claimerAta = getAssociatedTokenAddressSync(collateralMint, claimer);\n\n return this.program.methods\n .claim(Array.from(conditionId))\n .accounts({\n claimer,\n payer,\n config: configPda,\n adminVault: vault,\n claimRecord,\n claimerTokenAccount: claimerAta,\n tokenProgram: TOKEN_PROGRAM_ID,\n })\n .transaction();\n }\n\n async updateConfig(\n authorizedCaller: PublicKey,\n owner: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n return this.program.methods\n .updateConfig(authorizedCaller)\n .accounts({ owner, config: configPda })\n .transaction();\n }\n\n /**\n * BOTMM sends USDC from their wallet to the market_oracle vault for a condition.\n * Whitelist-only. No amount validation — caller responsible.\n */\n async distributeMarket(\n conditionId: Uint8Array,\n amount: anchor.BN,\n collateralMint: PublicKey,\n marketOracleVault: PublicKey,\n owner: PublicKey,\n claimer: PublicKey = this.walletPubkey,\n payer: PublicKey = claimer,\n ): Promise<Transaction> {\n const [configPda] = PDA.adminConfig(owner, this.programIds);\n const claimerTokenAcct = getAssociatedTokenAddressSync(collateralMint, claimer);\n\n return this.program.methods\n .distributeMarket(Array.from(conditionId), amount)\n .accounts({\n claimer,\n payer,\n config: configPda,\n claimerTokenAccount: claimerTokenAcct,\n marketOracleVault,\n tokenProgram: TOKEN_PROGRAM_ID,\n })\n .transaction();\n }\n}\n","{\n \"address\": \"FzLnnbKtQCTKviEbrDYMLZYXNDHQdjSSa4Ybj4jAbrUL\",\n \"metadata\": {\n \"name\": \"oracle\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Oracle program for XMarket prediction platform\"\n },\n \"instructions\": [\n {\n \"name\": \"add_to_whitelist\",\n \"docs\": [\n \"Add an address to the oracle resolver whitelist (admin/owner only)\"\n ],\n \"discriminator\": [\n 157,\n 211,\n 52,\n 54,\n 144,\n 81,\n 5,\n 55\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"oracle_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"oracle_config.owner\",\n \"account\": \"OracleConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"initialize\",\n \"docs\": [\n \"Initialize a new Oracle configuration. Caller becomes owner and is auto-whitelisted.\"\n ],\n \"discriminator\": [\n 175,\n 175,\n 109,\n 31,\n 13,\n 152,\n 155,\n 237\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"oracle_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"admin\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"pause\",\n \"docs\": [\n \"Pause or unpause the oracle (admin/owner only)\"\n ],\n \"discriminator\": [\n 211,\n 22,\n 221,\n 251,\n 74,\n 121,\n 193,\n 47\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Admin or owner who can pause\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"oracle_config\",\n \"docs\": [\n \"The oracle configuration\"\n ],\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"paused\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"remove_from_whitelist\",\n \"docs\": [\n \"Remove an address from the oracle resolver whitelist (admin/owner only)\"\n ],\n \"discriminator\": [\n 7,\n 144,\n 216,\n 239,\n 243,\n 236,\n 193,\n 235\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"oracle_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"oracle_config.owner\",\n \"account\": \"OracleConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"resolve_question\",\n \"docs\": [\n \"Resolve a question — whitelisted address only.\",\n \"Stores QuestionResult PDA and CPIs to CTF.set_payout in one transaction.\"\n ],\n \"discriminator\": [\n 52,\n 32,\n 224,\n 179,\n 180,\n 8,\n 0,\n 246\n ],\n \"accounts\": [\n {\n \"name\": \"reporter\",\n \"docs\": [\n \"Whitelisted address that submits the resolution\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"oracle_config\",\n \"docs\": [\n \"Oracle configuration\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"oracle_config.owner\",\n \"account\": \"OracleConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"question_result\",\n \"docs\": [\n \"QuestionResult PDA — seeds: [result, oracle_config, question_id]\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 115,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"oracle_config\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"question_id\"\n }\n ]\n }\n },\n {\n \"name\": \"condition\",\n \"docs\": [\n \"Condition PDA in CTF — seeds: [condition, oracle_config, question_id] (CTF program)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 100,\n 105,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"oracle_config\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"question_id\"\n }\n ],\n \"program\": {\n \"kind\": \"account\",\n \"path\": \"conditional_tokens_program\"\n }\n }\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"docs\": [\n \"ConditionalTokens program\"\n ]\n },\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Payer for QuestionResult account creation\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"outcome_count\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"payout_numerators\",\n \"type\": {\n \"vec\": \"u64\"\n }\n }\n ]\n },\n {\n \"name\": \"transfer_ownership\",\n \"docs\": [\n \"Transfer ownership of the oracle to a new owner\"\n ],\n \"discriminator\": [\n 65,\n 177,\n 215,\n 73,\n 53,\n 45,\n 99,\n 47\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"docs\": [\n \"Current owner\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"oracle_config\",\n \"docs\": [\n \"The oracle configuration\"\n ],\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"new_owner\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"update_admin\",\n \"docs\": [\n \"Update the admin of the oracle (owner only)\"\n ],\n \"discriminator\": [\n 161,\n 176,\n 40,\n 213,\n 60,\n 184,\n 179,\n 228\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"docs\": [\n \"Current owner (only owner can change admin)\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"oracle_config\",\n \"docs\": [\n \"The oracle configuration\"\n ],\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"OracleConfig\",\n \"discriminator\": [\n 133,\n 196,\n 152,\n 50,\n 27,\n 21,\n 145,\n 254\n ]\n },\n {\n \"name\": \"QuestionResult\",\n \"discriminator\": [\n 247,\n 234,\n 174,\n 245,\n 224,\n 25,\n 254,\n 226\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"WhitelistUpdated\",\n \"discriminator\": [\n 205,\n 110,\n 205,\n 193,\n 238,\n 237,\n 220,\n 22\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"OracleConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_count\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 10\n ]\n }\n },\n {\n \"name\": \"whitelist_len\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"is_paused\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"QuestionResult\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"oracle_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"outcome_index\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"outcome_count\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"payout_numerators\",\n \"docs\": [\n \"Fixed-size payout array. Only [0..outcome_count] slots are meaningful.\"\n ],\n \"type\": {\n \"array\": [\n \"u64\",\n 8\n ]\n }\n },\n {\n \"name\": \"is_resolved\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"resolved_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"reporter\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"WhitelistUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"oracle_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"added\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"updated_by\",\n \"type\": \"pubkey\"\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"F7y5MfW8d5kqR25QHDhUQ9LrKCiZUZVF6Pdnw15q5zZW\",\n \"metadata\": {\n \"name\": \"hook\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Transfer Hook program for YES/NO Token-2022 prediction market mints\"\n },\n \"instructions\": [\n {\n \"name\": \"add_to_whitelist\",\n \"docs\": [\n \"Add a program to the transfer whitelist.\"\n ],\n \"discriminator\": [\n 157,\n 211,\n 52,\n 54,\n 144,\n 81,\n 5,\n 55\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"hook_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 104,\n 111,\n 111,\n 107,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"program\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"execute\",\n \"docs\": [\n \"Transfer hook execute — invoked by Token-2022 on every YES/NO transfer.\",\n \"Validates the transfer against the whitelist.\",\n \"Discriminator matches the SPL transfer-hook-interface:execute standard.\"\n ],\n \"discriminator\": [\n 105,\n 37,\n 101,\n 197,\n 75,\n 251,\n 102,\n 26\n ],\n \"accounts\": [\n {\n \"name\": \"source_token\",\n \"docs\": [\n \"Source token account (tokens leaving)\"\n ]\n },\n {\n \"name\": \"mint\",\n \"docs\": [\n \"The Token-2022 mint\"\n ]\n },\n {\n \"name\": \"destination_token\",\n \"docs\": [\n \"Destination token account (tokens arriving)\"\n ]\n },\n {\n \"name\": \"owner\",\n \"docs\": [\n \"The authority that authorized this transfer (signer of the transfer)\"\n ]\n },\n {\n \"name\": \"extra_account_meta_list\"\n },\n {\n \"name\": \"hook_config\",\n \"docs\": [\n \"HookConfig — extra account registered in the meta list\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 104,\n 111,\n 111,\n 107,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"freeze_whitelist\",\n \"docs\": [\n \"Permanently freeze the whitelist.\"\n ],\n \"discriminator\": [\n 248,\n 112,\n 12,\n 150,\n 175,\n 238,\n 38,\n 184\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"hook_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 104,\n 111,\n 111,\n 107,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"initialize_extra_account_meta_list\",\n \"docs\": [\n \"Register extra account metas for a specific YES or NO mint.\",\n \"Must be called for each mint after it is created by CTF.prepare_condition.\"\n ],\n \"discriminator\": [\n 92,\n 197,\n 174,\n 197,\n 41,\n 124,\n 19,\n 3\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"extra_account_meta_list\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 101,\n 120,\n 116,\n 114,\n 97,\n 45,\n 97,\n 99,\n 99,\n 111,\n 117,\n 110,\n 116,\n 45,\n 109,\n 101,\n 116,\n 97,\n 115\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"mint\"\n }\n ]\n }\n },\n {\n \"name\": \"mint\",\n \"docs\": [\n \"The Token-2022 mint this hook applies to (YES or NO mint)\"\n ]\n },\n {\n \"name\": \"hook_config\",\n \"docs\": [\n \"HookConfig — needed as extra account during execute\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 104,\n 111,\n 111,\n 107,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"initialize_hook_config\",\n \"docs\": [\n \"Initialize the global hook config with an initial whitelist.\",\n \"Called once by admin after deployment.\"\n ],\n \"discriminator\": [\n 144,\n 239,\n 17,\n 85,\n 228,\n 48,\n 54,\n 43\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"hook_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 104,\n 111,\n 111,\n 107,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"initial_whitelist\",\n \"type\": {\n \"vec\": \"pubkey\"\n }\n }\n ]\n },\n {\n \"name\": \"remove_from_whitelist\",\n \"docs\": [\n \"Remove a program from the transfer whitelist.\"\n ],\n \"discriminator\": [\n 7,\n 144,\n 216,\n 239,\n 243,\n 236,\n 193,\n 235\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"hook_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 104,\n 111,\n 111,\n 107,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"program\",\n \"type\": \"pubkey\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"HookConfig\",\n \"discriminator\": [\n 137,\n 155,\n 101,\n 95,\n 138,\n 72,\n 8,\n 182\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"HookConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 10\n ]\n }\n },\n {\n \"name\": \"whitelist_len\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"is_frozen\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"FCvCbWoLpzNYKzQnXYXCo1yz9DTpgUs11QqHVqnqtWhA\",\n \"metadata\": {\n \"name\": \"question_market\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Question Market program for XMarket prediction platform\"\n },\n \"instructions\": [\n {\n \"name\": \"add_admin\",\n \"discriminator\": [\n 177,\n 236,\n 33,\n 205,\n 124,\n 152,\n 55,\n 186\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"add_to_whitelist\",\n \"discriminator\": [\n 157,\n 211,\n 52,\n 54,\n 144,\n 81,\n 5,\n 55\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"approve_presale\",\n \"discriminator\": [\n 145,\n 218,\n 42,\n 231,\n 144,\n 81,\n 103,\n 34\n ],\n \"accounts\": [\n {\n \"name\": \"caller\",\n \"docs\": [\n \"Whitelisted caller\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"presale\",\n \"docs\": [\n \"Presale PDA (mut — will be approved)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"question\",\n \"docs\": [\n \"Question PDA — seeds use presale.key() as question_id\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 117,\n 101,\n 115,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n }\n ]\n }\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"oracle\"\n },\n {\n \"name\": \"condition\",\n \"writable\": true\n },\n {\n \"name\": \"yes_mint\",\n \"writable\": true\n },\n {\n \"name\": \"no_mint\",\n \"writable\": true\n },\n {\n \"name\": \"mint_authority\",\n \"writable\": true\n },\n {\n \"name\": \"collateral_vault\",\n \"writable\": true\n },\n {\n \"name\": \"market_oracle\",\n \"docs\": [\n \"Market oracle PDA (init'd by market-oracle CPI)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 97,\n 114,\n 107,\n 101,\n 116,\n 95,\n 111,\n 114,\n 97,\n 99,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"question\"\n }\n ],\n \"program\": {\n \"kind\": \"account\",\n \"path\": \"market_oracle_program\"\n }\n }\n },\n {\n \"name\": \"market_oracle_vault\",\n \"docs\": [\n \"Market oracle USDC vault (ATA of market_oracle PDA)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"presale_vault\",\n \"writable\": true\n },\n {\n \"name\": \"referral_token_account\",\n \"docs\": [\n \"Referral address USDC ATA (receives agents_fee 10%)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"company_token_account\",\n \"docs\": [\n \"Company address USDC ATA (receives company_fee 10%)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"admin_vault\",\n \"docs\": [\n \"admin_contract vault ATA (receives botmm_revenue 80%)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"admin_config\",\n \"docs\": [\n \"admin_contract config PDA (seeds=[ADMIN_CONFIG_SEED, owner] — validated by admin_contract CPI)\"\n ]\n },\n {\n \"name\": \"claim_record\",\n \"docs\": [\n \"ClaimRecord PDA for this presale's conditionId (seeds=[CLAIM_RECORD_SEED, condition_id])\",\n \"condition_id computed inside handler — seeds validated by admin_contract CPI\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"conditional_tokens_program\"\n },\n {\n \"name\": \"question_fee\",\n \"docs\": [\n \"QuestionFee PDA — initialized with default fees via CPI to fee-management\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"fee_management_program\",\n \"address\": \"DuYyXguB5PVSKg6E2p4XPrrXZSCJnuBhoGpkGCBN5bBb\"\n },\n {\n \"name\": \"presale_program\",\n \"address\": \"2Rnw1VoEtsUMQ7wkvYZjDehqSqRob6uNkeymDfvKrquB\"\n },\n {\n \"name\": \"market_oracle_program\",\n \"address\": \"ADWF4J3nCJ2kWnCtycuem2jhu7amUqJWQG3oa5xF67QJ\"\n },\n {\n \"name\": \"admin_program\",\n \"address\": \"4NdD5962SfGqofmeyjfifJpdGnwTAiKaUKB5Z42UDc9T\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"token_2022_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"rent\",\n \"address\": \"SysvarRent111111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"ApprovePresaleParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"approve_question\",\n \"discriminator\": [\n 54,\n 149,\n 87,\n 172,\n 67,\n 162,\n 36,\n 108\n ],\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"docs\": [\n \"Admin approving the market\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"docs\": [\n \"Question Market config\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"question\",\n \"docs\": [\n \"Question to approve (must have condition already set)\"\n ],\n \"writable\": true\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"collect_presale_revenue\",\n \"discriminator\": [\n 44,\n 142,\n 67,\n 185,\n 225,\n 110,\n 206,\n 57\n ],\n \"accounts\": [\n {\n \"name\": \"caller\",\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"presale\",\n \"writable\": true\n },\n {\n \"name\": \"presale_vault\",\n \"docs\": [\n \"Presale USDC vault — read balance before CPI, closed inside presale program\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"referral_token_account\",\n \"docs\": [\n \"Referral address USDC token account (10%)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"company_token_account\",\n \"docs\": [\n \"Company address USDC token account (10%)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"admin_vault\",\n \"docs\": [\n \"admin_contract vault ATA — receives 80% instead of BOTMM wallet directly\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"admin_config\",\n \"docs\": [\n \"admin_contract config PDA\"\n ]\n },\n {\n \"name\": \"claim_record\",\n \"docs\": [\n \"ClaimRecord PDA for this conditionId (created by admin_contract CPI)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 97,\n 105,\n 109,\n 95,\n 114,\n 101,\n 99,\n 111,\n 114,\n 100\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ],\n \"program\": {\n \"kind\": \"account\",\n \"path\": \"admin_program\"\n }\n }\n },\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Receives lamports from closed presale_vault + presale PDA\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"presale_program\",\n \"address\": \"2Rnw1VoEtsUMQ7wkvYZjDehqSqRob6uNkeymDfvKrquB\"\n },\n {\n \"name\": \"admin_program\",\n \"address\": \"4NdD5962SfGqofmeyjfifJpdGnwTAiKaUKB5Z42UDc9T\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"collect_trading_fee\",\n \"discriminator\": [\n 97,\n 106,\n 99,\n 150,\n 151,\n 221,\n 180,\n 217\n ],\n \"accounts\": [\n {\n \"name\": \"caller\",\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"market_oracle\",\n \"docs\": [\n \"Market oracle PDA\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"qt_mint\",\n \"docs\": [\n \"QT (MST) mint — supply snapshot taken by market-oracle\"\n ]\n },\n {\n \"name\": \"market_oracle_program\",\n \"address\": \"ADWF4J3nCJ2kWnCtycuem2jhu7amUqJWQG3oa5xF67QJ\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"create_presale\",\n \"discriminator\": [\n 176,\n 144,\n 197,\n 158,\n 61,\n 119,\n 75,\n 135\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"docs\": [\n \"Creator of the presale\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"fee_config\",\n \"docs\": [\n \"Fee config from fee-management program — reads presale rev percentages\"\n ]\n },\n {\n \"name\": \"presale\",\n \"docs\": [\n \"Presale PDA (created via CPI to presale program)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 101,\n 115,\n 97,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.presale_count\",\n \"account\": \"QuestionMarketConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"account\",\n \"path\": \"presale_program\"\n }\n }\n },\n {\n \"name\": \"qt_mint\",\n \"docs\": [\n \"MST (QT) mint PDA\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 116,\n 95,\n 109,\n 105,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n }\n ],\n \"program\": {\n \"kind\": \"account\",\n \"path\": \"presale_program\"\n }\n }\n },\n {\n \"name\": \"qt_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n }\n ],\n \"program\": {\n \"kind\": \"account\",\n \"path\": \"presale_program\"\n }\n }\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"presale_vault\",\n \"docs\": [\n \"Presale USDC vault (ATA of presale PDA, created via CPI)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"creator_currency_ata\",\n \"docs\": [\n \"Creator's USDC token account — USDC pulled from here\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"creator_qt_ata\",\n \"docs\": [\n \"Creator's MST token account (created via CPI)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"user_buy_record\",\n \"docs\": [\n \"User buy record for creator (created via CPI)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 117,\n 115,\n 101,\n 114,\n 95,\n 98,\n 117,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n }\n ],\n \"program\": {\n \"kind\": \"account\",\n \"path\": \"presale_program\"\n }\n }\n },\n {\n \"name\": \"qt_metadata\",\n \"writable\": true\n },\n {\n \"name\": \"token_metadata_program\"\n },\n {\n \"name\": \"presale_program\",\n \"address\": \"2Rnw1VoEtsUMQ7wkvYZjDehqSqRob6uNkeymDfvKrquB\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"rent\",\n \"address\": \"SysvarRent111111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"CreatePresaleParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"create_question_admin\",\n \"discriminator\": [\n 166,\n 168,\n 104,\n 144,\n 72,\n 150,\n 213,\n 4\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"docs\": [\n \"Whitelisted creator — also pays rent\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"question\",\n \"writable\": true\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"oracle\"\n },\n {\n \"name\": \"condition\",\n \"writable\": true\n },\n {\n \"name\": \"yes_mint\",\n \"writable\": true\n },\n {\n \"name\": \"no_mint\",\n \"writable\": true\n },\n {\n \"name\": \"mint_authority\",\n \"writable\": true\n },\n {\n \"name\": \"collateral_vault\",\n \"writable\": true\n },\n {\n \"name\": \"conditional_tokens_program\"\n },\n {\n \"name\": \"question_fee\",\n \"docs\": [\n \"QuestionFee PDA — initialized with default fees via CPI to fee-management.\",\n \"Seed uses condition.key() bytes (consistent with existing set_question_fee SDK convention).\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 117,\n 101,\n 115,\n 116,\n 105,\n 111,\n 110,\n 95,\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"condition\"\n }\n ],\n \"program\": {\n \"kind\": \"account\",\n \"path\": \"fee_management_program\"\n }\n }\n },\n {\n \"name\": \"fee_management_program\",\n \"address\": \"DuYyXguB5PVSKg6E2p4XPrrXZSCJnuBhoGpkGCBN5bBb\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"rent\",\n \"address\": \"SysvarRent111111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"CreateQuestionAdminParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"grow_config\",\n \"discriminator\": [\n 190,\n 5,\n 0,\n 130,\n 65,\n 253,\n 94,\n 228\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"initialize\",\n \"discriminator\": [\n 175,\n 175,\n 109,\n 31,\n 13,\n 152,\n 155,\n 237\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"docs\": [\n \"Owner initializing the config\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"docs\": [\n \"The config account (PDA)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"InitializeParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"reject_presale\",\n \"discriminator\": [\n 151,\n 57,\n 254,\n 126,\n 97,\n 26,\n 242,\n 106\n ],\n \"accounts\": [\n {\n \"name\": \"caller\",\n \"docs\": [\n \"Whitelisted caller\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"presale\",\n \"docs\": [\n \"Presale PDA (rejected via CPI)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"presale_program\",\n \"address\": \"2Rnw1VoEtsUMQ7wkvYZjDehqSqRob6uNkeymDfvKrquB\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"remove_admin\",\n \"discriminator\": [\n 74,\n 202,\n 71,\n 106,\n 252,\n 31,\n 72,\n 183\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"remove_from_whitelist\",\n \"discriminator\": [\n 7,\n 144,\n 216,\n 239,\n 243,\n 236,\n 193,\n 235\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"resolve_question\",\n \"discriminator\": [\n 52,\n 32,\n 224,\n 179,\n 180,\n 8,\n 0,\n 246\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Payer for any required fees\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"docs\": [\n \"QuestionMarket config\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"question\",\n \"docs\": [\n \"The question to resolve\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 117,\n 101,\n 115,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"question_id\"\n }\n ]\n }\n },\n {\n \"name\": \"question_result\",\n \"docs\": [\n \"Oracle QuestionResult PDA — proves the oracle has resolved\",\n \"seeds: [b\\\"result\\\", oracle_config, question_id]\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 115,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.oracle\",\n \"account\": \"QuestionMarketConfig\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"question_id\"\n }\n ],\n \"program\": {\n \"kind\": \"account\",\n \"path\": \"oracle_program\"\n }\n }\n },\n {\n \"name\": \"condition\",\n \"docs\": [\n \"The Condition account in CTF (will be updated via CPI)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"ctf_program\",\n \"docs\": [\n \"CTF program (for set_payout CPI)\"\n ]\n },\n {\n \"name\": \"oracle_program\",\n \"docs\": [\n \"Oracle program (for reading QuestionResult)\"\n ]\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"restore_config\",\n \"discriminator\": [\n 95,\n 203,\n 226,\n 92,\n 60,\n 222,\n 192,\n 221\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"snapshot\",\n \"type\": \"bytes\"\n }\n ]\n },\n {\n \"name\": \"update_config\",\n \"discriminator\": [\n 29,\n 158,\n 252,\n 191,\n 10,\n 83,\n 219,\n 99\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Authority making the update (owner for ownership transfer, admin/owner for other updates)\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"docs\": [\n \"Question Market config\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"UpdateConfigParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"update_question_status\",\n \"discriminator\": [\n 237,\n 171,\n 179,\n 4,\n 161,\n 20,\n 61,\n 18\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Authority making the status update (admin for reject, oracle for resolve)\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"docs\": [\n \"Question Market config\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"QuestionMarketConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"question\",\n \"docs\": [\n \"Question to update\"\n ],\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"update_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"StatusUpdateType\"\n }\n }\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"Question\",\n \"discriminator\": [\n 111,\n 22,\n 150,\n 220,\n 181,\n 122,\n 118,\n 127\n ]\n },\n {\n \"name\": \"QuestionMarketConfig\",\n \"discriminator\": [\n 45,\n 242,\n 195,\n 220,\n 120,\n 252,\n 74,\n 213\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"ConfigUpdated\",\n \"discriminator\": [\n 40,\n 241,\n 230,\n 122,\n 11,\n 19,\n 198,\n 194\n ]\n },\n {\n \"name\": \"MarketApproved\",\n \"discriminator\": [\n 213,\n 222,\n 68,\n 97,\n 16,\n 1,\n 31,\n 38\n ]\n },\n {\n \"name\": \"PresaleApprovedAndMarketCreated\",\n \"discriminator\": [\n 207,\n 179,\n 63,\n 110,\n 178,\n 224,\n 134,\n 237\n ]\n },\n {\n \"name\": \"PresaleCreated\",\n \"discriminator\": [\n 22,\n 188,\n 215,\n 56,\n 113,\n 251,\n 168,\n 248\n ]\n },\n {\n \"name\": \"PresaleRejected\",\n \"discriminator\": [\n 141,\n 151,\n 157,\n 127,\n 100,\n 182,\n 63,\n 52\n ]\n },\n {\n \"name\": \"QuestionAdminCreated\",\n \"discriminator\": [\n 55,\n 250,\n 212,\n 57,\n 174,\n 201,\n 226,\n 158\n ]\n },\n {\n \"name\": \"QuestionApproved\",\n \"discriminator\": [\n 252,\n 132,\n 245,\n 66,\n 7,\n 1,\n 41,\n 211\n ]\n },\n {\n \"name\": \"QuestionCreated\",\n \"discriminator\": [\n 34,\n 127,\n 167,\n 217,\n 216,\n 141,\n 151,\n 205\n ]\n },\n {\n \"name\": \"QuestionMarketInitialized\",\n \"discriminator\": [\n 149,\n 192,\n 87,\n 33,\n 81,\n 246,\n 25,\n 59\n ]\n },\n {\n \"name\": \"QuestionResolvedMarket\",\n \"discriminator\": [\n 103,\n 113,\n 100,\n 154,\n 213,\n 211,\n 64,\n 126\n ]\n },\n {\n \"name\": \"QuestionStatusUpdated\",\n \"discriminator\": [\n 38,\n 83,\n 232,\n 103,\n 133,\n 238,\n 55,\n 194\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"ApprovePresaleParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"content_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"hook_program\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authorized_clob\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"expiration_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"ConfigUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"updated_by\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_admin\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"new_oracle\",\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"is_paused\",\n \"type\": {\n \"option\": \"bool\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"CreatePresaleParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"initial_buy_amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"CreateQuestionAdminParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"content_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"hook_program\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authorized_clob\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"expiration_time\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"FeeConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"company_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"referral_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale_revenue_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"investors_market_rev\",\n \"docs\": [\n \"Market revenue split: investors + company (out of FEE_DENOMINATOR = 1_000_000)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_market_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"agents_presale_rev\",\n \"docs\": [\n \"Presale revenue split: agents + company (out of FEE_DENOMINATOR = 1_000_000)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_presale_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 10\n ]\n }\n },\n {\n \"name\": \"whitelist_len\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"InitializeParams\",\n \"docs\": [\n \"Parameters for initializing the Question Market config\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"admin\",\n \"docs\": [\n \"Admin who can approve/reject questions\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"docs\": [\n \"ConditionalTokens program ID for CPI\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"oracle\",\n \"docs\": [\n \"Oracle pubkey that will resolve conditions\"\n ],\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"MarketApproved\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"approved_by\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"approved_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleApprovedAndMarketCreated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"market_oracle\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"market_oracle_vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agents_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"company_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"botmm_revenue\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleCreated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale_index\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"qt_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"currency_mint\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleRejected\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"Question\",\n \"docs\": [\n \"Individual question account\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"docs\": [\n \"Schema version\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"config\",\n \"docs\": [\n \"Reference to the QuestionMarketConfig\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"docs\": [\n \"Unique question identifier (32-byte hash)\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"content_hash\",\n \"docs\": [\n \"Hash of question content (title, description, etc.)\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"outcome_slot_count\",\n \"docs\": [\n \"Number of possible outcomes (2 for binary, up to 255)\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"condition_id\",\n \"docs\": [\n \"Derived condition ID for ConditionalTokens (hash of oracle + question_id)\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"expiration_time\",\n \"docs\": [\n \"Question expiration timestamp (when market closes)\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"currency_mint\",\n \"docs\": [\n \"Currency mint for this question's market (e.g., USDC)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"docs\": [\n \"Creator of the question\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"docs\": [\n \"Linked ConditionalTokens condition (None until approved)\"\n ],\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"status\",\n \"docs\": [\n \"Current status\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"QuestionStatus\"\n }\n }\n },\n {\n \"name\": \"created_at\",\n \"docs\": [\n \"Timestamp when question was created\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"approved_at\",\n \"docs\": [\n \"Timestamp when question was approved (0 if not approved)\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"resolved_at\",\n \"docs\": [\n \"Timestamp when question was resolved (0 if not resolved)\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump seed for PDA derivation\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"docs\": [\n \"Reserved space for future upgrades\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"QuestionAdminCreated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"yes_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"no_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"expiration_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"currency_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"QuestionApproved\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"approved_by\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"approved_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"QuestionCreated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"outcome_slot_count\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"expiration_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"currency_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"QuestionMarketConfig\",\n \"docs\": [\n \"Global configuration for the Question Market program\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"docs\": [\n \"Schema version\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"owner\",\n \"docs\": [\n \"Owner with full control (can transfer ownership)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"admin\",\n \"docs\": [\n \"Admin for day-to-day operations (approve/reject questions)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"docs\": [\n \"ConditionalTokens program ID for CPI\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"oracle\",\n \"docs\": [\n \"Oracle pubkey that will resolve conditions\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_count\",\n \"docs\": [\n \"Total questions created\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"approved_count\",\n \"docs\": [\n \"Total questions approved (became markets)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"rejected_count\",\n \"docs\": [\n \"Total questions rejected\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"whitelist\",\n \"docs\": [\n \"Whitelist of addresses that can create questions and manage presales\"\n ],\n \"type\": {\n \"array\": [\n \"pubkey\",\n 30\n ]\n }\n },\n {\n \"name\": \"whitelist_len\",\n \"docs\": [\n \"Number of entries in whitelist\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"is_paused\",\n \"docs\": [\n \"Whether the program is paused\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump seed for PDA derivation\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"presale_count\",\n \"docs\": [\n \"Total presales created\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"_reserved\",\n \"docs\": [\n \"Reserved space for future upgrades\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 120\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"QuestionMarketInitialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"oracle\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"QuestionResolvedMarket\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"payout_numerators\",\n \"type\": {\n \"vec\": \"u64\"\n }\n },\n {\n \"name\": \"resolved_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"QuestionStatus\",\n \"docs\": [\n \"Status of a question in its lifecycle\"\n ],\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Pending\"\n },\n {\n \"name\": \"Approved\"\n },\n {\n \"name\": \"Rejected\"\n },\n {\n \"name\": \"Resolved\"\n }\n ]\n }\n },\n {\n \"name\": \"QuestionStatusUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"old_status\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"new_status\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"updated_by\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"updated_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"StatusUpdateType\",\n \"docs\": [\n \"Type of status update\"\n ],\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Reject\"\n },\n {\n \"name\": \"MarkResolved\"\n }\n ]\n }\n },\n {\n \"name\": \"UpdateConfigParams\",\n \"docs\": [\n \"Parameters for updating config\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"new_admin\",\n \"docs\": [\n \"New admin (optional)\"\n ],\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"new_oracle\",\n \"docs\": [\n \"New oracle (optional)\"\n ],\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"is_paused\",\n \"docs\": [\n \"Pause/unpause (optional)\"\n ],\n \"type\": {\n \"option\": \"bool\"\n }\n },\n {\n \"name\": \"new_conditional_tokens_program\",\n \"docs\": [\n \"New ConditionalTokens program (optional)\"\n ],\n \"type\": {\n \"option\": \"pubkey\"\n }\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"A6N1F8MRsdgcojAx8p6FaECvw8mo8w6qJcWsbKQBANK4\",\n \"metadata\": {\n \"name\": \"conditional_tokens\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Conditional Tokens program for XMarket prediction platform\"\n },\n \"instructions\": [\n {\n \"name\": \"initialize_vault\",\n \"docs\": [\n \"Initialize a shared collateral vault for a given collateral mint (e.g. USDC).\",\n \"One vault per collateral type, shared across all conditions.\"\n ],\n \"discriminator\": [\n 48,\n 191,\n 163,\n 44,\n 71,\n 129,\n 63,\n 164\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Payer for account creation\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"collateral_mint\",\n \"docs\": [\n \"The collateral token mint (e.g., USDC)\"\n ]\n },\n {\n \"name\": \"collateral_vault\",\n \"docs\": [\n \"The collateral vault state account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 108,\n 108,\n 97,\n 116,\n 101,\n 114,\n 97,\n 108,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_mint\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"docs\": [\n \"The vault token account (holds ALL collateral for this mint type)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116,\n 95,\n 116,\n 111,\n 107,\n 101,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_mint\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"rent\",\n \"address\": \"SysvarRent111111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"merge_position\",\n \"docs\": [\n \"Merge YES + NO tokens back into collateral.\",\n \"User must have equal amounts of both outcome tokens.\"\n ],\n \"discriminator\": [\n 226,\n 29,\n 189,\n 110,\n 130,\n 19,\n 223,\n 219\n ],\n \"accounts\": [\n {\n \"name\": \"user\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Pays tx fee (BE wallet — user wallet needs zero SOL)\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"condition\",\n \"writable\": true\n },\n {\n \"name\": \"collateral_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 108,\n 108,\n 97,\n 116,\n 101,\n 114,\n 97,\n 108,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"condition.collateral_mint\",\n \"account\": \"Condition\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"user_collateral\",\n \"writable\": true\n },\n {\n \"name\": \"yes_mint\",\n \"writable\": true\n },\n {\n \"name\": \"user_yes_ata\",\n \"writable\": true\n },\n {\n \"name\": \"no_mint\",\n \"writable\": true\n },\n {\n \"name\": \"user_no_ata\",\n \"writable\": true\n },\n {\n \"name\": \"yes_position\",\n \"writable\": true\n },\n {\n \"name\": \"no_position\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"token_2022_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"prepare_condition\",\n \"docs\": [\n \"Prepare a new binary condition: creates Condition PDA + YES/NO Token-2022 mints.\",\n \"Called by QuestionMarket via CPI when a question is created.\"\n ],\n \"discriminator\": [\n 245,\n 103,\n 50,\n 34,\n 239,\n 55,\n 114,\n 1\n ],\n \"accounts\": [\n {\n \"name\": \"oracle\",\n \"docs\": [\n \"The oracle config pubkey that will resolve this condition\"\n ]\n },\n {\n \"name\": \"condition\",\n \"docs\": [\n \"Condition PDA — seeds: [CONDITION_SEED, oracle, question_id]\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 110,\n 100,\n 105,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"oracle\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"question_id\"\n }\n ]\n }\n },\n {\n \"name\": \"yes_mint\",\n \"docs\": [\n \"YES Token-2022 mint — deterministic PDA from [YES_MINT_SEED, condition]\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 121,\n 101,\n 115,\n 95,\n 109,\n 105,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"condition\"\n }\n ]\n }\n },\n {\n \"name\": \"no_mint\",\n \"docs\": [\n \"NO Token-2022 mint — deterministic PDA from [NO_MINT_SEED, condition]\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 110,\n 111,\n 95,\n 109,\n 105,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"condition\"\n }\n ]\n }\n },\n {\n \"name\": \"mint_authority\",\n \"docs\": [\n \"Mint authority PDA — signs mint_to / burn during split/merge/redeem\",\n \"seeds: [MINT_AUTHORITY_SEED, condition]\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 105,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"condition\"\n }\n ]\n }\n },\n {\n \"name\": \"collateral_mint\",\n \"docs\": [\n \"Collateral mint (USDC)\"\n ]\n },\n {\n \"name\": \"collateral_vault\",\n \"docs\": [\n \"Shared collateral vault (must be initialized first)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 108,\n 108,\n 97,\n 116,\n 101,\n 114,\n 97,\n 108,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_mint\"\n }\n ]\n }\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"rent\",\n \"address\": \"SysvarRent111111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"hook_program\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authorized_clob\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"redeem_positions\",\n \"docs\": [\n \"Redeem positions after resolution.\",\n \"Burns all outcome tokens; winning token holders receive USDC proportional to payout.\"\n ],\n \"discriminator\": [\n 72,\n 165,\n 213,\n 89,\n 22,\n 234,\n 44,\n 236\n ],\n \"accounts\": [\n {\n \"name\": \"user\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Pays tx fee (BE wallet — user wallet needs zero SOL)\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"condition\",\n \"writable\": true\n },\n {\n \"name\": \"collateral_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 108,\n 108,\n 97,\n 116,\n 101,\n 114,\n 97,\n 108,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"condition.collateral_mint\",\n \"account\": \"Condition\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"user_collateral\",\n \"writable\": true\n },\n {\n \"name\": \"yes_mint\",\n \"writable\": true\n },\n {\n \"name\": \"user_yes_ata\",\n \"writable\": true\n },\n {\n \"name\": \"no_mint\",\n \"writable\": true\n },\n {\n \"name\": \"user_no_ata\",\n \"writable\": true\n },\n {\n \"name\": \"yes_position\",\n \"writable\": true\n },\n {\n \"name\": \"no_position\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"token_2022_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"reinitialize_vault\",\n \"docs\": [\n \"Overwrite corrupt vault data with correct values. Only callable by upgrade authority.\"\n ],\n \"discriminator\": [\n 119,\n 225,\n 89,\n 221,\n 250,\n 227,\n 252,\n 255\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"collateral_mint\"\n },\n {\n \"name\": \"collateral_vault\",\n \"docs\": [\n \"Use canonical bump derivation (no bump = vault.bump) so corrupt bump doesn't block us\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 108,\n 108,\n 97,\n 116,\n 101,\n 114,\n 97,\n 108,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_mint\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"docs\": [\n \"Existing vault token account — just update the reference\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116,\n 95,\n 116,\n 111,\n 107,\n 101,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_mint\"\n }\n ]\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"report_payouts\",\n \"docs\": [\n \"Report payouts directly as the oracle — resolves the condition.\",\n \"The signer must match condition.oracle.\"\n ],\n \"discriminator\": [\n 133,\n 122,\n 65,\n 66,\n 174,\n 245,\n 105,\n 71\n ],\n \"accounts\": [\n {\n \"name\": \"oracle\",\n \"docs\": [\n \"The oracle resolving the condition (must match condition.oracle)\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"condition\",\n \"docs\": [\n \"The condition being resolved\"\n ],\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"payout_numerators\",\n \"type\": {\n \"vec\": \"u64\"\n }\n }\n ]\n },\n {\n \"name\": \"set_payout\",\n \"docs\": [\n \"Set payout and mark condition as resolved — ONLY callable by QuestionMarket via CPI.\"\n ],\n \"discriminator\": [\n 55,\n 43,\n 132,\n 51,\n 227,\n 169,\n 242,\n 195\n ],\n \"accounts\": [\n {\n \"name\": \"question_market_authority\",\n \"docs\": [\n \"The QuestionMarket program must sign via CPI\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"condition\",\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"payout_numerators\",\n \"type\": {\n \"vec\": \"u64\"\n }\n }\n ]\n },\n {\n \"name\": \"split_position\",\n \"docs\": [\n \"Split collateral (USDC) into YES + NO Token-2022 tokens.\",\n \"User gets equal amounts of both. ATAs are created if needed.\"\n ],\n \"discriminator\": [\n 172,\n 241,\n 221,\n 138,\n 161,\n 29,\n 253,\n 42\n ],\n \"accounts\": [\n {\n \"name\": \"user\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Pays tx fee (BE wallet — user wallet needs zero SOL)\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"condition\",\n \"writable\": true\n },\n {\n \"name\": \"collateral_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 108,\n 108,\n 97,\n 116,\n 101,\n 114,\n 97,\n 108,\n 95,\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"condition.collateral_mint\",\n \"account\": \"Condition\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"user_collateral\",\n \"writable\": true\n },\n {\n \"name\": \"yes_mint\",\n \"writable\": true\n },\n {\n \"name\": \"user_yes_ata\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"user\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_2022_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"yes_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"no_mint\",\n \"writable\": true\n },\n {\n \"name\": \"user_no_ata\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"user\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_2022_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"no_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"yes_position\",\n \"writable\": true\n },\n {\n \"name\": \"no_position\",\n \"writable\": true\n },\n {\n \"name\": \"mint_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 105,\n 110,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"condition\"\n }\n ]\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"token_2022_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"transfer_position\",\n \"docs\": [\n \"Transfer positions between users — ONLY callable by the authorized CLOB program.\",\n \"Used during order matching to redistribute YES/NO tokens.\"\n ],\n \"discriminator\": [\n 139,\n 130,\n 102,\n 147,\n 135,\n 77,\n 113,\n 222\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Wallet that pays for creating `to_position` if it does not yet exist.\",\n \"Must be a system-owned account (no data) so System Program can debit it.\",\n \"Typically the operator keypair from the CLOB program.\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"clob_authority\",\n \"docs\": [\n \"The CLOB program must sign this instruction\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"condition\"\n },\n {\n \"name\": \"outcome_mint\",\n \"writable\": true\n },\n {\n \"name\": \"from_user\"\n },\n {\n \"name\": \"from_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"from_position\",\n \"writable\": true\n },\n {\n \"name\": \"to_user\"\n },\n {\n \"name\": \"to_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"to_position\",\n \"writable\": true\n },\n {\n \"name\": \"token_2022_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"outcome_index\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"update_authorized_clob\",\n \"docs\": [\n \"Update the authorized CLOB on a condition — only callable by the condition's oracle.\"\n ],\n \"discriminator\": [\n 163,\n 149,\n 236,\n 248,\n 250,\n 46,\n 128,\n 223\n ],\n \"accounts\": [\n {\n \"name\": \"oracle\",\n \"docs\": [\n \"The oracle that owns this condition — must sign\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"condition\",\n \"docs\": [\n \"Condition PDA to update\"\n ],\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"new_authorized_clob\",\n \"type\": \"pubkey\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"CollateralVault\",\n \"discriminator\": [\n 19,\n 189,\n 95,\n 155,\n 100,\n 9,\n 159,\n 145\n ]\n },\n {\n \"name\": \"Condition\",\n \"discriminator\": [\n 138,\n 226,\n 74,\n 204,\n 104,\n 23,\n 135,\n 63\n ]\n },\n {\n \"name\": \"Position\",\n \"discriminator\": [\n 170,\n 188,\n 143,\n 228,\n 122,\n 64,\n 247,\n 208\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"ConditionPrepared\",\n \"discriminator\": [\n 78,\n 133,\n 221,\n 12,\n 90,\n 145,\n 68,\n 113\n ]\n },\n {\n \"name\": \"ConditionResolved\",\n \"discriminator\": [\n 35,\n 167,\n 14,\n 224,\n 166,\n 189,\n 149,\n 24\n ]\n },\n {\n \"name\": \"PayoutsReported\",\n \"discriminator\": [\n 2,\n 216,\n 13,\n 200,\n 42,\n 178,\n 34,\n 244\n ]\n },\n {\n \"name\": \"PositionMerged\",\n \"discriminator\": [\n 239,\n 79,\n 71,\n 159,\n 201,\n 11,\n 107,\n 245\n ]\n },\n {\n \"name\": \"PositionSplit\",\n \"discriminator\": [\n 5,\n 144,\n 121,\n 43,\n 146,\n 210,\n 116,\n 5\n ]\n },\n {\n \"name\": \"PositionsRedeemed\",\n \"discriminator\": [\n 120,\n 95,\n 137,\n 254,\n 147,\n 217,\n 106,\n 74\n ]\n },\n {\n \"name\": \"TransferBatch\",\n \"discriminator\": [\n 11,\n 228,\n 95,\n 88,\n 4,\n 149,\n 139,\n 92\n ]\n },\n {\n \"name\": \"TransferSingle\",\n \"discriminator\": [\n 139,\n 49,\n 113,\n 204,\n 250,\n 194,\n 38,\n 75\n ]\n },\n {\n \"name\": \"VaultInitialized\",\n \"discriminator\": [\n 180,\n 43,\n 207,\n 2,\n 18,\n 71,\n 3,\n 75\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"CollateralVault\",\n \"docs\": [\n \"Global collateral vault - ONE vault per collateral type (e.g., USDC)\",\n \"Shared by ALL conditions using this collateral\",\n \"Similar to how EVM CTF contract holds all collateral in one place\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"collateral_mint\",\n \"docs\": [\n \"The SPL token mint this vault accepts (e.g., USDC)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault_token_account\",\n \"docs\": [\n \"The token account holding all collateral\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_locked\",\n \"docs\": [\n \"Total collateral locked across ALL conditions\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"condition_count\",\n \"docs\": [\n \"Number of conditions using this vault\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump seed for this PDA\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"vault_bump\",\n \"docs\": [\n \"Bump seed for the vault token account PDA\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"docs\": [\n \"Reserved for future use\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"Condition\",\n \"docs\": [\n \"A condition represents a binary market tied to an oracle question.\",\n \"Each condition has YES and NO Token-2022 mints that users hold in their wallets.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"oracle\",\n \"docs\": [\n \"The oracle config that will resolve this condition\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"docs\": [\n \"Unique question identifier (matches Oracle's question_id)\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"outcome_slot_count\",\n \"docs\": [\n \"Number of outcomes — always 2 for binary (NO=0, YES=1)\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"payout_numerators\",\n \"docs\": [\n \"Payout ratios set on resolution (e.g. YES wins: [0, 10000])\"\n ],\n \"type\": {\n \"vec\": \"u64\"\n }\n },\n {\n \"name\": \"payout_denominator\",\n \"docs\": [\n \"Sum of payout_numerators after resolution\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_collateral\",\n \"docs\": [\n \"Total USDC locked in the shared vault for this condition\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"collateral_mint\",\n \"docs\": [\n \"The collateral mint (USDC)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"collateral_vault\",\n \"docs\": [\n \"Reference to the shared CollateralVault PDA\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"yes_mint\",\n \"docs\": [\n \"Token-2022 YES mint — deterministic from [yes_mint, condition_id]\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"no_mint\",\n \"docs\": [\n \"Token-2022 NO mint — deterministic from [no_mint, condition_id]\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"hook_program\",\n \"docs\": [\n \"Transfer Hook program that guards YES/NO transfers\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authorized_clob\",\n \"docs\": [\n \"The only CLOB program allowed to call transfer_position\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"is_resolved\",\n \"docs\": [\n \"Whether the condition has been resolved\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"resolved_at\",\n \"docs\": [\n \"Timestamp when resolved (0 if not resolved)\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump seed for PDA derivation\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"ConditionPrepared\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"oracle\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"yes_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"no_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"hook_program\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authorized_clob\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"collateral_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"collateral_vault\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"ConditionResolved\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"oracle\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"payout_numerators\",\n \"type\": {\n \"vec\": \"u64\"\n }\n },\n {\n \"name\": \"resolved_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"PayoutsReported\",\n \"docs\": [\n \"Event emitted when payouts are reported\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"oracle\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"payout_numerators\",\n \"type\": {\n \"vec\": \"u64\"\n }\n },\n {\n \"name\": \"payout_denominator\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"resolved_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"Position\",\n \"docs\": [\n \"ERC-1155 style position tracking\",\n \"Instead of SPL token mints, we track balances directly in PDAs\",\n \"One Position account per (owner, condition, outcome_index) tuple\",\n \"\",\n \"This matches how ERC-1155 works:\",\n \"- mapping(uint256 tokenId => mapping(address owner => uint256 balance))\",\n \"\",\n \"Where tokenId = hash(conditionId, outcomeIndex)\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"docs\": [\n \"Owner of this position\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"docs\": [\n \"The condition this position belongs to\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"outcome_index\",\n \"docs\": [\n \"The outcome index (0-based)\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"balance\",\n \"docs\": [\n \"Position balance (like ERC-1155 balanceOf)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump seed for PDA derivation\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"docs\": [\n \"Reserved for future use\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"PositionMerged\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"PositionSplit\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"PositionsRedeemed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"yes_burned\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"no_burned\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"payout\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"TransferBatch\",\n \"docs\": [\n \"Event emitted on batch transfers (like ERC-1155 TransferBatch)\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"operator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"from\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"to\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"outcome_indices\",\n \"type\": \"bytes\"\n },\n {\n \"name\": \"amounts\",\n \"type\": {\n \"vec\": \"u64\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"TransferSingle\",\n \"docs\": [\n \"Event emitted on position transfers (like ERC-1155 TransferSingle)\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"operator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"from\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"to\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"outcome_index\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"VaultInitialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"collateral_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault_token_account\",\n \"type\": \"pubkey\"\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"Cs4GY1yZVxjxhhyUum3AupMuS3bo4yKRXifgLTTAh1sf\",\n \"metadata\": {\n \"name\": \"clob_exchange\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"CLOB order-matching exchange for XMarket prediction platform\"\n },\n \"instructions\": [\n {\n \"name\": \"add_operator\",\n \"discriminator\": [\n 149,\n 142,\n 187,\n 68,\n 33,\n 250,\n 87,\n 105\n ],\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"signer\": true\n },\n {\n \"name\": \"clob_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"operator\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"cancel_order\",\n \"docs\": [\n \"Cancel an order — close OrderRecord PDA, return rent to maker.\"\n ],\n \"discriminator\": [\n 95,\n 129,\n 237,\n 240,\n 8,\n 49,\n 223,\n 132\n ],\n \"accounts\": [\n {\n \"name\": \"maker\",\n \"docs\": [\n \"Must be the order maker/signer\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"order_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 111,\n 114,\n 100,\n 101,\n 114,\n 95,\n 114,\n 101,\n 99,\n 111,\n 114,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"maker\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"force_reset_clob\",\n \"discriminator\": [\n 96,\n 95,\n 187,\n 95,\n 65,\n 135,\n 120,\n 204\n ],\n \"accounts\": [\n {\n \"name\": \"upgrade_authority\",\n \"docs\": [\n \"Must be the upgrade authority (deployer). Checked in handler via\",\n \"programdata account so we don't hardcode the pubkey.\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"program_data\",\n \"docs\": [\n \"The clob_exchange programdata account (BPF loader stores the upgrade authority here).\"\n ]\n },\n {\n \"name\": \"clob_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_operators\",\n \"type\": {\n \"vec\": \"pubkey\"\n }\n },\n {\n \"name\": \"new_fee_recipient\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_fee_rate_bps\",\n \"type\": \"u16\"\n }\n ]\n },\n {\n \"name\": \"initialize_clob\",\n \"discriminator\": [\n 35,\n 69,\n 176,\n 37,\n 234,\n 108,\n 187,\n 10\n ],\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"clob_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"operators\",\n \"type\": {\n \"vec\": \"pubkey\"\n }\n },\n {\n \"name\": \"fee_recipient\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fee_rate_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"match_complementary\",\n \"docs\": [\n \"COMPLEMENTARY match: 1 taker (BUY) + N makers (SELL) via remaining_accounts.\"\n ],\n \"discriminator\": [\n 100,\n 205,\n 120,\n 91,\n 117,\n 141,\n 116,\n 141\n ],\n \"accounts\": [\n {\n \"name\": \"operator\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"clob_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"condition\"\n },\n {\n \"name\": \"taker\"\n },\n {\n \"name\": \"taker_order_record\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 111,\n 114,\n 100,\n 101,\n 114,\n 95,\n 114,\n 101,\n 99,\n 111,\n 114,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"taker\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"taker_nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"taker_collateral\",\n \"writable\": true\n },\n {\n \"name\": \"taker_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"taker_position\",\n \"writable\": true\n },\n {\n \"name\": \"taker_order_status\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 111,\n 114,\n 100,\n 101,\n 114\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"taker\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"taker_nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"fee_recipient\",\n \"writable\": true\n },\n {\n \"name\": \"outcome_mint\",\n \"writable\": true\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"address\": \"A6N1F8MRsdgcojAx8p6FaECvw8mo8w6qJcWsbKQBANK4\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"token_2022_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"taker_nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fill_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"use_taker_price\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"skip_crossing_check\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"match_merge_orders\",\n \"docs\": [\n \"MERGE match: 1 taker (YES SELL) + N makers (NO SELL) via remaining_accounts.\"\n ],\n \"discriminator\": [\n 105,\n 41,\n 24,\n 78,\n 119,\n 103,\n 20,\n 31\n ],\n \"accounts\": [\n {\n \"name\": \"operator\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"clob_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"condition\",\n \"writable\": true\n },\n {\n \"name\": \"taker\"\n },\n {\n \"name\": \"taker_order_record\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 111,\n 114,\n 100,\n 101,\n 114,\n 95,\n 114,\n 101,\n 99,\n 111,\n 114,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"taker\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"taker_nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"taker_yes_token\",\n \"writable\": true\n },\n {\n \"name\": \"taker_yes_position\",\n \"writable\": true\n },\n {\n \"name\": \"taker_collateral\",\n \"writable\": true\n },\n {\n \"name\": \"taker_order_status\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 111,\n 114,\n 100,\n 101,\n 114\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"taker\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"taker_nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"clob_usdc_ata\",\n \"docs\": [\n \"USDC ATA owned by clob_config — receives USDC from vault after merge\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"clob_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"clob_yes_ata\",\n \"writable\": true\n },\n {\n \"name\": \"clob_no_ata\",\n \"writable\": true\n },\n {\n \"name\": \"clob_yes_position\",\n \"writable\": true\n },\n {\n \"name\": \"clob_no_position\",\n \"writable\": true\n },\n {\n \"name\": \"collateral_vault\",\n \"writable\": true\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"collateral_mint\"\n },\n {\n \"name\": \"yes_mint\",\n \"writable\": true\n },\n {\n \"name\": \"no_mint\",\n \"writable\": true\n },\n {\n \"name\": \"clob_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"address\": \"A6N1F8MRsdgcojAx8p6FaECvw8mo8w6qJcWsbKQBANK4\"\n },\n {\n \"name\": \"collateral_token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"token_2022_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"taker_nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fill_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"skip_crossing_check\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"match_mint_orders\",\n \"docs\": [\n \"MINT match: 1 taker (YES BUY) + N makers (NO BUY) via remaining_accounts.\"\n ],\n \"discriminator\": [\n 146,\n 116,\n 36,\n 17,\n 229,\n 119,\n 148,\n 84\n ],\n \"accounts\": [\n {\n \"name\": \"operator\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"clob_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"condition\",\n \"writable\": true\n },\n {\n \"name\": \"taker\"\n },\n {\n \"name\": \"taker_order_record\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 111,\n 114,\n 100,\n 101,\n 114,\n 95,\n 114,\n 101,\n 99,\n 111,\n 114,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"taker\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"taker_nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"taker_collateral\",\n \"writable\": true\n },\n {\n \"name\": \"taker_yes_token\",\n \"writable\": true\n },\n {\n \"name\": \"taker_yes_position\",\n \"writable\": true\n },\n {\n \"name\": \"taker_order_status\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 111,\n 114,\n 100,\n 101,\n 114\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"taker\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"taker_nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"clob_usdc_ata\",\n \"docs\": [\n \"USDC ATA owned by clob_config — receives combined USDC, then split_position pulls from here\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"clob_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"clob_yes_ata\",\n \"docs\": [\n \"YES Token-2022 ATA owned by clob_config — receives YES from split, then transferred to taker\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"clob_no_ata\",\n \"docs\": [\n \"NO Token-2022 ATA owned by clob_config — receives NO from split, then transferred to makers\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"clob_yes_position\",\n \"docs\": [\n \"YES Position PDA for clob_config (set by CTF split_position init_if_needed)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"clob_no_position\",\n \"docs\": [\n \"NO Position PDA for clob_config (set by CTF split_position init_if_needed)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"collateral_vault\",\n \"writable\": true\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"collateral_mint\"\n },\n {\n \"name\": \"yes_mint\",\n \"writable\": true\n },\n {\n \"name\": \"no_mint\",\n \"writable\": true\n },\n {\n \"name\": \"mint_authority\",\n \"writable\": true\n },\n {\n \"name\": \"clob_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"address\": \"A6N1F8MRsdgcojAx8p6FaECvw8mo8w6qJcWsbKQBANK4\"\n },\n {\n \"name\": \"collateral_token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"token_2022_program\",\n \"address\": \"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"taker_nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fill_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"skip_crossing_check\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"register_order\",\n \"docs\": [\n \"Register a signed order on-chain (Ed25519 verify at registration time).\",\n \"ix[0] must be Ed25519 precompile with 1 entry for order.signer.\"\n ],\n \"discriminator\": [\n 92,\n 37,\n 29,\n 46,\n 77,\n 250,\n 219,\n 6\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Operator pays rent for the OrderRecord PDA.\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"clob_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"ix_sysvar\",\n \"address\": \"Sysvar1nstructions1111111111111111111111111\"\n },\n {\n \"name\": \"order_signer\"\n },\n {\n \"name\": \"order_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 111,\n 114,\n 100,\n 101,\n 114,\n 95,\n 114,\n 101,\n 99,\n 111,\n 114,\n 100\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"order_signer\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"order_status\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 111,\n 114,\n 100,\n 101,\n 114\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"order_signer\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"nonce\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"reinit_clob\",\n \"discriminator\": [\n 41,\n 95,\n 240,\n 222,\n 95,\n 170,\n 14,\n 224\n ],\n \"accounts\": [\n {\n \"name\": \"upgrade_authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"program_data\"\n },\n {\n \"name\": \"clob_config\",\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_operators\",\n \"type\": {\n \"vec\": \"pubkey\"\n }\n },\n {\n \"name\": \"new_fee_recipient\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_fee_rate_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"remove_operator\",\n \"discriminator\": [\n 84,\n 183,\n 126,\n 251,\n 137,\n 150,\n 214,\n 134\n ],\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"signer\": true\n },\n {\n \"name\": \"clob_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"operator\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"set_paused\",\n \"discriminator\": [\n 91,\n 60,\n 125,\n 192,\n 176,\n 225,\n 166,\n 218\n ],\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"signer\": true\n },\n {\n \"name\": \"clob_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 111,\n 98,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"paused\",\n \"type\": \"bool\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"ClobConfig\",\n \"discriminator\": [\n 232,\n 137,\n 70,\n 131,\n 139,\n 180,\n 99,\n 160\n ]\n },\n {\n \"name\": \"OrderStatus\",\n \"discriminator\": [\n 46,\n 90,\n 241,\n 73,\n 178,\n 104,\n 65,\n 3\n ]\n },\n {\n \"name\": \"SignedOrderRecord\",\n \"discriminator\": [\n 16,\n 167,\n 189,\n 166,\n 85,\n 0,\n 231,\n 55\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"ComplementaryMatchEvent\",\n \"discriminator\": [\n 119,\n 80,\n 38,\n 83,\n 91,\n 51,\n 194,\n 114\n ]\n },\n {\n \"name\": \"MergeMatchEvent\",\n \"discriminator\": [\n 168,\n 213,\n 228,\n 238,\n 136,\n 1,\n 205,\n 8\n ]\n },\n {\n \"name\": \"MintMatchEvent\",\n \"discriminator\": [\n 100,\n 181,\n 33,\n 71,\n 124,\n 61,\n 130,\n 23\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"ClobConfig\",\n \"docs\": [\n \"Global CLOB configuration.\",\n \"Stores the fee recipient, authorized operators, and program references.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"admin\",\n \"docs\": [\n \"Admin who can update operators and config\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"operators\",\n \"docs\": [\n \"Operators authorized to submit match transactions.\",\n \"Off-chain matching engine(s) use these keys.\"\n ],\n \"type\": {\n \"vec\": \"pubkey\"\n }\n },\n {\n \"name\": \"fee_recipient\",\n \"docs\": [\n \"Fee recipient token account (USDC)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fee_rate_bps\",\n \"docs\": [\n \"Fee rate in basis points charged on each trade (e.g. 50 = 0.5%)\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"conditional_tokens_program\",\n \"docs\": [\n \"The conditional-tokens program ID (for CPI)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"is_paused\",\n \"docs\": [\n \"Whether the CLOB is paused\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump for this PDA\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"CollateralVault\",\n \"docs\": [\n \"Global collateral vault - ONE vault per collateral type (e.g., USDC)\",\n \"Shared by ALL conditions using this collateral\",\n \"Similar to how EVM CTF contract holds all collateral in one place\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"collateral_mint\",\n \"docs\": [\n \"The SPL token mint this vault accepts (e.g., USDC)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault_token_account\",\n \"docs\": [\n \"The token account holding all collateral\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_locked\",\n \"docs\": [\n \"Total collateral locked across ALL conditions\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"condition_count\",\n \"docs\": [\n \"Number of conditions using this vault\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump seed for this PDA\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"vault_bump\",\n \"docs\": [\n \"Bump seed for the vault token account PDA\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"docs\": [\n \"Reserved for future use\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"ComplementaryMatchEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"taker\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fill_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"Condition\",\n \"docs\": [\n \"A condition represents a binary market tied to an oracle question.\",\n \"Each condition has YES and NO Token-2022 mints that users hold in their wallets.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"oracle\",\n \"docs\": [\n \"The oracle config that will resolve this condition\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"docs\": [\n \"Unique question identifier (matches Oracle's question_id)\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"outcome_slot_count\",\n \"docs\": [\n \"Number of outcomes — always 2 for binary (NO=0, YES=1)\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"payout_numerators\",\n \"docs\": [\n \"Payout ratios set on resolution (e.g. YES wins: [0, 10000])\"\n ],\n \"type\": {\n \"vec\": \"u64\"\n }\n },\n {\n \"name\": \"payout_denominator\",\n \"docs\": [\n \"Sum of payout_numerators after resolution\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_collateral\",\n \"docs\": [\n \"Total USDC locked in the shared vault for this condition\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"collateral_mint\",\n \"docs\": [\n \"The collateral mint (USDC)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"collateral_vault\",\n \"docs\": [\n \"Reference to the shared CollateralVault PDA\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"yes_mint\",\n \"docs\": [\n \"Token-2022 YES mint — deterministic from [yes_mint, condition_id]\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"no_mint\",\n \"docs\": [\n \"Token-2022 NO mint — deterministic from [no_mint, condition_id]\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"hook_program\",\n \"docs\": [\n \"Transfer Hook program that guards YES/NO transfers\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authorized_clob\",\n \"docs\": [\n \"The only CLOB program allowed to call transfer_position\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"is_resolved\",\n \"docs\": [\n \"Whether the condition has been resolved\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"resolved_at\",\n \"docs\": [\n \"Timestamp when resolved (0 if not resolved)\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump seed for PDA derivation\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"MergeMatchEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"taker\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fill_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"MintMatchEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"buyer_yes\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fill_amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"OrderStatus\",\n \"docs\": [\n \"Tracks the fill state of an order for replay protection.\",\n \"PDA seeds: [b\\\"order\\\", maker_pubkey, nonce_le_bytes]\",\n \"\",\n \"Created on first fill (init_if_needed). A missing PDA means the order\",\n \"has never been touched (remaining = order.amount).\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"maker\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"filled_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"SignedOrderRecord\",\n \"docs\": [\n \"On-chain verified order record.\",\n \"Created by `register_order` after Ed25519 signature verification.\",\n \"Read by match instructions via remaining_accounts.\",\n \"Closed (rent returned) when order is fully filled or cancelled.\",\n \"\",\n \"PDA seeds: [b\\\"order_record\\\", maker, nonce_le_bytes]\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"maker\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"token_id\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"side\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"maker_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"taker_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"created_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"taker\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"signer\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"DuYyXguB5PVSKg6E2p4XPrrXZSCJnuBhoGpkGCBN5bBb\",\n \"metadata\": {\n \"name\": \"fee_management\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Fee Management program for XMarket prediction platform\"\n },\n \"instructions\": [\n {\n \"name\": \"add_to_whitelist\",\n \"discriminator\": [\n 157,\n 211,\n 52,\n 54,\n 144,\n 81,\n 5,\n 55\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"fee_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"fee_config.owner\",\n \"account\": \"FeeConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"distribute_fee\",\n \"discriminator\": [\n 30,\n 155,\n 128,\n 162,\n 157,\n 113,\n 53,\n 42\n ],\n \"accounts\": [\n {\n \"name\": \"fee_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"fee_config.owner\",\n \"account\": \"FeeConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"market_fee_override\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 97,\n 114,\n 107,\n 101,\n 116,\n 95,\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"source_ata\",\n \"writable\": true\n },\n {\n \"name\": \"company_ata\",\n \"writable\": true\n },\n {\n \"name\": \"market_oracle_vault\",\n \"docs\": [\n \"Writable: tokens are transferred here when is_admin=false.\",\n \"For admin questions pass any writable account (no transfer occurs).\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"init_question_fee\",\n \"discriminator\": [\n 115,\n 49,\n 110,\n 164,\n 33,\n 202,\n 115,\n 79\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"question_fee\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 117,\n 101,\n 115,\n 116,\n 105,\n 111,\n 110,\n 95,\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"initialize\",\n \"discriminator\": [\n 175,\n 175,\n 109,\n 31,\n 13,\n 152,\n 155,\n 237\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"fee_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"InitializeParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"remove_from_whitelist\",\n \"discriminator\": [\n 7,\n 144,\n 216,\n 239,\n 243,\n 236,\n 193,\n 235\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"fee_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"fee_config.owner\",\n \"account\": \"FeeConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"set_admin\",\n \"discriminator\": [\n 251,\n 163,\n 0,\n 52,\n 91,\n 194,\n 187,\n 92\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"fee_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"fee_config.owner\",\n \"account\": \"FeeConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"set_market_fee_override\",\n \"discriminator\": [\n 141,\n 43,\n 11,\n 123,\n 189,\n 90,\n 240,\n 198\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"fee_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"fee_config.owner\",\n \"account\": \"FeeConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"market_fee_override\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 97,\n 114,\n 107,\n 101,\n 116,\n 95,\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"investors\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"company\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"is_admin\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"set_presale_fee_override\",\n \"discriminator\": [\n 38,\n 169,\n 138,\n 149,\n 77,\n 51,\n 133,\n 71\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"fee_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"fee_config.owner\",\n \"account\": \"FeeConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"presale_fee_override\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 101,\n 115,\n 97,\n 108,\n 101,\n 95,\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"presale\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agents\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"company\",\n \"type\": \"u32\"\n }\n ]\n },\n {\n \"name\": \"set_question_fee\",\n \"discriminator\": [\n 83,\n 142,\n 163,\n 186,\n 112,\n 116,\n 160,\n 22\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"fee_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"fee_config.owner\",\n \"account\": \"FeeConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"question_fee\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 117,\n 101,\n 115,\n 116,\n 105,\n 111,\n 110,\n 95,\n 102,\n 101,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"merge_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"redeem_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"swap_fee\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"update_config\",\n \"discriminator\": [\n 29,\n 158,\n 252,\n 191,\n 10,\n 83,\n 219,\n 99\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"fee_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"fee_config.owner\",\n \"account\": \"FeeConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"UpdateConfigParams\"\n }\n }\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"FeeConfig\",\n \"discriminator\": [\n 143,\n 52,\n 146,\n 187,\n 219,\n 123,\n 76,\n 155\n ]\n },\n {\n \"name\": \"MarketFeeOverride\",\n \"discriminator\": [\n 186,\n 172,\n 43,\n 139,\n 229,\n 80,\n 54,\n 35\n ]\n },\n {\n \"name\": \"PresaleFeeOverride\",\n \"discriminator\": [\n 65,\n 15,\n 119,\n 40,\n 59,\n 212,\n 183,\n 238\n ]\n },\n {\n \"name\": \"QuestionFee\",\n \"discriminator\": [\n 43,\n 28,\n 92,\n 26,\n 6,\n 96,\n 87,\n 145\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"FeeAdminUpdated\",\n \"discriminator\": [\n 10,\n 109,\n 73,\n 161,\n 51,\n 119,\n 6,\n 105\n ]\n },\n {\n \"name\": \"FeeConfigInitialized\",\n \"discriminator\": [\n 99,\n 232,\n 112,\n 161,\n 28,\n 61,\n 171,\n 178\n ]\n },\n {\n \"name\": \"FeeConfigUpdated\",\n \"discriminator\": [\n 45,\n 50,\n 42,\n 173,\n 193,\n 67,\n 52,\n 244\n ]\n },\n {\n \"name\": \"FeeDistributed\",\n \"discriminator\": [\n 6,\n 133,\n 116,\n 50,\n 44,\n 151,\n 179,\n 65\n ]\n },\n {\n \"name\": \"FeeWhitelistUpdated\",\n \"discriminator\": [\n 113,\n 215,\n 161,\n 200,\n 232,\n 138,\n 118,\n 127\n ]\n },\n {\n \"name\": \"MarketFeeOverrideSet\",\n \"discriminator\": [\n 199,\n 221,\n 153,\n 8,\n 223,\n 7,\n 236,\n 168\n ]\n },\n {\n \"name\": \"PresaleFeeOverrideSet\",\n \"discriminator\": [\n 37,\n 59,\n 174,\n 56,\n 179,\n 181,\n 109,\n 235\n ]\n },\n {\n \"name\": \"QuestionFeeInitialized\",\n \"discriminator\": [\n 147,\n 167,\n 20,\n 219,\n 32,\n 142,\n 227,\n 171\n ]\n },\n {\n \"name\": \"QuestionFeeUpdated\",\n \"discriminator\": [\n 109,\n 34,\n 209,\n 115,\n 126,\n 213,\n 136,\n 3\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"FeeAdminUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"fee_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"old_admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"updated_by\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"FeeConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"company_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"referral_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale_revenue_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"investors_market_rev\",\n \"docs\": [\n \"Market revenue split: investors + company (out of FEE_DENOMINATOR = 1_000_000)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_market_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"agents_presale_rev\",\n \"docs\": [\n \"Presale revenue split: agents + company (out of FEE_DENOMINATOR = 1_000_000)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_presale_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 10\n ]\n }\n },\n {\n \"name\": \"whitelist_len\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"FeeConfigInitialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"fee_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"admin\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"FeeConfigUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"fee_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"updated_by\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"FeeDistributed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"is_admin\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"company_share\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"FeeWhitelistUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"fee_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"added\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"updated_by\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"InitializeParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"admin\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"company_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"referral_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale_revenue_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"investors_market_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_market_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"agents_presale_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_presale_rev\",\n \"type\": \"u32\"\n }\n ]\n }\n },\n {\n \"name\": \"MarketFeeOverride\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"investors\",\n \"docs\": [\n \"Revenue split out of FEE_DENOMINATOR (1_000_000)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"company\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"is_admin\",\n \"docs\": [\n \"true = admin-created question (100% → company)\",\n \"false = presale question (split per investors/company rates)\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"MarketFeeOverrideSet\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"fee_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"investors\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"company\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"is_admin\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"set_by\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleFeeOverride\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agents\",\n \"docs\": [\n \"Revenue split out of FEE_DENOMINATOR (1_000_000)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"company\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleFeeOverrideSet\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"fee_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agents\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"company\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"set_by\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"QuestionFee\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"merge_fee\",\n \"docs\": [\n \"Fees out of FEE_DENOMINATOR (10_000). E.g. 200 = 2%, 2_000 = 20%\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"redeem_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"swap_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"QuestionFeeInitialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"swap_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"redeem_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"merge_fee\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"QuestionFeeUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"fee_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"merge_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"redeem_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"swap_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"updated_by\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"UpdateConfigParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"company_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"referral_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale_revenue_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"investors_market_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_market_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"agents_presale_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_presale_rev\",\n \"type\": \"u32\"\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"2Rnw1VoEtsUMQ7wkvYZjDehqSqRob6uNkeymDfvKrquB\",\n \"metadata\": {\n \"name\": \"presale\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Presale program for XMarket prediction platform\"\n },\n \"instructions\": [\n {\n \"name\": \"buy\",\n \"discriminator\": [\n 102,\n 6,\n 61,\n 18,\n 1,\n 218,\n 235,\n 234\n ],\n \"accounts\": [\n {\n \"name\": \"buyer\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"presale\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 101,\n 115,\n 97,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.question_market_config\",\n \"account\": \"PresaleAccount\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.presale_index\",\n \"account\": \"PresaleAccount\"\n }\n ]\n }\n },\n {\n \"name\": \"qt_mint\",\n \"writable\": true\n },\n {\n \"name\": \"qt_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n }\n ]\n }\n },\n {\n \"name\": \"buyer_qt_ata\",\n \"docs\": [\n \"Buyer's MST token account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"qt_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"buyer_currency_ata\",\n \"docs\": [\n \"Buyer's currency (USDC) account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"presale_vault\",\n \"docs\": [\n \"Presale USDC vault\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"currency_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"user_buy_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 117,\n 115,\n 101,\n 114,\n 95,\n 98,\n 117,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\n }\n ]\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"qt_amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"buy_for_creator\",\n \"discriminator\": [\n 162,\n 128,\n 209,\n 122,\n 169,\n 17,\n 19,\n 181\n ],\n \"accounts\": [\n {\n \"name\": \"operator\",\n \"docs\": [\n \"question_market_config PDA — signs via CPI from question-market\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"presale\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 101,\n 115,\n 97,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.question_market_config\",\n \"account\": \"PresaleAccount\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.presale_index\",\n \"account\": \"PresaleAccount\"\n }\n ]\n }\n },\n {\n \"name\": \"qt_mint\",\n \"writable\": true\n },\n {\n \"name\": \"qt_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n }\n ]\n }\n },\n {\n \"name\": \"creator_qt_ata\",\n \"docs\": [\n \"Creator's MST token account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"qt_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"creator\"\n },\n {\n \"name\": \"user_buy_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 117,\n 115,\n 101,\n 114,\n 95,\n 98,\n 117,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n }\n ]\n }\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"currency_amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"distribute_presale_revenue\",\n \"discriminator\": [\n 235,\n 196,\n 203,\n 30,\n 149,\n 159,\n 144,\n 244\n ],\n \"accounts\": [\n {\n \"name\": \"operator\",\n \"docs\": [\n \"question_market_config PDA — signs via CPI from question-market\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"presale\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 101,\n 115,\n 97,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.question_market_config\",\n \"account\": \"PresaleAccount\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.presale_index\",\n \"account\": \"PresaleAccount\"\n }\n ]\n }\n },\n {\n \"name\": \"presale_vault\",\n \"docs\": [\n \"Presale USDC vault (source) — closed after distribution\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"currency_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"referral_token_account\",\n \"docs\": [\n \"Referral address USDC token account (receives agents_fee)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"company_token_account\",\n \"docs\": [\n \"Company address USDC token account (receives company_fee)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"botmm_token_account\",\n \"docs\": [\n \"BOTMM token account (receives remaining ~80%)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Receives lamports from closed presale_vault + presale PDA\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"initialize_presale\",\n \"discriminator\": [\n 9,\n 174,\n 12,\n 126,\n 150,\n 119,\n 68,\n 100\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"question_market_config\"\n },\n {\n \"name\": \"presale\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 101,\n 115,\n 97,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"question_market_config\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"params.presale_index\"\n }\n ]\n }\n },\n {\n \"name\": \"qt_mint\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 116,\n 95,\n 109,\n 105,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n }\n ]\n }\n },\n {\n \"name\": \"qt_authority\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 113,\n 116,\n 95,\n 97,\n 117,\n 116,\n 104,\n 111,\n 114,\n 105,\n 116,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n }\n ]\n }\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"presale_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"currency_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"qt_metadata\",\n \"writable\": true\n },\n {\n \"name\": \"token_metadata_program\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"rent\",\n \"address\": \"SysvarRent111111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"params\",\n \"type\": {\n \"defined\": {\n \"name\": \"InitializePresaleParams\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"refund\",\n \"discriminator\": [\n 2,\n 96,\n 183,\n 251,\n 63,\n 208,\n 46,\n 46\n ],\n \"accounts\": [\n {\n \"name\": \"user\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Pays tx fee (BE wallet — user wallet needs zero SOL)\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"presale\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 101,\n 115,\n 97,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.question_market_config\",\n \"account\": \"PresaleAccount\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.presale_index\",\n \"account\": \"PresaleAccount\"\n }\n ]\n }\n },\n {\n \"name\": \"qt_mint\",\n \"writable\": true\n },\n {\n \"name\": \"user_qt_ata\",\n \"docs\": [\n \"User's MST token account (burned on refund)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"user\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"qt_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"user_currency_ata\",\n \"docs\": [\n \"User's USDC account (receives refund)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"presale_vault\",\n \"docs\": [\n \"Presale USDC vault (source of refund)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"currency_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"user_buy_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 117,\n 115,\n 101,\n 114,\n 95,\n 98,\n 117,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"user\"\n }\n ]\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"set_approved\",\n \"discriminator\": [\n 230,\n 214,\n 166,\n 156,\n 205,\n 38,\n 182,\n 106\n ],\n \"accounts\": [\n {\n \"name\": \"operator\",\n \"docs\": [\n \"question_market_config PDA — signs via CPI from question-market\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"presale\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 101,\n 115,\n 97,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.question_market_config\",\n \"account\": \"PresaleAccount\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.presale_index\",\n \"account\": \"PresaleAccount\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"set_rejected\",\n \"discriminator\": [\n 158,\n 2,\n 222,\n 64,\n 65,\n 180,\n 195,\n 24\n ],\n \"accounts\": [\n {\n \"name\": \"operator\",\n \"docs\": [\n \"question_market_config PDA — signs via CPI from question-market\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"presale\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 114,\n 101,\n 115,\n 97,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.question_market_config\",\n \"account\": \"PresaleAccount\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"presale.presale_index\",\n \"account\": \"PresaleAccount\"\n }\n ]\n }\n }\n ],\n \"args\": []\n }\n ],\n \"accounts\": [\n {\n \"name\": \"PresaleAccount\",\n \"discriminator\": [\n 199,\n 34,\n 38,\n 30,\n 209,\n 182,\n 217,\n 206\n ]\n },\n {\n \"name\": \"UserBuyRecord\",\n \"discriminator\": [\n 70,\n 83,\n 101,\n 8,\n 175,\n 129,\n 230,\n 160\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"Bought\",\n \"discriminator\": [\n 193,\n 56,\n 215,\n 24,\n 156,\n 76,\n 42,\n 104\n ]\n },\n {\n \"name\": \"BoughtForCreator\",\n \"discriminator\": [\n 88,\n 165,\n 191,\n 190,\n 67,\n 40,\n 221,\n 144\n ]\n },\n {\n \"name\": \"PresaleApproved\",\n \"discriminator\": [\n 57,\n 9,\n 254,\n 224,\n 93,\n 21,\n 177,\n 70\n ]\n },\n {\n \"name\": \"PresaleInitialized\",\n \"discriminator\": [\n 103,\n 99,\n 225,\n 170,\n 238,\n 250,\n 90,\n 75\n ]\n },\n {\n \"name\": \"PresaleRejected\",\n \"discriminator\": [\n 141,\n 151,\n 157,\n 127,\n 100,\n 182,\n 63,\n 52\n ]\n },\n {\n \"name\": \"PresaleRevenueDistributed\",\n \"discriminator\": [\n 10,\n 172,\n 132,\n 246,\n 218,\n 186,\n 99,\n 129\n ]\n },\n {\n \"name\": \"Refunded\",\n \"discriminator\": [\n 35,\n 103,\n 149,\n 246,\n 196,\n 123,\n 221,\n 99\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"Bought\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"buyer\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"usdc_cost\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"sold_token_amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"BoughtForCreator\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"currency_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"sold_token_amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"InitializePresaleParams\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"presale_index\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"agents_rev\",\n \"docs\": [\n \"Ignored — fee % is now a program constant (PRESALE_AGENTS_FEE_BPS)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_rev\",\n \"docs\": [\n \"Ignored — fee % is now a program constant (PRESALE_COMPANY_FEE_BPS)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"referral_address\",\n \"docs\": [\n \"Wallet that receives agents/referral fee (AGENT in .env)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"company_address\",\n \"docs\": [\n \"Wallet that receives company fee (COMPANY in .env)\"\n ],\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleAccount\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"question_market_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale_index\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"currency_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_mint_bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"qt_authority_bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"status\",\n \"type\": {\n \"defined\": {\n \"name\": \"PresaleStatus\"\n }\n }\n },\n {\n \"name\": \"sold_token_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"initial_token_amount_creator\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"agents_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"company_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"referral_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"company_address\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"is_distribute_revenue\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"creator_claimable_revenue\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"PresaleApproved\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleInitialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_market_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale_index\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"currency_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"start_time\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleRejected\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleRevenueDistributed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"balance\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"agents_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"company_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"botmm_revenue\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"PresaleStatus\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Pending\"\n },\n {\n \"name\": \"Approved\"\n },\n {\n \"name\": \"Rejected\"\n }\n ]\n }\n },\n {\n \"name\": \"Refunded\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_burned\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"currency_refunded\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"UserBuyRecord\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"presale\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"currency_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"ADWF4J3nCJ2kWnCtycuem2jhu7amUqJWQG3oa5xF67QJ\",\n \"metadata\": {\n \"name\": \"market_oracle\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Market Oracle program for XMarket prediction platform\"\n },\n \"instructions\": [\n {\n \"name\": \"claim_fees_share\",\n \"discriminator\": [\n 252,\n 175,\n 173,\n 207,\n 195,\n 75,\n 96,\n 53\n ],\n \"accounts\": [\n {\n \"name\": \"user\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"market_oracle\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 97,\n 114,\n 107,\n 101,\n 116,\n 95,\n 111,\n 114,\n 97,\n 99,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"market_oracle.question\",\n \"account\": \"MarketOracleAccount\"\n }\n ]\n }\n },\n {\n \"name\": \"market_oracle_vault\",\n \"docs\": [\n \"Market oracle USDC vault (source of payout)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"market_oracle\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"currency_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"qt_mint\",\n \"docs\": [\n \"QT (MST) mint — for burning\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"user_qt_ata\",\n \"docs\": [\n \"User's QT token account (burned)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"user\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"qt_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"user_currency_ata\",\n \"docs\": [\n \"User's USDC token account (receives payout)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"user_claim_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 117,\n 115,\n 101,\n 114,\n 95,\n 99,\n 108,\n 97,\n 105,\n 109\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"market_oracle\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"user\"\n }\n ]\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"distribute_fees_share\",\n \"discriminator\": [\n 18,\n 122,\n 69,\n 52,\n 253,\n 171,\n 106,\n 233\n ],\n \"accounts\": [\n {\n \"name\": \"operator\",\n \"docs\": [\n \"question_market_config PDA — signs via CPI\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"market_oracle\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 97,\n 114,\n 107,\n 101,\n 116,\n 95,\n 111,\n 114,\n 97,\n 99,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"market_oracle.question\",\n \"account\": \"MarketOracleAccount\"\n }\n ]\n }\n },\n {\n \"name\": \"qt_mint\",\n \"docs\": [\n \"QT (MST) token mint — supply snapshot taken here\"\n ]\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"initialize_market\",\n \"discriminator\": [\n 35,\n 35,\n 189,\n 193,\n 155,\n 48,\n 170,\n 203\n ],\n \"accounts\": [\n {\n \"name\": \"operator\",\n \"docs\": [\n \"question_market_config PDA — signs via CPI from question-market\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"question\"\n },\n {\n \"name\": \"market_oracle\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 97,\n 114,\n 107,\n 101,\n 116,\n 95,\n 111,\n 114,\n 97,\n 99,\n 108,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"question\"\n }\n ]\n }\n },\n {\n \"name\": \"currency_mint\"\n },\n {\n \"name\": \"market_oracle_vault\",\n \"docs\": [\n \"Market oracle USDC vault — ATA of market_oracle PDA\",\n \"This is set as fee_recipient in CLOB config for this market\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"market_oracle\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"currency_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"rent\",\n \"address\": \"SysvarRent111111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"MarketOracleAccount\",\n \"discriminator\": [\n 94,\n 161,\n 62,\n 46,\n 191,\n 0,\n 214,\n 182\n ]\n },\n {\n \"name\": \"UserClaimRecord\",\n \"discriminator\": [\n 85,\n 4,\n 42,\n 63,\n 186,\n 93,\n 76,\n 140\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"FeesShareClaimed\",\n \"discriminator\": [\n 134,\n 23,\n 132,\n 206,\n 108,\n 241,\n 26,\n 120\n ]\n },\n {\n \"name\": \"FeesShareDistributed\",\n \"discriminator\": [\n 99,\n 92,\n 62,\n 91,\n 18,\n 188,\n 164,\n 238\n ]\n },\n {\n \"name\": \"MarketInitialized\",\n \"discriminator\": [\n 134,\n 160,\n 122,\n 87,\n 50,\n 3,\n 255,\n 81\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"FeesShareClaimed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"market_oracle\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_burned\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"fees_share\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"FeesShareDistributed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"market_oracle\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_total_supply\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"MarketInitialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"market_oracle\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_market_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"currency_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"MarketOracleAccount\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"question\",\n \"docs\": [\n \"The question PDA this oracle is for\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_market_config\",\n \"docs\": [\n \"question_market program config — the operator\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"currency_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"qt_mint\",\n \"docs\": [\n \"MST token mint — set at distribute_fees_share\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fees_distributed\",\n \"docs\": [\n \"True after distribute_fees_share is called\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"qt_total_supply\",\n \"docs\": [\n \"Snapshot of qt total supply at distribution time\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_claimed\",\n \"docs\": [\n \"Running total of USDC paid out to claimers\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"UserClaimRecord\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"market_oracle\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"has_claimed\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"4NdD5962SfGqofmeyjfifJpdGnwTAiKaUKB5Z42UDc9T\",\n \"metadata\": {\n \"name\": \"admin_contract\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Admin contract for XMarket — whitelist, presale revenue custody, claim\"\n },\n \"instructions\": [\n {\n \"name\": \"add_admin\",\n \"discriminator\": [\n 177,\n 236,\n 33,\n 205,\n 124,\n 152,\n 55,\n 186\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 100,\n 109,\n 105,\n 110,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"AdminConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"add_to_whitelist\",\n \"discriminator\": [\n 157,\n 211,\n 52,\n 54,\n 144,\n 81,\n 5,\n 55\n ],\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 100,\n 109,\n 105,\n 110,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"AdminConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"claim\",\n \"discriminator\": [\n 62,\n 198,\n 214,\n 193,\n 213,\n 159,\n 108,\n 210\n ],\n \"accounts\": [\n {\n \"name\": \"claimer\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 100,\n 109,\n 105,\n 110,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"AdminConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"admin_vault\",\n \"docs\": [\n \"ATA owned by config PDA\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"config\"\n },\n {\n \"kind\": \"const\",\n \"value\": [\n 6,\n 221,\n 246,\n 225,\n 215,\n 101,\n 161,\n 147,\n 217,\n 203,\n 225,\n 70,\n 206,\n 235,\n 121,\n 172,\n 28,\n 180,\n 133,\n 237,\n 95,\n 91,\n 55,\n 145,\n 58,\n 140,\n 245,\n 133,\n 126,\n 255,\n 0,\n 169\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.collateral_mint\",\n \"account\": \"AdminConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"claim_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 97,\n 105,\n 109,\n 95,\n 114,\n 101,\n 99,\n 111,\n 114,\n 100\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ]\n }\n },\n {\n \"name\": \"claimer_token_account\",\n \"docs\": [\n \"Claimer's USDC token account (receives payout)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"distribute_market\",\n \"discriminator\": [\n 130,\n 221,\n 123,\n 201,\n 185,\n 168,\n 63,\n 19\n ],\n \"accounts\": [\n {\n \"name\": \"claimer\",\n \"docs\": [\n \"BOTMM — must be in whitelist\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 100,\n 109,\n 105,\n 110,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"AdminConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"claimer_token_account\",\n \"docs\": [\n \"BOTMM's USDC token account (source — claimer signs)\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"market_oracle_vault\",\n \"docs\": [\n \"market_oracle vault — MST holder reward pool for this condition\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"initialize\",\n \"discriminator\": [\n 175,\n 175,\n 109,\n 31,\n 13,\n 152,\n 155,\n 237\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 100,\n 109,\n 105,\n 110,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"collateral_mint\"\n },\n {\n \"name\": \"admin_vault\",\n \"docs\": [\n \"ATA owned by config PDA — holds USDC for unclaimed presale revenue\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"config\"\n },\n {\n \"kind\": \"const\",\n \"value\": [\n 6,\n 221,\n 246,\n 225,\n 215,\n 101,\n 161,\n 147,\n 217,\n 203,\n 225,\n 70,\n 206,\n 235,\n 121,\n 172,\n 28,\n 180,\n 133,\n 237,\n 95,\n 91,\n 55,\n 145,\n 58,\n 140,\n 245,\n 133,\n 126,\n 255,\n 0,\n 169\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"collateral_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"authorized_caller\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"remove_admin\",\n \"discriminator\": [\n 74,\n 202,\n 71,\n 106,\n 252,\n 31,\n 72,\n 183\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 100,\n 109,\n 105,\n 110,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"AdminConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"remove_from_whitelist\",\n \"discriminator\": [\n 7,\n 144,\n 216,\n 239,\n 243,\n 236,\n 193,\n 235\n ],\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 100,\n 109,\n 105,\n 110,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"AdminConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"set_presale_amount\",\n \"discriminator\": [\n 73,\n 71,\n 238,\n 3,\n 202,\n 163,\n 8,\n 254\n ],\n \"accounts\": [\n {\n \"name\": \"caller\",\n \"docs\": [\n \"question_market config PDA — signs this CPI call via seeds\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 100,\n 109,\n 105,\n 110,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"AdminConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"claim_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 108,\n 97,\n 105,\n 109,\n 95,\n 114,\n 101,\n 99,\n 111,\n 114,\n 100\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"update_config\",\n \"discriminator\": [\n 29,\n 158,\n 252,\n 191,\n 10,\n 83,\n 219,\n 99\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 100,\n 109,\n 105,\n 110,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"config.owner\",\n \"account\": \"AdminConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"authorized_caller\",\n \"type\": \"pubkey\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"AdminConfig\",\n \"discriminator\": [\n 156,\n 10,\n 79,\n 161,\n 71,\n 9,\n 62,\n 77\n ]\n },\n {\n \"name\": \"ClaimRecord\",\n \"discriminator\": [\n 57,\n 229,\n 0,\n 9,\n 65,\n 62,\n 96,\n 7\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"AdminConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"collateral_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authorized_caller\",\n \"docs\": [\n \"question_market config PDA — only this can call set_presale_amount\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"admin_whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 10\n ]\n }\n },\n {\n \"name\": \"admin_whitelist_len\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 30\n ]\n }\n },\n {\n \"name\": \"whitelist_len\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"ClaimRecord\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n }\n ]\n}","import * as anchor from \"@coral-xyz/anchor\";\nimport { Connection, PublicKey } from \"@solana/web3.js\";\nimport { NetworkConfig, ProgramIds } from \"./config/networks\";\nimport { OracleClient } from \"./programs/oracle\";\nimport { HookClient } from \"./programs/hook\";\nimport { MarketClient } from \"./programs/market\";\nimport { CtfClient } from \"./programs/ctf\";\nimport { ClobClient } from \"./programs/clob\";\nimport { FeeManagementClient } from \"./programs/fee_management\";\nimport { PresaleClient } from \"./programs/presale\";\nimport { MarketOracleClient } from \"./programs/market_oracle\";\nimport { AdminClient } from \"./programs/admin\";\n\nimport oracleIdl from \"./idls/oracle.json\";\nimport hookIdl from \"./idls/hook.json\";\nimport questionMarketIdl from \"./idls/question_market.json\";\nimport conditionalTokensIdl from \"./idls/conditional_tokens.json\";\nimport clobExchangeIdl from \"./idls/clob_exchange.json\";\nimport feeManagementIdl from \"./idls/fee_management.json\";\nimport presaleIdl from \"./idls/presale.json\";\nimport marketOracleIdl from \"./idls/market_oracle.json\";\nimport adminContractIdl from \"./idls/admin_contract.json\";\n\nexport class XMarketSDK {\n readonly provider: anchor.AnchorProvider;\n readonly networkConfig: NetworkConfig;\n\n private readonly _programIds: ProgramIds;\n private readonly _marketOwner: PublicKey;\n\n private _oracle?: OracleClient;\n private _hook?: HookClient;\n private _market?: MarketClient;\n private _ctf?: CtfClient;\n private _clob?: ClobClient;\n private _fee?: FeeManagementClient;\n private _presale?: PresaleClient;\n private _marketOracle?: MarketOracleClient;\n private _admin?: AdminClient; // lazy-init in get admin()\n\n constructor(\n config: NetworkConfig,\n wallet: anchor.Wallet,\n marketOwner?: PublicKey,\n ) {\n this.networkConfig = config;\n this.provider = new anchor.AnchorProvider(\n new Connection(config.rpcUrl, \"confirmed\"),\n wallet,\n { commitment: \"confirmed\", preflightCommitment: \"confirmed\" },\n );\n anchor.setProvider(this.provider);\n this._programIds = config.programIds;\n this._marketOwner = marketOwner ?? wallet.publicKey;\n }\n\n private _withAddress(idl: object, address: PublicKey): anchor.Idl {\n return { ...idl, address: address.toBase58() } as anchor.Idl;\n }\n\n get oracle(): OracleClient {\n if (!this._oracle) {\n const program = new anchor.Program(this._withAddress(oracleIdl, this._programIds.oracle), this.provider);\n this._oracle = new OracleClient(program, this.provider, this._programIds);\n }\n return this._oracle;\n }\n\n get hook(): HookClient {\n if (!this._hook) {\n const program = new anchor.Program(this._withAddress(hookIdl, this._programIds.hook), this.provider);\n this._hook = new HookClient(program, this.provider, this._programIds);\n }\n return this._hook;\n }\n\n get market(): MarketClient {\n if (!this._market) {\n const program = new anchor.Program(this._withAddress(questionMarketIdl, this._programIds.questionMarket), this.provider);\n this._market = new MarketClient(program, this.provider, this._programIds, this._marketOwner);\n this._market.ctfClient = this.ctf;\n }\n return this._market;\n }\n\n get ctf(): CtfClient {\n if (!this._ctf) {\n const program = new anchor.Program(this._withAddress(conditionalTokensIdl, this._programIds.conditionalTokens), this.provider);\n this._ctf = new CtfClient(program, this.provider, this._programIds);\n }\n return this._ctf;\n }\n\n get clob(): ClobClient {\n if (!this._clob) {\n const program = new anchor.Program(this._withAddress(clobExchangeIdl, this._programIds.clobExchange), this.provider);\n this._clob = new ClobClient(program, this.provider, this._programIds, this.networkConfig);\n if (this.networkConfig.feeConfigOwner && this._programIds.feeManagement) {\n this._clob.feeConfigOwner = this.networkConfig.feeConfigOwner;\n this._clob.feeClient = this.fee;\n }\n }\n return this._clob;\n }\n\n get fee(): FeeManagementClient {\n if (!this._fee) {\n if (!this._programIds.feeManagement) throw new Error(\"feeManagement program ID not configured in NetworkConfig\");\n const program = new anchor.Program(this._withAddress(feeManagementIdl, this._programIds.feeManagement), this.provider);\n this._fee = new FeeManagementClient(program, this.provider, this._programIds);\n }\n return this._fee;\n }\n\n get presale(): PresaleClient {\n if (!this._presale) {\n if (!this._programIds.presale) throw new Error(\"presale program ID not configured in NetworkConfig\");\n const program = new anchor.Program(this._withAddress(presaleIdl, this._programIds.presale), this.provider);\n this._presale = new PresaleClient(program, this.provider, this._programIds);\n }\n return this._presale;\n }\n\n get marketOracle(): MarketOracleClient {\n if (!this._marketOracle) {\n if (!this._programIds.marketOracle) throw new Error(\"marketOracle program ID not configured in NetworkConfig\");\n const program = new anchor.Program(this._withAddress(marketOracleIdl, this._programIds.marketOracle), this.provider);\n this._marketOracle = new MarketOracleClient(program, this.provider, this._programIds);\n }\n return this._marketOracle;\n }\n\n get admin(): AdminClient {\n if (!this._admin) {\n if (!this._programIds.adminContract) throw new Error(\"adminContract program ID not configured in NetworkConfig\");\n const program = new anchor.Program(this._withAddress(adminContractIdl, this._programIds.adminContract), this.provider);\n this._admin = new AdminClient(program, this.provider, this._programIds);\n }\n return this._admin;\n }\n}\n","/**\n * SPL Token / Token-2022 approve utilities for the CLOB matching flow.\n *\n * Before a match instruction can transfer tokens on behalf of a user, the user\n * must approve the CLOB config PDA as a delegate. These helpers build the\n * approve transactions that need two signers:\n * - signer = the token owner (user wallet — must sign the approve instruction)\n * - payer = the BE wallet (pays transaction fees)\n *\n * Both must sign the resulting Transaction before sending.\n */\nimport {\n PublicKey,\n Transaction,\n} from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n createApproveInstruction,\n createAssociatedTokenAccountIdempotentInstruction,\n} from \"@solana/spl-token\";\nimport BN from \"bn.js\";\nimport { PDA } from \"./pda\";\nimport { ProgramIds } from \"./config/networks\";\n\n/** Maximum u64 — approve \"unlimited\" amount. */\nexport const MAX_APPROVE_AMOUNT = new BN(\"18446744073709551615\");\n\n// ─── User ATA creation ────────────────────────────────────────────────────────\n\n/**\n * Build a Transaction that creates YES and NO Token-2022 ATAs for a user\n * (idempotent — safe to call even if they already exist).\n *\n * Required signer: payer (fee payer). No user signature needed.\n *\n * @param condition - condition PDA\n * @param user - wallet that will own the ATAs\n * @param payer - fee payer wallet pubkey\n * @param programIds - network program IDs\n */\nexport function buildCreateUserAtasTx(\n condition: PublicKey,\n user: PublicKey,\n payer: PublicKey,\n programIds: ProgramIds,\n): Transaction {\n const [yesMint] = PDA.yesMint(condition, programIds);\n const [noMint] = PDA.noMint(condition, programIds);\n\n const yesAta = getAssociatedTokenAddressSync(yesMint, user, false, TOKEN_2022_PROGRAM_ID);\n const noAta = getAssociatedTokenAddressSync(noMint, user, false, TOKEN_2022_PROGRAM_ID);\n\n const tx = new Transaction();\n tx.feePayer = payer;\n tx.add(\n createAssociatedTokenAccountIdempotentInstruction(\n payer, yesAta, user, yesMint, TOKEN_2022_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID,\n ),\n createAssociatedTokenAccountIdempotentInstruction(\n payer, noAta, user, noMint, TOKEN_2022_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID,\n ),\n );\n return tx;\n}\n\n// ─── Collateral (SPL Token) approve ──────────────────────────────────────────\n\n/**\n * Build a Transaction that approves the CLOB config PDA to transfer collateral\n * (USDC) from the signer's ATA.\n *\n * Required signers: signer (token owner), payer (fee payer).\n *\n * @param collateralMint - e.g. USDC mint\n * @param signer - token owner (must sign)\n * @param payer - fee payer wallet pubkey\n * @param delegate - clob config PDA (the spender)\n * @param amount - amount to approve (defaults to MAX_APPROVE_AMOUNT)\n */\nexport function buildApproveCollateralTx(\n collateralMint: PublicKey,\n signer: PublicKey,\n payer: PublicKey,\n delegate: PublicKey,\n amount: BN = MAX_APPROVE_AMOUNT,\n): Transaction {\n const ownerAta = getAssociatedTokenAddressSync(collateralMint, signer, false, TOKEN_PROGRAM_ID);\n const approveIx = createApproveInstruction(\n ownerAta,\n delegate,\n signer,\n BigInt(amount.toString()),\n [],\n TOKEN_PROGRAM_ID,\n );\n const tx = new Transaction();\n tx.feePayer = payer;\n tx.add(approveIx);\n return tx;\n}\n\n/**\n * Build a Transaction that approves the CLOB config PDA to transfer BOTH\n * YES and NO outcome tokens from the signer's ATAs (two approve instructions).\n *\n * Required signers: signer (token owner), payer (fee payer).\n */\nexport function buildApproveAllOutcomeTokensTx(\n condition: PublicKey,\n signer: PublicKey,\n payer: PublicKey,\n delegate: PublicKey,\n programIds: ProgramIds,\n amount: BN = MAX_APPROVE_AMOUNT,\n): Transaction {\n const [yesMint] = PDA.yesMint(condition, programIds);\n const [noMint] = PDA.noMint(condition, programIds);\n\n const yesAta = getAssociatedTokenAddressSync(yesMint, signer, false, TOKEN_2022_PROGRAM_ID);\n const noAta = getAssociatedTokenAddressSync(noMint, signer, false, TOKEN_2022_PROGRAM_ID);\n const amountBig = BigInt(amount.toString());\n\n const approveYesIx = createApproveInstruction(\n yesAta, delegate, signer, amountBig, [], TOKEN_2022_PROGRAM_ID,\n );\n const approveNoIx = createApproveInstruction(\n noAta, delegate, signer, amountBig, [], TOKEN_2022_PROGRAM_ID,\n );\n\n const tx = new Transaction();\n tx.feePayer = payer;\n tx.add(approveYesIx, approveNoIx);\n return tx;\n}\n"]}
|