@theliem/xmarket-sdk 4.0.3 → 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +5 -2
- package/dist/index.d.ts +5 -2
- package/dist/index.js +127 -50
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +127 -50
- 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/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/programs/referral.ts","../src/programs/dispute.ts","../src/idls/oracle.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/idls/referral.json","../src/idls/dispute.json","../src/sdk.ts","../src/approve.ts"],"names":["anchor","QuestionStatus","PublicKey","SystemProgram","anchor2","TOKEN_PROGRAM_ID","SYSVAR_RENT_PUBKEY","getAssociatedTokenAddressSync","ASSOCIATED_TOKEN_PROGRAM_ID","Transaction","anchor3","TransactionInstruction","BN","aBuy","bBuy","createAssociatedTokenAccountIdempotentInstruction","Ed25519Program","SYSVAR_INSTRUCTIONS_PUBKEY","ComputeBudgetProgram","TransactionMessage","VersionedTransaction","anchor4","nacl","oracleVaultInitIx","preIxs","ixs","anchor5"],"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 clobConfig: Buffer.from(\"clob_config\"),\n order: Buffer.from(\"order\"),\n feeConfig: Buffer.from(\"fee_config\"),\n referralConfig: Buffer.from(\"referral_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 // Dispute\n disputeConfig: Buffer.from(\"dispute_config\"),\n disputeMarket: Buffer.from(\"dispute_market\"),\n userDispute: Buffer.from(\"user_dispute\"),\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 // ─── 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 static collectFeeOrderRecord(\n user: 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(\"collect_order\"), user.toBuffer(), nonceBuf],\n programIds.clobExchange\n );\n }\n\n static redeemFeeOrderRecord(\n user: 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(\"redeem_fee_order\"), user.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 // ─── Referral Program ────────────────────────────────────────────────────\n\n static referralConfig(\n owner: PublicKey,\n programIds: Pick<ProgramIds, \"referral\">\n ): [PublicKey, number] {\n if (!programIds.referral) throw new Error(\"referral program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.referralConfig, owner.toBuffer()],\n programIds.referral\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 // ─── Dispute ─────────────────────────────────────────────────────────────\n\n static disputeConfig(\n owner: PublicKey,\n programIds: Pick<ProgramIds, \"dispute\">\n ): [PublicKey, number] {\n if (!programIds.dispute) throw new Error(\"dispute program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.disputeConfig, owner.toBuffer()],\n programIds.dispute\n );\n }\n\n static disputeMarket(\n conditionId: Uint8Array,\n programIds: Pick<ProgramIds, \"dispute\">\n ): [PublicKey, number] {\n if (!programIds.dispute) throw new Error(\"dispute program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.disputeMarket, Buffer.from(conditionId)],\n programIds.dispute\n );\n }\n\n static userDispute(\n user: PublicKey,\n conditionId: Uint8Array,\n programIds: Pick<ProgramIds, \"dispute\">\n ): [PublicKey, number] {\n if (!programIds.dispute) throw new Error(\"dispute program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.userDispute, user.toBuffer(), Buffer.from(conditionId)],\n programIds.dispute\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 registers a reporter PDA. */\n async addReporter(\n reporterAddress: PublicKey,\n ownerPubkey?: PublicKey,\n ): Promise<TxResult> {\n const oracleConfig = this.configPda(ownerPubkey);\n const [reporterPda] = PDA.reporter(oracleConfig, reporterAddress, this.programIds);\n const sig = await this.program.methods\n .addReporter()\n .accounts({\n authority: this.walletPubkey,\n oracleConfig,\n reporterAddress,\n reporter: reporterPda,\n systemProgram: SystemProgram.programId,\n })\n .rpc();\n return { signature: sig };\n }\n\n /** Admin or owner removes a reporter PDA. */\n async removeReporter(\n reporterAddress: PublicKey,\n ownerPubkey?: PublicKey,\n ): Promise<TxResult> {\n const oracleConfig = this.configPda(ownerPubkey);\n const [reporterPda] = PDA.reporter(oracleConfig, reporterAddress, this.programIds);\n const sig = await this.program.methods\n .removeReporter()\n .accounts({\n authority: this.walletPubkey,\n oracleConfig,\n reporterAddress,\n reporter: reporterPda,\n systemProgram: SystemProgram.programId,\n })\n .rpc();\n return { signature: sig };\n }\n\n /**\n * Registered reporter resolves a question.\n * reporterSigner signs; payer covers rent for question_result PDA.\n */\n async resolveQuestion(\n questionId: Uint8Array,\n outcomeCount: number,\n payoutNumerators: number[],\n reporterSigner: PublicKey = this.walletPubkey,\n payer: PublicKey = this.walletPubkey,\n ownerPubkey?: PublicKey,\n ): Promise<Transaction> {\n const oracleConfig = this.configPda(ownerPubkey);\n const [reporterPda] = PDA.reporter(oracleConfig, reporterSigner, this.programIds);\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 reporterSigner,\n oracleConfig,\n reporter: reporterPda,\n questionResult: questionResultPda,\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 reporterCount: acc.reporterCount.toNumber(),\n isPaused: acc.isPaused,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n /** Check if an address is a registered reporter (Reporter PDA exists). */\n async isReporter(\n reporterAddress: PublicKey,\n ownerPubkey?: PublicKey,\n ): Promise<boolean> {\n try {\n const oracleConfig = this.configPda(ownerPubkey);\n const [reporterPda] = PDA.reporter(oracleConfig, reporterAddress, this.programIds);\n const info = await this.provider.connection.getAccountInfo(reporterPda);\n return info !== null;\n } catch {\n return false;\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 { 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 reporterCount: 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 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 /** 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// ─── CLOB Exchange ────────────────────────────────────────────────────────────\n\nexport interface ClobConfig {\n admin: 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/** Authorization for CLOB to collect fee_amount winning tokens after question resolution. */\nexport interface CollectFeeOrder {\n user: PublicKey;\n condition: PublicKey;\n tokenMint: PublicKey;\n amount: BN;\n nonce: BN;\n /** Unix timestamp, 0 = no expiry */\n expiry: BN;\n}\n\nexport interface SignedCollectFeeOrder {\n order: CollectFeeOrder;\n /** Ed25519 signature (64 bytes) from order.user over serializeCollectFeeOrderToBytes() */\n signature: Uint8Array;\n}\n\n/**\n * Authorization for CLOB to collect YES or NO tokens for redeem/merge, returning net USDS after fee.\n * Used with batchRedeemWithFee and batchMergeWithFee instructions.\n */\nexport interface RedeemFeeOrder {\n user: PublicKey;\n condition: PublicKey;\n tokenMint: PublicKey;\n amount: BN;\n /** Net USDS to receive back after fee deduction. 0 for the losing side. */\n takerAmount: BN;\n nonce: BN;\n expiry: BN;\n}\n\nexport interface SignedRedeemFeeOrder {\n order: RedeemFeeOrder;\n /** Ed25519 signature (64 bytes) from order.user over serializeRedeemFeeOrderToBytes() */\n signature: Uint8Array;\n}\n\n/** A pair of YES + NO orders for one user in batchRedeemWithFee / batchMergeWithFee. */\nexport interface RedeemFeeOrderPair {\n yes: SignedRedeemFeeOrder;\n no: SignedRedeemFeeOrder;\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 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 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 /** Injected by XMarketSDK — fee config owner (= market owner) for MarketFeeOverride PDA derivation */\n feeConfigOwner?: PublicKey;\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: import(\"../types\").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 if (!this.feeConfigOwner) throw new Error(\"feeConfigOwner not configured\");\n const [questionFeePda] = PDA.questionFee(conditionPda, this.programIds);\n const [feeConfigPda] = PDA.feeConfig(this.feeConfigOwner, this.programIds);\n const [marketFeeOverride] = PDA.marketFeeOverride(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 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 feeConfig: feeConfigPda,\n marketFeeOverride,\n feeManagementProgram: this.programIds.feeManagement,\n tokenProgram: TOKEN_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 async bumpPresaleCount(\n count: number,\n authority: PublicKey,\n ): Promise<Transaction> {\n return this.program.methods\n .bumpPresaleCount(new anchor.BN(count))\n .accounts({ authority, config: this.configPda })\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[]).slice(0, acc.whitelistLen),\n whitelistLen: acc.whitelistLen,\n isPaused: acc.isPaused,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n /** Check if address is in question_market whitelist (can call createQuestion) */\n async isWhitelisted(address: PublicKey): Promise<boolean> {\n const cfg = await this.fetchConfig();\n return cfg?.whitelist.some(k => k.equals(address)) ?? false;\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 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 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, 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 const [claimRecord] = PDA.claimRecord(conditionPda.toBytes(), this.programIds);\n const feeConfigOwner = this.feeConfigOwner ?? adminOwner;\n const [feeConfigPda] = PDA.feeConfig(feeConfigOwner, this.programIds);\n const [marketFeeOverride] = PDA.marketFeeOverride(conditionPda, this.programIds);\n\n const builder = this.program.methods\n .approvePresale({\n contentHash: Array.from(contentHash) as number[],\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 feeConfig: feeConfigPda,\n marketFeeOverride,\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 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 * Resolve a question by reading the oracle question_result PDA and updating the CTF condition.\n * Must be called after sdk.oracle.resolveQuestion records the result.\n * Caller must be on the question_market whitelist.\n */\n async resolveQuestion(\n questionId: Uint8Array,\n conditionPda: PublicKey,\n oracleOwner: PublicKey,\n payer: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n if (!this.programIds.oracle) throw new Error(\"oracle program ID not configured\");\n const [questionPda] = PDA.question(this.configPda, questionId, this.programIds);\n const oracleConfigPda = PDA.oracleConfig(oracleOwner, this.programIds)[0];\n const [questionResult] = PDA.questionResult(oracleConfigPda, questionId, this.programIds);\n return this.program.methods\n .resolveQuestion(Array.from(questionId) as number[])\n .accounts({\n payer,\n config: this.configPda,\n question: questionPda,\n questionResult,\n condition: conditionPda,\n ctfProgram: this.programIds.conditionalTokens,\n oracleProgram: this.programIds.oracle,\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 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 * V2: uses plain SPL TOKEN_PROGRAM_ID for YES/NO mints — no hook program.\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 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 authorizedClob\n )\n .accounts({\n oracle,\n condition: conditionPda,\n yesMint,\n noMint,\n mintAuthority,\n collateralMint,\n collateralVault,\n payer,\n tokenProgram: TOKEN_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 [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 payer: this.walletPubkey,\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 * V2: uses TOKEN_PROGRAM_ID for YES/NO mints (plain SPL, no Token-2022).\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_PROGRAM_ID);\n const userNoAta = getAssociatedTokenAddressSync(noMint, user, false, TOKEN_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 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 * V2: uses TOKEN_PROGRAM_ID for YES/NO mints (plain SPL, no Token-2022).\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_PROGRAM_ID);\n const userNoAta = getAssociatedTokenAddressSync(noMint, user, false, TOKEN_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 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 * V2: uses TOKEN_PROGRAM_ID for YES/NO mints (plain SPL, no Token-2022).\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_PROGRAM_ID);\n const userNoAta = getAssociatedTokenAddressSync(noMint, user, false, TOKEN_PROGRAM_ID);\n const userCollateral = getAssociatedTokenAddressSync(collateralMint, user);\n\n const createYesAtaIx = createAssociatedTokenAccountIdempotentInstruction(\n payer, userYesAta, user, yesMint, TOKEN_PROGRAM_ID,\n );\n const createNoAtaIx = createAssociatedTokenAccountIdempotentInstruction(\n payer, userNoAta, user, noMint, TOKEN_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 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 * V2: uses TOKEN_PROGRAM_ID (plain SPL) for outcome mints.\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 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 tokenProgram: TOKEN_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 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 { CollectFeeOrder, Order, RedeemFeeOrder, SignedCollectFeeOrder, SignedOrder, SignedRedeemFeeOrder } 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 */\n// ─── CollectFeeOrder serialization ───────────────────────────────────────────\n\n/**\n * Serialize a CollectFeeOrder to 120 bytes — must match Rust `CollectFeeOrder::to_signable_bytes()`.\n * [0..32] user pubkey\n * [32..64] condition pubkey\n * [64..96] token_mint pubkey\n * [96..104] amount (u64 le)\n * [104..112] nonce (u64 le)\n * [112..120] expiry (i64 le)\n */\nexport function serializeCollectFeeOrderToBytes(order: CollectFeeOrder): Uint8Array {\n const buf = new Uint8Array(120);\n buf.set(order.user.toBytes(), 0);\n buf.set(order.condition.toBytes(), 32);\n buf.set(order.tokenMint.toBytes(), 64);\n buf.set(order.amount.toArrayLike(Buffer, \"le\", 8), 96);\n buf.set(order.nonce.toArrayLike(Buffer, \"le\", 8), 104);\n buf.set(order.expiry.toArrayLike(Buffer, \"le\", 8), 112);\n return buf;\n}\n\n/**\n * Build a batched Ed25519 precompile instruction for N signed CollectFeeOrders.\n * Same layout as buildBatchedEd25519Instruction but with 120-byte messages.\n */\nexport function buildBatchedCollectFeeEd25519Instruction(\n orders: SignedCollectFeeOrder[],\n): TransactionInstruction {\n const N = orders.length;\n if (N === 0) throw new Error(\"At least 1 order required\");\n\n const MSG_SIZE = 120;\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);\n data.writeUInt16LE(0xffff, e + 2);\n data.writeUInt16LE(pkBase + i * PK_SIZE, e + 4);\n data.writeUInt16LE(0xffff, e + 6);\n data.writeUInt16LE(msgBase + i * MSG_SIZE, e + 8);\n data.writeUInt16LE(MSG_SIZE, e + 10);\n data.writeUInt16LE(0xffff, e + 12);\n\n data.set(orders[i].signature, sigBase + i * SIG_SIZE);\n data.set(orders[i].order.user.toBytes(), pkBase + i * PK_SIZE);\n data.set(serializeCollectFeeOrderToBytes(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// ─── RedeemFeeOrder serialization ────────────────────────────────────────────\n\n/**\n * Serialize a RedeemFeeOrder to 128 bytes — must match Rust `RedeemFeeOrder::to_signable_bytes()`.\n * [0..32] user pubkey\n * [32..64] condition pubkey\n * [64..96] token_mint pubkey\n * [96..104] amount (u64 le)\n * [104..112] taker_amount (u64 le)\n * [112..120] nonce (u64 le)\n * [120..128] expiry (i64 le)\n */\nexport function serializeRedeemFeeOrderToBytes(order: RedeemFeeOrder): Uint8Array {\n const buf = new Uint8Array(128);\n buf.set(order.user.toBytes(), 0);\n buf.set(order.condition.toBytes(), 32);\n buf.set(order.tokenMint.toBytes(), 64);\n buf.set(order.amount.toArrayLike(Buffer, \"le\", 8), 96);\n buf.set(order.takerAmount.toArrayLike(Buffer, \"le\", 8), 104);\n buf.set(order.nonce.toArrayLike(Buffer, \"le\", 8), 112);\n buf.set(order.expiry.toArrayLike(Buffer, \"le\", 8), 120);\n return buf;\n}\n\n/**\n * Build a batched Ed25519 precompile instruction for N signed RedeemFeeOrders.\n * Same layout as buildBatchedCollectFeeEd25519Instruction but with 128-byte messages.\n */\nexport function buildBatchedRedeemFeeEd25519Instruction(\n orders: SignedRedeemFeeOrder[],\n): TransactionInstruction {\n const N = orders.length;\n if (N === 0) throw new Error(\"At least 1 order required\");\n\n const MSG_SIZE = 128;\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);\n data.writeUInt16LE(0xffff, e + 2);\n data.writeUInt16LE(pkBase + i * PK_SIZE, e + 4);\n data.writeUInt16LE(0xffff, e + 6);\n data.writeUInt16LE(msgBase + i * MSG_SIZE, e + 8);\n data.writeUInt16LE(MSG_SIZE, e + 10);\n data.writeUInt16LE(0xffff, e + 12);\n\n data.set(orders[i].signature, sigBase + i * SIG_SIZE);\n data.set(orders[i].order.user.toBytes(), pkBase + i * PK_SIZE);\n data.set(serializeRedeemFeeOrderToBytes(orders[i].order), msgBase + i * MSG_SIZE);\n }\n\n return new TransactionInstruction({\n keys: [],\n programId: Ed25519Program.programId,\n data,\n });\n}\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 Transaction,\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 ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n createAssociatedTokenAccountIdempotentInstruction,\n} from \"@solana/spl-token\";\nimport { PDA } from \"../pda\";\nimport { ProgramIds } from \"../config/networks\";\nimport {\n ClobConfig, OrderStatus, SignedCollectFeeOrder, SignedOrder, TxResult, InvalidParamError,\n RedeemFeeOrderPair, SignedRedeemFeeOrder,\n} from \"../types\";\nimport {\n buildBatchedCollectFeeEd25519Instruction,\n buildBatchedEd25519Instruction,\n buildBatchedRedeemFeeEd25519Instruction,\n IX_SYSVAR,\n serializeOrderToBytes,\n} from \"../signing\";\nimport { buildOrderFromPrice } from \"../order\";\nimport type { FeeManagementClient } from \"./fee_management\";\nimport type { CtfClient } from \"./ctf\";\n\n/**\n * ClobClient — V2 variant of the CLOB client.\n * Key differences from the old v1 ClobClient:\n * - No hookClient dependency (Token-2022 hook removed)\n * - YES/NO token ATAs use TOKEN_PROGRAM_ID (plain SPL) instead of TOKEN_2022_PROGRAM_ID\n * - No hook accounts in remainingAccounts for any match instruction\n * - No extraAccountMetaList / hookConfig PDAs included in ALTs or remainingAccounts\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 /** Injected by XMarketSDK — enables auto-derive of marketOracleVault for presale markets */\n ctfClient?: CtfClient;\n qmConfigPda?: PublicKey;\n\n /** Cached company_address from fee_config to avoid repeated RPC calls */\n private _companyAddress?: PublicKey;\n /** Cached referral_vault from fee_config */\n private _referralVault?: PublicKey;\n /** Cache: conditionPda.toBase58() → marketOracleVault ATA */\n private _marketOracleVaultCache = new Map<string, 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) {\n this._companyAddress = cfg.companyAddress;\n this._referralVault = cfg.referralVault;\n }\n }\n return this._companyAddress;\n }\n\n private async referralVault(): Promise<PublicKey | undefined> {\n await this.companyAddress(); // populates _referralVault as side-effect\n return this._referralVault;\n }\n\n /**\n * Derive marketOracleVault ATA for a condition, cached per condition.\n * Works for presale markets (market_oracle initialized by approvePresale).\n * Returns undefined if ctfClient/qmConfigPda not injected or marketOracle not configured.\n */\n private async getMarketOracleVault(\n condition: PublicKey,\n collateralMint: PublicKey,\n ): Promise<PublicKey | undefined> {\n if (!this.ctfClient || !this.qmConfigPda || !this.programIds.marketOracle) return undefined;\n const key = condition.toBase58();\n const cached = this._marketOracleVaultCache.get(key);\n if (cached) return cached;\n const cond = await this.ctfClient.fetchCondition(condition);\n if (!cond) return undefined;\n const [questionPda] = PDA.question(this.qmConfigPda, cond.questionId, this.programIds);\n const [marketOraclePda] = PDA.marketOraclePda(questionPda, this.programIds);\n const vault = getAssociatedTokenAddressSync(collateralMint, marketOraclePda, true);\n this._marketOracleVaultCache.set(key, vault);\n return vault;\n }\n\n /**\n * Returns a createATA ix for the oracle vault when:\n * - takerFee > 0\n * - marketFeeOverride exists for the condition\n * - oracle vault ATA is not yet initialized\n * Idempotent — safe to call every tx; returns null if vault already exists.\n */\n private async buildInitOracleVaultIfNeeded(\n condition: PublicKey,\n collateralMint: PublicKey,\n takerFee: anchor.BN,\n payer: PublicKey,\n ): Promise<TransactionInstruction | null> {\n if (takerFee.isZero()) return null;\n if (!this.feeConfigOwner || !this.programIds.feeManagement) return null;\n if (!this.ctfClient || !this.qmConfigPda || !this.programIds.marketOracle) return null;\n\n const companyAddr = await this.companyAddress();\n const refVault = await this.referralVault();\n if (!companyAddr || !refVault) return null;\n\n const feeOverridePda = PDA.marketFeeOverride(condition, this.programIds)[0];\n const cond = await this.ctfClient.fetchCondition(condition);\n if (!cond) return null;\n\n const [questionPda] = PDA.question(this.qmConfigPda, cond.questionId, this.programIds);\n const [marketOraclePda] = PDA.marketOraclePda(questionPda, this.programIds);\n const vault = getAssociatedTokenAddressSync(collateralMint, marketOraclePda, true);\n\n const [feeOverrideInfo, vaultInfo] = await Promise.all([\n this.provider.connection.getAccountInfo(feeOverridePda),\n this.provider.connection.getAccountInfo(vault),\n ]);\n\n if (!feeOverrideInfo) return null; // no fee override → distribute_fee not called\n if (vaultInfo) return null; // vault already exists → no init needed\n\n return createAssociatedTokenAccountIdempotentInstruction(\n payer, vault, marketOraclePda, collateralMint,\n );\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 * V2: no hook accounts — TOKEN_2022_PROGRAM_ID and hook PDAs are excluded.\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 [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 TOKEN_PROGRAM_ID,\n SystemProgram.programId,\n SYSVAR_INSTRUCTIONS_PUBKEY,\n clobConfigPda,\n condition,\n yesMint,\n noMint,\n taker,\n getAssociatedTokenAddressSync(collateralMint, taker),\n getAssociatedTokenAddressSync(outcomeMint, taker, false, TOKEN_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 clobUsdcAta = getAssociatedTokenAddressSync(collateralMint, clobConfigPda, true);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfigPda, true, TOKEN_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfigPda, true, TOKEN_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,\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_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 const refVault = await this.referralVault();\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 const oracleVaultForAlt = await this.getMarketOracleVault(condition, collateralMint) ?? payer;\n addresses.push(oracleVaultForAlt);\n if (refVault) {\n addresses.push(refVault);\n }\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_PROGRAM_ID,\n ));\n }\n if (!noInfo) {\n ixs.push(createAssociatedTokenAccountIdempotentInstruction(\n this.walletPubkey, clobNoAta, clobConfig, noMint, TOKEN_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 // ─── Register CollectFeeOrder ────────────────────────────────────────────────\n\n /**\n * Build a legacy Transaction to register a CollectFeeOrder on-chain.\n * Must be signed and sent before calling buildBatchCollectRedeemEarlyTx.\n *\n * Flow: [Ed25519 ix (1 user sig) + register_collect_fee_order ix]\n * Caller signs with payer keypair and sends.\n */\n async buildRegisterCollectFeeOrderTx(\n signedOrder: SignedCollectFeeOrder,\n payer: PublicKey,\n ): Promise<Transaction> {\n const { order } = signedOrder;\n const [collectFeeOrderRecord] = PDA.collectFeeOrderRecord(order.user, order.nonce, this.programIds);\n\n const ed25519Ix = buildBatchedCollectFeeEd25519Instruction([signedOrder]);\n const registerIx = await this.program.methods\n .registerCollectFeeOrder(order.nonce)\n .accounts({\n payer,\n clobConfig: this.configPda(),\n ixSysvar: IX_SYSVAR,\n orderSigner: order.user,\n collectFeeOrderRecord,\n systemProgram: SystemProgram.programId,\n })\n .instruction();\n\n const { blockhash } = await this.provider.connection.getLatestBlockhash();\n const tx = new Transaction();\n tx.recentBlockhash = blockhash;\n tx.feePayer = payer;\n tx.add(ed25519Ix, registerIx);\n return tx;\n }\n\n /**\n * Register a CollectFeeOrder on-chain and send immediately (operator-signed flow).\n * Idempotent — skips if PDA already exists.\n */\n async registerCollectFeeOrderIfNeeded(signedOrder: SignedCollectFeeOrder): Promise<void> {\n const [pda] = PDA.collectFeeOrderRecord(\n signedOrder.order.user,\n signedOrder.order.nonce,\n this.programIds,\n );\n const existing = await (this.program.account as any).collectFeeOrderRecord?.fetchNullable(pda);\n if (!existing) {\n const tx = await this.buildRegisterCollectFeeOrderTx(signedOrder, this.walletPubkey);\n await this._sendLegacyTx(tx.instructions);\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 * V2: no hook accounts in remainingAccounts.\n *\n * remaining_accounts layout:\n * [seller, order_record, seller_token, seller_collateral, seller_position, sell_status] × N\n * [feeManagement, fee_config, mkt_override, company_ata, oracle_vault, referral_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_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_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 // V2: No hook accounts — removed extraAccountMetaList, hookConfig, hookProgram\n\n // Fee accounts (optional) — only added when market_fee_override PDA exists for this condition.\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 const refVault = await this.referralVault();\n if (companyAddr && refVault) {\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\n ?? await this.getMarketOracleVault(condition, collateralMint)\n ?? 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 { pubkey: refVault, 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 systemProgram: SystemProgram.programId,\n })\n .remainingAccounts([...makerAccounts, ...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 * V2: no hook accounts in remainingAccounts.\n *\n * remaining_accounts per NO maker (6):\n * [maker, order_record, buyer_no_token, buyer_no_collateral, buyer_no_position, no_order_status]\n */\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_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_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_PROGRAM_ID);\n const [clobYesPos] = PDA.position(condition, 1, clobConfig, this.programIds);\n const [clobNoPos] = PDA.position(condition, 0, clobConfig, this.programIds);\n\n // V2: no hook accounts\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_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 // V2: hook accounts removed (extraMetaYes, extraMetaNo, hookConfig, hookProgram)\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 tokenProgram: TOKEN_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_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_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 * V2: no hook accounts in remainingAccounts.\n *\n * remaining_accounts per NO maker (6):\n * [maker, order_record, seller_no_token, seller_no_collateral, seller_no_position, no_order_status]\n * After all makers, optional 6 fee accounts.\n */\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_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_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_PROGRAM_ID);\n const [clobYesPos] = PDA.position(condition, 1, clobConfig, this.programIds);\n const [clobNoPos] = PDA.position(condition, 0, clobConfig, this.programIds);\n\n // V2: no hook accounts\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_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 // V2: hook accounts removed (extraMetaYes, extraMetaNo, hookConfig, hookProgram)\n\n if (yesSigned.order.fee.gtn(0) && this.programIds.feeManagement && this.feeConfigOwner) {\n const companyAddr = await this.companyAddress();\n const refVault = await this.referralVault();\n if (companyAddr && refVault) {\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\n ?? await this.getMarketOracleVault(condition, collateralMint)\n ?? 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 { pubkey: refVault, 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 tokenProgram: TOKEN_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_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_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 * Build ixs for a mixed batch: some makers COMPLEMENTARY (same tokenId as taker),\n * others MINT/MERGE (opposite tokenId). Packs all into a single ix array so the\n * caller can send them in one atomic tx.\n *\n * Supported taker configurations:\n * YES BUY + YES SELL makers + NO BUY makers → COMP ixs + MINT ix\n * YES SELL + YES BUY makers + NO SELL makers → COMP ixs + MERGE ix\n */\n private async _buildMixedMatchIxs(\n taker: SignedOrder,\n complementaryMakers: SignedOrder[],\n mintMergeMakers: SignedOrder[],\n collateralMint: PublicKey,\n feeRecipient: PublicKey,\n operator: PublicKey,\n opts?: { marketOracleVault?: PublicKey },\n ): Promise<TransactionInstruction[]> {\n const t = taker.order;\n const SIDE_BUY = 0;\n const SIDE_SELL = 1;\n\n // ── COMPLEMENTARY ixs ─────────────────────────────────────────────────────\n // BUY taker + SELL comp makers → use_taker_price=true (default)\n // SELL taker + BUY comp makers → use_taker_price=false\n const useTakerPrice = t.side === SIDE_BUY;\n const compIxs = await this.buildMatchComplementaryIxs(\n taker, complementaryMakers, collateralMint, feeRecipient, operator, opts, useTakerPrice,\n );\n\n // ── MINT / MERGE ix ───────────────────────────────────────────────────────\n const allBuy = t.side === SIDE_BUY && mintMergeMakers.every(m => m.order.side === SIDE_BUY);\n const allSell = t.side === SIDE_SELL && mintMergeMakers.every(m => m.order.side === SIDE_SELL);\n if (!allBuy && !allSell) {\n throw new InvalidParamError(\"MINT/MERGE makers in mixed batch must all share taker side\");\n }\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_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_PROGRAM_ID);\n await this._ensureClobOutcomeAtas(yesMint, noMint, clobConfig, clobYesAta, clobNoAta);\n\n let mmIxs: TransactionInstruction[];\n if (t.tokenId === 1) {\n // YES taker\n const ix = allBuy\n ? await this._buildMintIx(taker, mintMergeMakers, collateralMint, operator, this.walletPubkey)\n : await this._buildMergeIx(taker, mintMergeMakers, collateralMint, operator, this.walletPubkey, opts);\n mmIxs = [ix];\n } else {\n // NO taker → swap: each YES maker becomes taker-side, NO taker is maker-side\n mmIxs = [];\n for (const yesMaker of mintMergeMakers) {\n const ix = allBuy\n ? await this._buildMintIx(yesMaker, [taker], collateralMint, operator, this.walletPubkey)\n : await this._buildMergeIx(yesMaker, [taker], collateralMint, operator, this.walletPubkey, opts);\n mmIxs.push(ix);\n }\n }\n\n return [...compIxs, ...mmIxs];\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 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 SIDE_BUY = 0;\n const SIDE_SELL = 1;\n\n // Mixed batch: some makers COMPLEMENTARY (same tokenId), others MINT/MERGE (different tokenId).\n // Pack both instruction types into 1 atomic tx via sendMatchTx.\n const complementaryMakers = makers.filter(m => m.order.tokenId === t.tokenId);\n const mintMergeMakers = makers.filter(m => m.order.tokenId !== t.tokenId);\n if (complementaryMakers.length > 0 && mintMergeMakers.length > 0) {\n await Promise.all([\n this.registerOrderIfNeeded(taker),\n ...makers.map(m => this.registerOrderIfNeeded(m)),\n ]);\n const ixs = await this._buildMixedMatchIxs(\n taker, complementaryMakers, mintMergeMakers, collateralMint, feeRecipient, operatorWallet.publicKey, opts,\n );\n const sig = await this.sendMatchTx(ixs, alt, operatorWallet);\n return { signature: sig };\n }\n\n const m0 = makers[0].order;\n\n if (t.tokenId === m0.tokenId) {\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 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 const finalSells = sellCandidates;\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 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 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 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;\n if (isDirectSell) return b.price - a.price;\n if (isMint) return b.price - a.price;\n if (isMerge) return a.price - b.price;\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 */\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 * V2: no hookClient, no hook init ixs prepended.\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 SIDE_BUY = 0;\n const SIDE_SELL = 1;\n\n // Mixed batch: some makers COMPLEMENTARY (same tokenId), others MINT/MERGE (different tokenId).\n // Pack all instructions into one atomic vtx.\n const complementaryMakers = makers.filter(m => m.order.tokenId === t.tokenId);\n const mintMergeMakers = makers.filter(m => m.order.tokenId !== t.tokenId);\n if (complementaryMakers.length > 0 && mintMergeMakers.length > 0) {\n await Promise.all([\n this.registerOrderIfNeeded(taker),\n ...makers.map(m => this.registerOrderIfNeeded(m)),\n ]);\n const oracleVaultInitIx = await this.buildInitOracleVaultIfNeeded(\n t.condition, collateralMint, t.fee, payer,\n );\n const preIxs = oracleVaultInitIx ? [oracleVaultInitIx] : [];\n const ixs = await this._buildMixedMatchIxs(\n taker, complementaryMakers, mintMergeMakers, collateralMint, feeRecipient, operator, opts,\n );\n return this._buildUnsignedVtx([...preIxs, ...ixs], alt, payer);\n }\n\n const m0 = makers[0].order;\n\n // V2: no hookClient, so no hook init ixs\n // Auto-init oracle vault ATA for old markets where vault was never created.\n const oracleVaultInitIx = await this.buildInitOracleVaultIfNeeded(\n t.condition, collateralMint, t.fee, payer,\n );\n const preIxs = oracleVaultInitIx ? [oracleVaultInitIx] : [];\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 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([...preIxs, ...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([...preIxs, ...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_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_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([...preIxs, 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([...preIxs, ...ixs], alt, payer);\n }\n\n // ─── batchCollectRedeemEarly ─────────────────────────────────────────────────\n\n /**\n * Build VersionedTransaction for batchCollectRedeemEarly.\n * V2: no hook accounts in remainingAccounts, uses TOKEN_PROGRAM_ID for outcome mints.\n *\n * @param signedOrders - Array of { order, signature } (used to derive record PDAs)\n * @param condition - Market condition PDA\n * @param outcomeIndex - 0 = NO wins, 1 = YES wins\n * @param operator - Whitelisted operator pubkey (must sign)\n * @param payer - Fee payer pubkey (must sign)\n * @param opts.marketOracleVault - MarketOracle vault for fee distribution\n */\n async buildBatchCollectRedeemEarlyTx(\n signedOrders: SignedCollectFeeOrder[],\n condition: PublicKey,\n outcomeIndex: 0 | 1,\n operator: PublicKey,\n payer: PublicKey,\n opts?: { marketOracleVault?: PublicKey; lookupTable?: AddressLookupTableAccount },\n ): Promise<VersionedTransaction> {\n if (signedOrders.length === 0) throw new InvalidParamError(\"At least 1 order 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\n const clobConfig = this.configPda();\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\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfig, true, TOKEN_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_PROGRAM_ID);\n\n const outcomeMint = outcomeIndex === 1 ? yesMint : noMint;\n\n // V2: no hook PDAs\n\n // CLOB's CTF position PDAs (managed by CTF, passed as unchecked)\n const [clobYesPosition] = PDA.position(condition, 1, clobConfig, this.programIds);\n const [clobNoPosition] = PDA.position(condition, 0, clobConfig, this.programIds);\n\n // Per-user remaining_accounts (4 accounts each):\n // [collectFeeOrderRecord (mut), user, userTokenAta (mut), userPosition (mut)]\n const userAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n for (const { order } of signedOrders) {\n const [collectFeeOrderRecord] = PDA.collectFeeOrderRecord(order.user, order.nonce, this.programIds);\n const userTokenAta = getAssociatedTokenAddressSync(outcomeMint, order.user, false, TOKEN_PROGRAM_ID);\n const [userPosition] = PDA.position(condition, outcomeIndex, order.user, this.programIds);\n userAccounts.push(\n { pubkey: collectFeeOrderRecord, isSigner: false, isWritable: true },\n { pubkey: order.user, isSigner: false, isWritable: false },\n { pubkey: userTokenAta, isSigner: false, isWritable: true },\n { pubkey: userPosition, isSigner: false, isWritable: true },\n );\n }\n\n // V2: no hook accounts\n\n // Fee accounts (optional)\n let feeAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n if (this.programIds.feeManagement && this.feeConfigOwner) {\n const companyAddr = await this.companyAddress();\n const refVault = await this.referralVault();\n if (companyAddr && refVault) {\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\n ?? await this.getMarketOracleVault(condition, collateralMint)\n ?? payer;\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 { pubkey: refVault, isSigner: false, isWritable: true },\n ];\n }\n }\n }\n\n // Ensure CLOB's YES/NO ATAs exist — required receivers for transfer_position CPI.\n await this._ensureClobOutcomeAtas(yesMint, noMint, clobConfig, clobYesAta, clobNoAta);\n\n // V2: no hookClient, no hook init ixs\n\n const collectIx = await this.program.methods\n .batchCollectRedeemEarly(\n signedOrders.length,\n outcomeIndex,\n )\n .accounts({\n operator,\n payer,\n clobConfig,\n condition,\n collateralVault,\n vaultTokenAccount,\n feeRecipient: cfg.feeRecipient,\n yesMint,\n noMint,\n clobYesAta,\n clobNoAta,\n clobYesPosition,\n clobNoPosition,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n tokenProgram: TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .remainingAccounts([...userAccounts, ...feeAccounts])\n .instruction();\n\n // ALT: caller-supplied > build with user accounts included\n const alt = opts?.lookupTable\n ?? await this.buildAltForCollectBatch(condition, payer, collateralMint, signedOrders, outcomeIndex);\n\n return this._buildUnsignedVtx([collectIx], alt, payer);\n }\n\n // ─── Register RedeemFeeOrder ─────────────────────────────────────────────────\n\n /**\n * Build a Transaction to register a RedeemFeeOrder on-chain (Ed25519 verify + PDA).\n * Must be sent before calling buildBatchRedeemWithFeeTx / buildBatchMergeWithFeeTx.\n */\n async buildRegisterRedeemFeeOrderTx(\n signedOrder: SignedRedeemFeeOrder,\n payer: PublicKey,\n ): Promise<anchor.web3.Transaction> {\n const { order } = signedOrder;\n const [redeemFeeOrderRecord] = PDA.redeemFeeOrderRecord(order.user, order.nonce, this.programIds);\n const ed25519Ix = buildBatchedRedeemFeeEd25519Instruction([signedOrder]);\n const registerIx = await this.program.methods\n .registerRedeemFeeOrder(order.nonce)\n .accounts({\n payer,\n clobConfig: this.configPda(),\n ixSysvar: IX_SYSVAR,\n orderSigner: order.user,\n redeemFeeOrderRecord,\n systemProgram: anchor.web3.SystemProgram.programId,\n })\n .instruction();\n const tx = new anchor.web3.Transaction();\n tx.add(ed25519Ix, registerIx);\n return tx;\n }\n\n // ─── batchRedeemWithFee ───────────────────────────────────────────────────────\n\n /**\n * Build a VersionedTransaction for batchRedeemWithFee.\n * V2: no hook accounts, uses TOKEN_PROGRAM_ID for outcome mints.\n *\n * Each pair has a YES order + NO order for the same user (same signer or different).\n * Prerequisite: each order's RedeemFeeOrderRecord must be registered via buildRegisterRedeemFeeOrderTx.\n */\n async buildBatchRedeemWithFeeTx(\n orderPairs: RedeemFeeOrderPair[],\n condition: PublicKey,\n operator: PublicKey,\n payer: PublicKey,\n opts?: { marketOracleVault?: PublicKey; lookupTable?: AddressLookupTableAccount },\n ): Promise<VersionedTransaction> {\n if (orderPairs.length === 0) throw new InvalidParamError(\"At least 1 order pair 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\n const clobConfig = this.configPda();\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 // V2: no hook PDAs (extraMeta, hookConfig removed)\n const [clobYesPosition] = PDA.position(condition, 1, clobConfig, this.programIds);\n const [clobNoPosition] = PDA.position(condition, 0, clobConfig, this.programIds);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfig, true, TOKEN_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_PROGRAM_ID);\n\n // Per-user remaining accounts (10 each)\n const userAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n for (const { yes, no } of orderPairs) {\n const [yesRecord] = PDA.redeemFeeOrderRecord(yes.order.user, yes.order.nonce, this.programIds);\n const [noRecord] = PDA.redeemFeeOrderRecord(no.order.user, no.order.nonce, this.programIds);\n const userYesAta = getAssociatedTokenAddressSync(yesMint, yes.order.user, false, TOKEN_PROGRAM_ID);\n const userNoAta = getAssociatedTokenAddressSync(noMint, no.order.user, false, TOKEN_PROGRAM_ID);\n const [userYesPos] = PDA.position(condition, 1, yes.order.user, this.programIds);\n const [userNoPos] = PDA.position(condition, 0, no.order.user, this.programIds);\n const yesCollateral = getAssociatedTokenAddressSync(collateralMint, yes.order.user);\n const noCollateral = getAssociatedTokenAddressSync(collateralMint, no.order.user);\n\n userAccounts.push(\n { pubkey: yesRecord, isSigner: false, isWritable: true },\n { pubkey: noRecord, isSigner: false, isWritable: true },\n { pubkey: yes.order.user, isSigner: false, isWritable: false },\n { pubkey: no.order.user, isSigner: false, isWritable: false },\n { pubkey: userYesAta, isSigner: false, isWritable: true },\n { pubkey: userNoAta, isSigner: false, isWritable: true },\n { pubkey: userYesPos, isSigner: false, isWritable: true },\n { pubkey: userNoPos, isSigner: false, isWritable: true },\n { pubkey: yesCollateral, isSigner: false, isWritable: true },\n { pubkey: noCollateral, isSigner: false, isWritable: true },\n );\n }\n\n // V2: no hook accounts\n\n let feeAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n if (this.programIds.feeManagement && this.feeConfigOwner) {\n const companyAddr = await this.companyAddress();\n const refVault = await this.referralVault();\n if (companyAddr && refVault) {\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\n ?? await this.getMarketOracleVault(condition, collateralMint)\n ?? payer;\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 { pubkey: refVault, isSigner: false, isWritable: true },\n ];\n }\n }\n }\n\n await this._ensureClobOutcomeAtas(yesMint, noMint, clobConfig, clobYesAta, clobNoAta);\n\n // V2: no hookClient, no hook init ixs\n\n const redeemIx = await this.program.methods\n .batchRedeemWithFee(orderPairs.length)\n .accounts({\n operator,\n payer,\n clobConfig,\n condition,\n collateralVault,\n vaultTokenAccount,\n feeRecipient: cfg.feeRecipient,\n yesMint,\n noMint,\n clobYesAta,\n clobNoAta,\n clobYesPosition,\n clobNoPosition,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n tokenProgram: TOKEN_PROGRAM_ID,\n systemProgram: anchor.web3.SystemProgram.programId,\n })\n .remainingAccounts([...userAccounts, ...feeAccounts])\n .instruction();\n\n const alt = opts?.lookupTable\n ?? await this.buildAltForCondition(condition, payer, collateralMint);\n return this._buildUnsignedVtx([redeemIx], alt, payer);\n }\n\n // ─── batchMergeWithFee ────────────────────────────────────────────────────────\n\n /**\n * Build a VersionedTransaction for batchMergeWithFee (pre-resolution merge with fee).\n * V2: no hook accounts, uses TOKEN_PROGRAM_ID for outcome mints.\n *\n * Prerequisite: each order's RedeemFeeOrderRecord must be registered via buildRegisterRedeemFeeOrderTx.\n */\n async buildBatchMergeWithFeeTx(\n orderPairs: RedeemFeeOrderPair[],\n condition: PublicKey,\n operator: PublicKey,\n payer: PublicKey,\n opts?: { marketOracleVault?: PublicKey; lookupTable?: AddressLookupTableAccount },\n ): Promise<VersionedTransaction> {\n if (orderPairs.length === 0) throw new InvalidParamError(\"At least 1 order pair 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\n const clobConfig = this.configPda();\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 // V2: no hook PDAs (extraMeta, hookConfig removed)\n const [clobYesPosition] = PDA.position(condition, 1, clobConfig, this.programIds);\n const [clobNoPosition] = PDA.position(condition, 0, clobConfig, this.programIds);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfig, true, TOKEN_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_PROGRAM_ID);\n\n // Per-user remaining accounts (9 each)\n const userAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n for (const { yes, no } of orderPairs) {\n const [yesRecord] = PDA.redeemFeeOrderRecord(yes.order.user, yes.order.nonce, this.programIds);\n const [noRecord] = PDA.redeemFeeOrderRecord(no.order.user, no.order.nonce, this.programIds);\n const userYesAta = getAssociatedTokenAddressSync(yesMint, yes.order.user, false, TOKEN_PROGRAM_ID);\n const userNoAta = getAssociatedTokenAddressSync(noMint, no.order.user, false, TOKEN_PROGRAM_ID);\n const [userYesPos] = PDA.position(condition, 1, yes.order.user, this.programIds);\n const [userNoPos] = PDA.position(condition, 0, no.order.user, this.programIds);\n const yesCollateral = getAssociatedTokenAddressSync(collateralMint, yes.order.user);\n\n userAccounts.push(\n { pubkey: yesRecord, isSigner: false, isWritable: true },\n { pubkey: noRecord, isSigner: false, isWritable: true },\n { pubkey: yes.order.user, isSigner: false, isWritable: false },\n { pubkey: no.order.user, isSigner: false, isWritable: false },\n { pubkey: userYesAta, isSigner: false, isWritable: true },\n { pubkey: userNoAta, isSigner: false, isWritable: true },\n { pubkey: userYesPos, isSigner: false, isWritable: true },\n { pubkey: userNoPos, isSigner: false, isWritable: true },\n { pubkey: yesCollateral, isSigner: false, isWritable: true },\n );\n }\n\n // V2: no hook accounts\n\n let feeAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n if (this.programIds.feeManagement && this.feeConfigOwner) {\n const companyAddr = await this.companyAddress();\n const refVault = await this.referralVault();\n if (companyAddr && refVault) {\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\n ?? await this.getMarketOracleVault(condition, collateralMint)\n ?? payer;\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 { pubkey: refVault, isSigner: false, isWritable: true },\n ];\n }\n }\n }\n\n await this._ensureClobOutcomeAtas(yesMint, noMint, clobConfig, clobYesAta, clobNoAta);\n\n // V2: no hookClient, no hook init ixs\n\n const mergeIx = await this.program.methods\n .batchMergeWithFee(orderPairs.length)\n .accounts({\n operator,\n payer,\n clobConfig,\n condition,\n collateralVault,\n vaultTokenAccount,\n feeRecipient: cfg.feeRecipient,\n yesMint,\n noMint,\n clobYesAta,\n clobNoAta,\n clobYesPosition,\n clobNoPosition,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n tokenProgram: TOKEN_PROGRAM_ID,\n systemProgram: anchor.web3.SystemProgram.programId,\n })\n .remainingAccounts([...userAccounts, ...feeAccounts])\n .instruction();\n\n const alt = opts?.lookupTable\n ?? await this.buildAltForCondition(condition, payer, collateralMint);\n return this._buildUnsignedVtx([mergeIx], alt, payer);\n }\n\n /**\n * Build ALT for batchCollectRedeemEarly — includes per-user accounts so all\n * remaining_accounts fit as 1-byte ALT indices instead of 32-byte inline addresses.\n * V2: no hook program or hook PDAs included.\n */\n async buildAltForCollectBatch(\n condition: PublicKey,\n payer: PublicKey,\n collateralMint: PublicKey,\n signedOrders: SignedCollectFeeOrder[],\n outcomeIndex: 0 | 1,\n ): Promise<AddressLookupTableAccount> {\n const userKeys = signedOrders.map(o => o.order.user.toBase58()).sort((a, b) => a.localeCompare(b)).join(\",\");\n const cacheKey = `${condition.toBase58()}:collect:${userKeys}`;\n if (this._altCache.has(cacheKey)) return this._altCache.get(cacheKey)!;\n\n const { connection } = this.provider;\n const clobConfigPda = this.configPda();\n\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const outcomeMint = outcomeIndex === 1 ? yesMint : noMint;\n const [collateralVault] = PDA.collateralVault(collateralMint, this.programIds);\n const [vaultTokenAccount] = PDA.vaultToken(collateralMint, this.programIds);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfigPda, true, TOKEN_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfigPda, true, TOKEN_PROGRAM_ID);\n const [clobYesPos] = PDA.position(condition, 1, clobConfigPda, this.programIds);\n const [clobNoPos] = PDA.position(condition, 0, clobConfigPda, this.programIds);\n const feeRecipientAddr = (await this.fetchConfig())?.feeRecipient;\n\n const addresses: PublicKey[] = [\n this.programIds.clobExchange,\n this.programIds.conditionalTokens,\n TOKEN_PROGRAM_ID,\n SystemProgram.programId,\n clobConfigPda,\n condition, yesMint, noMint,\n collateralVault, vaultTokenAccount,\n clobYesAta, clobNoAta, clobYesPos, clobNoPos,\n ];\n if (feeRecipientAddr) addresses.push(feeRecipientAddr);\n if (this.feeConfigOwner && this.programIds.feeManagement) {\n const companyAddr = await this.companyAddress();\n const refVault = await this.referralVault();\n addresses.push(this.programIds.feeManagement!);\n addresses.push(PDA.feeConfig(this.feeConfigOwner, this.programIds)[0]);\n addresses.push(PDA.marketFeeOverride(condition, this.programIds)[0]);\n if (companyAddr) addresses.push(getAssociatedTokenAddressSync(collateralMint, companyAddr));\n if (refVault) addresses.push(refVault);\n const oracleVault = await this.getMarketOracleVault(condition, collateralMint) ?? payer;\n addresses.push(oracleVault);\n }\n\n // Per-user accounts\n for (const { order } of signedOrders) {\n const [collectFeeOrderRecord] = PDA.collectFeeOrderRecord(order.user, order.nonce, this.programIds);\n const userTokenAta = getAssociatedTokenAddressSync(outcomeMint, order.user, false, TOKEN_PROGRAM_ID);\n const [userPosition] = PDA.position(condition, outcomeIndex, order.user, this.programIds);\n addresses.push(collectFeeOrderRecord, order.user, userTokenAta, userPosition);\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, lookupTable: altAddress, 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++) await this._sendLegacyTx([extendIxs[i]]);\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 /**\n * Build ALT with static accounts for a condition — no order-specific PDAs needed.\n * V2: no hook program or hook PDAs included.\n */\n async buildAltForCondition(\n condition: PublicKey,\n _payer: PublicKey,\n collateralMint?: PublicKey,\n ): Promise<AddressLookupTableAccount> {\n const cacheKey = condition.toBase58();\n if (this._altCache.has(cacheKey)) return this._altCache.get(cacheKey)!;\n\n const mint = collateralMint ?? this.networkConfig.defaultCollateral.mint;\n const payer = this.walletPubkey;\n const { connection } = this.provider;\n const clobConfigPda = this.configPda();\n\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const [collateralVault] = PDA.collateralVault(mint, this.programIds);\n const [vaultTokenAccount] = PDA.vaultToken(mint, this.programIds);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfigPda, true, TOKEN_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfigPda, true, TOKEN_PROGRAM_ID);\n const feeRecipientAddr = (await this.fetchConfig())?.feeRecipient;\n\n const addresses: PublicKey[] = [\n Ed25519Program.programId,\n this.programIds.clobExchange,\n this.programIds.conditionalTokens,\n TOKEN_PROGRAM_ID,\n SystemProgram.programId,\n SYSVAR_INSTRUCTIONS_PUBKEY,\n clobConfigPda,\n condition, yesMint, noMint,\n collateralVault, vaultTokenAccount,\n clobYesAta, clobNoAta,\n ];\n if (feeRecipientAddr) addresses.push(feeRecipientAddr);\n if (this.feeConfigOwner && this.programIds.feeManagement) {\n const companyAddr = await this.companyAddress();\n const refVault = await this.referralVault();\n addresses.push(this.programIds.feeManagement!);\n addresses.push(PDA.feeConfig(this.feeConfigOwner, this.programIds)[0]);\n addresses.push(PDA.marketFeeOverride(condition, this.programIds)[0]);\n if (companyAddr) addresses.push(getAssociatedTokenAddressSync(mint, companyAddr));\n if (refVault) addresses.push(refVault);\n const oracleVault = await this.getMarketOracleVault(condition, mint) ?? payer;\n addresses.push(oracleVault);\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, lookupTable: altAddress, 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++) await this._sendLegacyTx([extendIxs[i]]);\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 // ─── 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 admin: acc.admin,\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 /** Check if address is a CLOB operator (can submit match transactions) */\n async isOperator(address: PublicKey): Promise<boolean> {\n const cfg = await this.fetchConfig();\n return cfg?.operators.some(k => k.equals(address)) ?? false;\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, Transaction } 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(params: {\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 /** Share routed to referral vault (e.g. 2_000 = 20%). Must satisfy referral+company+investors=10_000 */\n referralMarketRev: number;\n referralVault: PublicKey;\n authority: PublicKey;\n payer: PublicKey;\n }): Promise<TxResult> {\n const [feeConfigPda] = PDA.feeConfig(params.authority, this.programIds);\n const sig = await this.program.methods\n .initialize({\n admin: params.admin,\n companyAddress: params.companyAddress,\n referralAddress: params.referralAddress,\n presaleRevenueAddress: params.presaleRevenueAddress,\n investorsMarketRev: params.investorsMarketRev,\n companyMarketRev: params.companyMarketRev,\n agentsPresaleRev: params.agentsPresaleRev,\n companyPresaleRev: params.companyPresaleRev,\n referralMarketRev: params.referralMarketRev,\n referralVault: params.referralVault,\n })\n .accounts({\n authority: params.authority,\n payer: params.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(params: {\n companyAddress: PublicKey;\n referralAddress: PublicKey;\n presaleRevenueAddress: PublicKey;\n investorsMarketRev: number;\n companyMarketRev: number;\n agentsPresaleRev: number;\n companyPresaleRev: number;\n referralMarketRev: number;\n referralVault: PublicKey;\n authority: PublicKey;\n payer: PublicKey;\n }): Promise<TxResult> {\n const [feeConfigPda] = PDA.feeConfig(params.authority, this.programIds);\n const sig = await this.program.methods\n .updateConfig({\n companyAddress: params.companyAddress,\n referralAddress: params.referralAddress,\n presaleRevenueAddress: params.presaleRevenueAddress,\n investorsMarketRev: params.investorsMarketRev,\n companyMarketRev: params.companyMarketRev,\n agentsPresaleRev: params.agentsPresaleRev,\n companyPresaleRev: params.companyPresaleRev,\n referralMarketRev: params.referralMarketRev,\n referralVault: params.referralVault,\n })\n .accounts({\n authority: params.authority,\n payer: params.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 /**\n * Build editMarketFee transaction (whitelist-only).\n * @param conditionPda - condition PDA (market identifier)\n * @param mergeFee - out of FEE_DENOMINATOR (10_000), e.g. 2_000 = 20%\n * @param redeemFee - out of FEE_DENOMINATOR\n * @param swapFee - trading fee out of FEE_DENOMINATOR, e.g. 200 = 2%\n * @param feeConfigOwner - owner of fee_config PDA\n * @param authority - whitelisted signer (signs tx externally)\n * @param payer - fee payer (can differ from authority)\n */\n async buildEditMarketFeeTx(\n conditionPda: PublicKey,\n mergeFee: BN,\n redeemFee: BN,\n swapFee: BN,\n feeConfigOwner: PublicKey,\n authority: PublicKey,\n payer: PublicKey = authority,\n ): Promise<Transaction> {\n const [feeConfigPda] = PDA.feeConfig(feeConfigOwner, this.programIds);\n const [questionFeePda] = PDA.questionFee(conditionPda, this.programIds);\n\n return 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 .transaction();\n }\n\n /** @deprecated use buildEditMarketFeeTx */\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 /**\n * Build addToWhitelist tx — authority (admin/owner) signs externally.\n * Whitelist members can call editMarketFee / setQuestionFee.\n */\n /** Build addToWhitelist tx — authority (admin/owner) signs externally. */\n async buildAddToWhitelistTx(\n address: PublicKey,\n feeConfigOwner: PublicKey,\n authority: PublicKey,\n ): Promise<Transaction> {\n const [feeConfigPda] = PDA.feeConfig(feeConfigOwner, this.programIds);\n return this.program.methods\n .addToWhitelist(address)\n .accounts({ authority, feeConfig: feeConfigPda })\n .transaction();\n }\n\n /** Build removeFromWhitelist tx — authority (admin/owner) signs externally. */\n async buildRemoveFromWhitelistTx(\n address: PublicKey,\n feeConfigOwner: PublicKey,\n authority: PublicKey,\n ): Promise<Transaction> {\n const [feeConfigPda] = PDA.feeConfig(feeConfigOwner, this.programIds);\n return this.program.methods\n .removeFromWhitelist(address)\n .accounts({ authority, feeConfig: feeConfigPda })\n .transaction();\n }\n\n /** Build setAdmin tx — only owner signs externally. */\n async buildSetAdminTx(\n newAdmin: PublicKey,\n feeConfigOwner: PublicKey,\n authority: PublicKey,\n ): Promise<Transaction> {\n const [feeConfigPda] = PDA.feeConfig(feeConfigOwner, this.programIds);\n return this.program.methods\n .setAdmin(newAdmin)\n .accounts({ authority, feeConfig: feeConfigPda })\n .transaction();\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 interface FeesShareEstimate {\n /** Net USDS user will receive if they claim now */\n share: anchor.BN;\n /** Total accumulated fees (vault + already claimed) */\n effectiveTotal: anchor.BN;\n /** Current vault balance */\n vaultBalance: anchor.BN;\n /** User's current MST balance */\n userQtBalance: anchor.BN;\n /** Snapshotted total MST supply (0 if not yet distributed) */\n qtTotalSupply: anchor.BN;\n /** True if fees_distributed — claim is on-chain executable */\n feesDistributed: boolean;\n /** True if user already claimed */\n hasClaimed: boolean;\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 /**\n * Derive marketOracleVault from presaleAddress and return its USDS balance.\n * presaleAddress is used as the questionId seed in the question PDA.\n */\n async getOracleVaultBalance(\n presaleAddress: PublicKey,\n qmConfigPda: PublicKey,\n collateralMint: PublicKey,\n ): Promise<number> {\n const [questionPda] = PDA.question(qmConfigPda, presaleAddress.toBytes(), this.programIds);\n const [marketOraclePda] = PDA.marketOraclePda(questionPda, this.programIds);\n const vault = getAssociatedTokenAddressSync(collateralMint, marketOraclePda, true);\n const bal = await this.program.provider.connection.getTokenAccountBalance(vault);\n return bal.value.uiAmount ?? 0;\n }\n\n /**\n * Estimate the USDS share a user would receive if they called claimFeesShare now.\n * Works both before and after fees_distributed — no extra params needed.\n *\n * When fees not yet distributed, auto-resolves qtMint via:\n * oracle.question (questionPda) → raw account bytes[8..40] = presalePda\n * → PDA.qtMint(presalePda) → qtMint\n *\n * Formula mirrors on-chain claim_fees_share_handler:\n * effective_total = vault_balance + oracle.total_claimed\n * share = user_qt_balance * effective_total / oracle.qt_total_supply\n */\n async estimateFeesShare(\n marketOraclePda: PublicKey,\n user: PublicKey,\n ): Promise<FeesShareEstimate | null> {\n const { connection } = this.provider;\n\n // Batch 1: oracle + claim record (independent)\n const [oracle, claimRecord] = await Promise.all([\n this.fetchMarketOracle(marketOraclePda),\n this.fetchUserClaimRecord(marketOraclePda, user),\n ]);\n if (!oracle) return null;\n\n const hasClaimed = claimRecord?.hasClaimed ?? false;\n const vaultAta = getAssociatedTokenAddressSync(oracle.currencyMint, marketOraclePda, true);\n const needsQtMintResolve = !oracle.feesDistributed || oracle.qtMint.equals(PublicKey.default);\n\n // Batch 2: vault balance + question account (independent, both need oracle)\n const [vaultResult, questionAccount] = await Promise.all([\n connection.getTokenAccountBalance(vaultAta).catch(() => null),\n needsQtMintResolve\n ? connection.getAccountInfo(oracle.question).catch(() => null)\n : Promise.resolve(null),\n ]);\n\n const vaultBalance = vaultResult\n ? new anchor.BN(vaultResult.value.amount)\n : new anchor.BN(0);\n\n // Resolve qtMint\n let qtMint = oracle.qtMint;\n if (needsQtMintResolve && questionAccount) {\n try {\n // Question layout: [8 disc][1 version][32 config][32 questionId = presalePda]\n const presalePda = new PublicKey(questionAccount.data.slice(41, 73));\n qtMint = PDA.qtMint(presalePda, this.programIds)[0];\n } catch { /* parse error */ }\n }\n\n const isDefaultMint = qtMint.equals(PublicKey.default);\n const needsSupply = (!oracle.feesDistributed || oracle.qtTotalSupply.isZero()) && !isDefaultMint;\n\n // Batch 3: user QT balance + total supply (independent, both need qtMint)\n const userQtAta = isDefaultMint ? null : getAssociatedTokenAddressSync(qtMint, user);\n const [qtBalResult, supplyResult] = await Promise.all([\n userQtAta\n ? connection.getTokenAccountBalance(userQtAta).catch(() => null)\n : Promise.resolve(null),\n needsSupply\n ? connection.getTokenSupply(qtMint).catch(() => null)\n : Promise.resolve(null),\n ]);\n\n const userQtBalance = qtBalResult\n ? new anchor.BN(qtBalResult.value.amount)\n : new anchor.BN(0);\n\n const qtTotalSupply = needsSupply && supplyResult\n ? new anchor.BN(supplyResult.value.amount)\n : oracle.qtTotalSupply;\n\n const effectiveTotal = vaultBalance.add(oracle.totalClaimed);\n\n if (qtTotalSupply.isZero() || userQtBalance.isZero()) {\n return {\n share: new anchor.BN(0),\n effectiveTotal,\n vaultBalance,\n userQtBalance,\n qtTotalSupply,\n feesDistributed: oracle.feesDistributed,\n hasClaimed,\n };\n }\n\n const share = userQtBalance.mul(effectiveTotal).div(qtTotalSupply);\n\n return {\n share,\n effectiveTotal,\n vaultBalance,\n userQtBalance,\n qtTotalSupply,\n feesDistributed: oracle.feesDistributed,\n hasClaimed,\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 /** Check if address is in admin_whitelist (can call addToWhitelist, removeFromWhitelist) */\n async isAdmin(address: PublicKey, owner = this.walletPubkey): Promise<boolean> {\n const cfg = await this.fetchConfig(owner);\n return cfg?.adminWhitelist.some(k => k.equals(address)) ?? false;\n }\n\n /** Check if address is in whitelist (can call claim) */\n async isWhitelisted(address: PublicKey, owner = this.walletPubkey): Promise<boolean> {\n const cfg = await this.fetchConfig(owner);\n return cfg?.whitelist.some(k => k.equals(address)) ?? false;\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","import * as anchor from \"@coral-xyz/anchor\";\nimport {\n PublicKey, SystemProgram, Transaction,\n} from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n createAssociatedTokenAccountIdempotentInstruction,\n} from \"@solana/spl-token\";\nimport BN from \"bn.js\";\nimport { ProgramIds } from \"../config/networks\";\nimport { PDA } from \"../pda\";\n\nexport interface ReferralConfigInfo {\n owner: PublicKey;\n collateralMint: PublicKey;\n whitelist: PublicKey[];\n bump: number;\n}\n\nexport class ReferralClient {\n constructor(\n private readonly program: anchor.Program,\n private readonly provider: anchor.AnchorProvider,\n private readonly programIds: ProgramIds,\n ) {}\n\n get walletPubkey(): PublicKey {\n return this.provider.wallet.publicKey;\n }\n\n referralVault(owner: PublicKey, collateralMint: PublicKey): PublicKey {\n const [configPda] = PDA.referralConfig(owner, this.programIds);\n return getAssociatedTokenAddressSync(collateralMint, configPda, true);\n }\n\n async fetchConfig(owner: PublicKey): Promise<ReferralConfigInfo | null> {\n try {\n const [pda] = PDA.referralConfig(owner, this.programIds);\n const acc = await (this.program.account as any).referralConfig.fetch(pda);\n return {\n owner: acc.owner,\n collateralMint: acc.collateralMint,\n whitelist: acc.whitelist.slice(0, acc.whitelistLen),\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n /** Check if address is whitelisted in referral config (can call batchSendUsds) */\n async isWhitelisted(address: PublicKey, owner = this.walletPubkey): Promise<boolean> {\n const cfg = await this.fetchConfig(owner);\n return cfg?.whitelist.some(k => k.equals(address)) ?? false;\n }\n\n /**\n * Build initialize tx — creates referral config PDA.\n * Also prepends an ATA creation instruction for the referral vault (idempotent).\n * Build-tx pattern.\n */\n async buildInitializeTx(\n collateralMint: PublicKey,\n owner: PublicKey = this.walletPubkey,\n payer: PublicKey = owner,\n ): Promise<{ tx: Transaction; configPda: PublicKey; vaultAta: PublicKey }> {\n if (!this.programIds.referral) throw new Error(\"referral program ID not configured\");\n const [configPda] = PDA.referralConfig(owner, this.programIds);\n const vaultAta = getAssociatedTokenAddressSync(collateralMint, configPda, true);\n\n // Create vault ATA (idempotent) + init config in one tx\n const createVaultIx = createAssociatedTokenAccountIdempotentInstruction(\n payer, vaultAta, configPda, collateralMint,\n );\n\n const initTx = await this.program.methods\n .initialize()\n .accounts({\n owner,\n payer,\n config: configPda,\n collateralMint,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n\n const tx = new Transaction().add(createVaultIx, ...initTx.instructions);\n return { tx, configPda, vaultAta };\n }\n\n /** Build add-to-whitelist tx. Build-tx pattern. */\n async buildAddToWhitelistTx(\n address: PublicKey,\n owner: PublicKey = this.walletPubkey,\n payer: PublicKey = owner,\n ): Promise<Transaction> {\n if (!this.programIds.referral) throw new Error(\"referral program ID not configured\");\n const [configPda] = PDA.referralConfig(owner, this.programIds);\n return this.program.methods\n .addToWhitelist(address)\n .accounts({ owner, payer, config: configPda })\n .transaction();\n }\n\n /** Build remove-from-whitelist tx. Build-tx pattern. */\n async buildRemoveFromWhitelistTx(\n address: PublicKey,\n owner: PublicKey = this.walletPubkey,\n payer: PublicKey = owner,\n ): Promise<Transaction> {\n if (!this.programIds.referral) throw new Error(\"referral program ID not configured\");\n const [configPda] = PDA.referralConfig(owner, this.programIds);\n return this.program.methods\n .removeFromWhitelist(address)\n .accounts({ owner, payer, config: configPda })\n .transaction();\n }\n\n /**\n * Build batchSendUsds tx. Build-tx pattern.\n * @param recipients - wallet addresses to send to\n * @param amounts - corresponding amounts in token smallest units\n * @param configOwner - owner of referral config (used to derive config + vault)\n * @param collateralMint - token mint\n * @param authority - whitelisted signer\n * @param payer - fee payer (can differ from authority)\n */\n async buildBatchSendUsdsTx(\n recipients: PublicKey[],\n amounts: BN[],\n configOwner: PublicKey,\n collateralMint: PublicKey,\n authority: PublicKey = this.walletPubkey,\n payer: PublicKey = authority,\n ): Promise<Transaction> {\n if (!this.programIds.referral) throw new Error(\"referral program ID not configured\");\n if (recipients.length !== amounts.length) throw new Error(\"recipients and amounts must have same length\");\n if (recipients.length === 0) throw new Error(\"recipients array is empty\");\n\n const [configPda] = PDA.referralConfig(configOwner, this.programIds);\n const referralVault = getAssociatedTokenAddressSync(collateralMint, configPda, true);\n\n // Derive recipient ATAs\n const recipientAtas = recipients.map(wallet =>\n getAssociatedTokenAddressSync(collateralMint, wallet)\n );\n\n return this.program.methods\n .batchSendUsds(amounts)\n .accounts({\n authority,\n config: configPda,\n referralVault,\n tokenProgram: TOKEN_PROGRAM_ID,\n })\n .remainingAccounts(\n recipientAtas.map(ata => ({ pubkey: ata, isSigner: false, isWritable: true }))\n )\n .transaction();\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 DisputeConfigInfo {\n version: number;\n owner: PublicKey;\n admin: PublicKey;\n collateralMint: PublicKey;\n bump: number;\n}\n\nexport interface DisputeMarketInfo {\n version: number;\n conditionId: number[];\n deadline: anchor.BN;\n bond: anchor.BN;\n amount: anchor.BN;\n isResolved: boolean;\n bump: number;\n}\n\nexport interface UserDisputeInfo {\n version: number;\n user: PublicKey;\n conditionId: number[];\n amount: anchor.BN;\n bump: number;\n}\n\nexport class DisputeClient {\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 configPdaFor(owner: PublicKey): PublicKey {\n const [pda] = PDA.disputeConfig(owner, this.programIds);\n return pda;\n }\n\n disputeVault(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<DisputeConfigInfo | null> {\n const [configPda] = PDA.disputeConfig(owner, this.programIds);\n try {\n const acc = await (this.program.account as any).disputeConfig.fetch(configPda);\n return {\n version: acc.version,\n owner: acc.owner,\n admin: acc.admin,\n collateralMint: acc.collateralMint,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchDisputeMarket(conditionId: Uint8Array): Promise<DisputeMarketInfo | null> {\n const [pda] = PDA.disputeMarket(conditionId, this.programIds);\n try {\n const acc = await (this.program.account as any).disputeMarket.fetch(pda);\n return {\n version: acc.version,\n conditionId: acc.conditionId,\n deadline: acc.deadline,\n bond: acc.bond,\n amount: acc.amount,\n isResolved: acc.isResolved,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchUserDispute(user: PublicKey, conditionId: Uint8Array): Promise<UserDisputeInfo | null> {\n const [pda] = PDA.userDispute(user, conditionId, this.programIds);\n try {\n const acc = await (this.program.account as any).userDispute.fetch(pda);\n return {\n version: acc.version,\n user: acc.user,\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 collateralMint: PublicKey,\n owner: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [configPda] = PDA.disputeConfig(owner, this.programIds);\n const vault = getAssociatedTokenAddressSync(collateralMint, configPda, true);\n\n return this.program.methods\n .initialize()\n .accounts({\n owner,\n disputeConfig: configPda,\n collateralMint,\n disputeVault: vault,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n async buildSetAdminTx(\n newAdmin: PublicKey,\n owner: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [configPda] = PDA.disputeConfig(owner, this.programIds);\n return this.program.methods\n .setAdmin(newAdmin)\n .accounts({\n owner,\n disputeConfig: configPda,\n })\n .transaction();\n }\n\n async buildRaiseDisputeTx(\n conditionId: Uint8Array,\n collateralMint: PublicKey,\n owner: PublicKey,\n user: PublicKey = this.walletPubkey,\n payer: PublicKey = user,\n ): Promise<Transaction> {\n const [configPda] = PDA.disputeConfig(owner, this.programIds);\n const [disputeMarket] = PDA.disputeMarket(conditionId, this.programIds);\n const [userDispute] = PDA.userDispute(user, conditionId, this.programIds);\n const userAta = getAssociatedTokenAddressSync(collateralMint, user);\n const vault = getAssociatedTokenAddressSync(collateralMint, configPda, true);\n\n return this.program.methods\n .raiseDispute(Array.from(conditionId))\n .accounts({\n user,\n payer,\n disputeConfig: configPda,\n disputeMarket,\n userDispute,\n userAta,\n disputeVault: vault,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n async buildClaimTx(\n conditionId: Uint8Array,\n collateralMint: PublicKey,\n owner: PublicKey,\n user: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [configPda] = PDA.disputeConfig(owner, this.programIds);\n const [disputeMarket] = PDA.disputeMarket(conditionId, this.programIds);\n const [userDispute] = PDA.userDispute(user, conditionId, this.programIds);\n const vault = getAssociatedTokenAddressSync(collateralMint, configPda, true);\n const userAta = getAssociatedTokenAddressSync(collateralMint, user);\n\n return this.program.methods\n .claim(Array.from(conditionId))\n .accounts({\n user,\n disputeConfig: configPda,\n disputeMarket,\n userDispute,\n disputeVault: vault,\n userAta,\n tokenProgram: TOKEN_PROGRAM_ID,\n })\n .transaction();\n }\n\n async buildResolveDisputeTx(\n conditionId: Uint8Array,\n amount: anchor.BN,\n isRefunded: boolean,\n owner: PublicKey,\n admin: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [configPda] = PDA.disputeConfig(owner, this.programIds);\n const [disputeMarket] = PDA.disputeMarket(conditionId, this.programIds);\n\n return this.program.methods\n .resolveDispute(Array.from(conditionId), amount, isRefunded)\n .accounts({\n admin,\n disputeConfig: configPda,\n disputeMarket,\n })\n .transaction();\n }\n}\n","{\n \"address\": \"JE3iUvfv2DjhHnEqf2cFtzMtqn1AYQ5s32e1fzkL6KTo\",\n \"metadata\": {\n \"name\": \"oracle_v2\",\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_reporter\",\n \"docs\": [\n \"Add a new reporter to the oracle whitelist\"\n ],\n \"discriminator\": [\n 158,\n 153,\n 12,\n 6,\n 217,\n 41,\n 252,\n 157\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Admin or owner who can add reporters\"\n ],\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 \"name\": \"reporter_address\",\n \"docs\": [\n \"The address being whitelisted as a reporter\"\n ]\n },\n {\n \"name\": \"reporter\",\n \"docs\": [\n \"The reporter account (PDA)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 112,\n 111,\n 114,\n 116,\n 101,\n 114\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"oracle_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"reporter_address\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"docs\": [\n \"System program for account creation\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"initialize\",\n \"docs\": [\n \"Initialize a new Oracle configuration\"\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\"\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\": \"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_reporter\",\n \"docs\": [\n \"Remove (deactivate) a reporter from the oracle whitelist\"\n ],\n \"discriminator\": [\n 165,\n 229,\n 140,\n 210,\n 40,\n 24,\n 27,\n 34\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Admin or owner who can remove reporters\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"oracle_config\",\n \"docs\": [\n \"The oracle configuration\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"reporter_address\",\n \"docs\": [\n \"The address being removed as a reporter\"\n ]\n },\n {\n \"name\": \"reporter\",\n \"docs\": [\n \"The reporter account (PDA)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 112,\n 111,\n 114,\n 116,\n 101,\n 114\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"oracle_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"reporter_address\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"resolve_question\",\n \"docs\": [\n \"Resolve a question — called by whitelisted reporter\",\n \"Creates a QuestionResult PDA with the payout vector.\",\n \"QuestionMarket reads this to finalize the condition.\"\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_signer\",\n \"docs\": [\n \"The reporter resolving this question\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"oracle_config\",\n \"docs\": [\n \"The oracle configuration\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"reporter\",\n \"docs\": [\n \"The reporter account (must be whitelisted and active)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 112,\n 111,\n 114,\n 116,\n 101,\n 114\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"oracle_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"reporter_signer\"\n }\n ]\n }\n },\n {\n \"name\": \"question_result\",\n \"docs\": [\n \"The question result account (PDA) - stores the resolution\"\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\": \"payer\",\n \"docs\": [\n \"Payer for account creation\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"docs\": [\n \"System program for account creation\"\n ],\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\"\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\": \"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 \"name\": \"Reporter\",\n \"discriminator\": [\n 233,\n 37,\n 148,\n 250,\n 155,\n 158,\n 118,\n 161\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"OracleConfig\",\n \"docs\": [\n \"Global configuration for the Oracle program\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"docs\": [\n \"Owner of the oracle (can transfer ownership)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"admin\",\n \"docs\": [\n \"Admin who can add/remove reporters\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_count\",\n \"docs\": [\n \"Total number of questions resolved through this oracle\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"reporter_count\",\n \"docs\": [\n \"Total number of active reporters\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"is_paused\",\n \"docs\": [\n \"Whether the oracle 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\": \"_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\": \"QuestionResult\",\n \"docs\": [\n \"Stores the resolution result for a question\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"oracle_config\",\n \"docs\": [\n \"The oracle config that resolved this question\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"docs\": [\n \"Unique identifier for the question (32-byte hash)\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"outcome_index\",\n \"docs\": [\n \"Which outcome won (for binary: 0=NO, 1=YES)\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"outcome_count\",\n \"docs\": [\n \"Number of outcomes in this question\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"payout_numerators\",\n \"docs\": [\n \"Full payout vector representing the payout ratios\",\n \"For binary YES win: [0, 1], for NO win: [1, 0]\",\n \"For multi-outcome: [0, 0, 1, 0] means outcome 2 won\"\n ],\n \"type\": {\n \"vec\": \"u64\"\n }\n },\n {\n \"name\": \"is_resolved\",\n \"docs\": [\n \"Whether the question has been resolved\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"resolved_at\",\n \"docs\": [\n \"Timestamp when the question was resolved\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"reporter\",\n \"docs\": [\n \"The reporter who resolved this question\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"docs\": [\n \"Optional link to ConditionalTokens condition (if resolved via CPI)\"\n ],\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump seed for PDA derivation\"\n ],\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"Reporter\",\n \"docs\": [\n \"Represents a whitelisted reporter who can resolve questions\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"oracle_config\",\n \"docs\": [\n \"The oracle config this reporter belongs to\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"reporter\",\n \"docs\": [\n \"The reporter's public key\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"is_active\",\n \"docs\": [\n \"Whether the reporter is currently active\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"questions_reported\",\n \"docs\": [\n \"Number of questions this reporter has resolved\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"added_at\",\n \"docs\": [\n \"Timestamp when the reporter was added\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"last_updated\",\n \"docs\": [\n \"Timestamp when the reporter was last updated\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump seed for PDA derivation\"\n ],\n \"type\": \"u8\"\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"6aYGVgSPNgFxNB9f25UvKrzMs91cGh7urNZKdtnMUm6k\",\n \"metadata\": {\n \"name\": \"question_market_v2\",\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_config\",\n \"docs\": [\n \"FeeConfig PDA — passed to set_market_fee_override CPI.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"market_fee_override\",\n \"docs\": [\n \"MarketFeeOverride PDA — auto-init with is_admin=false and fee_config defaults.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"fee_management_program\",\n \"address\": \"HZ5ec3NbwceUfyzZkwGEzDxQHpr4p4L9JV1gmcPDyXYw\"\n },\n {\n \"name\": \"presale_program\",\n \"address\": \"H9GzTEu5giM1k9HJm126Pp6C6b3iKWahbF7RJj8Jr3zJ\"\n },\n {\n \"name\": \"market_oracle_program\",\n \"address\": \"4o7VyLGV79AynuTjTxDvsUfZKS11bX5SkSsk5zHKVovG\"\n },\n {\n \"name\": \"admin_program\",\n \"address\": \"3E2b2H3ZDMXjqQ1VKDz8zsVXWdRaH5Mjdd7qFB13Uejn\"\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\": \"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\": \"bump_presale_count\",\n \"discriminator\": [\n 42,\n 84,\n 98,\n 9,\n 208,\n 168,\n 38,\n 55\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\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\": \"count\",\n \"type\": \"u64\"\n }\n ]\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\": \"H9GzTEu5giM1k9HJm126Pp6C6b3iKWahbF7RJj8Jr3zJ\"\n },\n {\n \"name\": \"admin_program\",\n \"address\": \"3E2b2H3ZDMXjqQ1VKDz8zsVXWdRaH5Mjdd7qFB13Uejn\"\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\": \"4o7VyLGV79AynuTjTxDvsUfZKS11bX5SkSsk5zHKVovG\"\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\": \"H9GzTEu5giM1k9HJm126Pp6C6b3iKWahbF7RJj8Jr3zJ\"\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 ],\n \"writable\": true\n },\n {\n \"name\": \"fee_config\",\n \"docs\": [\n \"FeeConfig PDA — passed to set_market_fee_override CPI as authority validator.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"market_fee_override\",\n \"docs\": [\n \"MarketFeeOverride PDA — init'd by set_market_fee_override CPI (is_admin=true).\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"fee_management_program\",\n \"address\": \"HZ5ec3NbwceUfyzZkwGEzDxQHpr4p4L9JV1gmcPDyXYw\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\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\": \"H9GzTEu5giM1k9HJm126Pp6C6b3iKWahbF7RJj8Jr3zJ\"\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\": \"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\": \"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 — three parts must sum to FEE_DENOMINATOR (10_000).\",\n \"investors_market_rev + company_market_rev + referral_market_rev == 10_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 = 10_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\": \"referral_market_rev\",\n \"docs\": [\n \"Share of market trading fees routed to referral_vault (e.g. 2_000 = 20%)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"referral_vault\",\n \"docs\": [\n \"ATA of referral program config PDA — receives referral_market_rev% of trading fees\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 28\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 20\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 440\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\": \"3f4vBEgXo9y4Ndrn8KWnNpLLtt4VAGkmKWqXpGS1BLDB\",\n \"metadata\": {\n \"name\": \"conditional_tokens_v2\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Conditional Tokens V2 program for XMarket prediction platform (SPL token, no transfer hook)\"\n },\n \"instructions\": [\n {\n \"name\": \"initialize_vault\",\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 \"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 \"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\": \"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 SPL mints.\",\n \"V2: uses plain SPL token (no transfer hook).\"\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 },\n {\n \"name\": \"condition\",\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 \"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 \"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 \"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 },\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\": \"collateral_mint\"\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\": \"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\": \"authorized_clob\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"redeem_positions\",\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 \"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\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"reinitialize_vault\",\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 \"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 \"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 \"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 \"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_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_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\": \"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 \"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 \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"clob_authority\",\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_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\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 \"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 \"V2: YES/NO mints are plain SPL tokens — no transfer hook, no hook_program field.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\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\": \"outcome_slot_count\",\n \"type\": \"u8\"\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\": \"total_collateral\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"collateral_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"collateral_vault\",\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\": \"authorized_clob\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"is_resolved\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"resolved_at\",\n \"type\": \"i64\"\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\": \"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\": \"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\": \"43ubx86ZnGJ4bzD8uZY91uoUzJdK2jULwSSVk8zHjzEY\",\n \"metadata\": {\n \"name\": \"clob_exchange_v2\",\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\": \"batch_collect_redeem_early\",\n \"docs\": [\n \"Batch collect fee tokens from winning users after question resolution,\",\n \"redeem them via CTF, and distribute USDS via fee_management.\",\n \"Requires each user's CollectFeeOrderRecord to be registered via register_collect_fee_order.\"\n ],\n \"discriminator\": [\n 87,\n 149,\n 45,\n 245,\n 249,\n 25,\n 207,\n 82\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 \"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 \"program\": {\n \"kind\": \"account\",\n \"path\": \"conditional_tokens_program\"\n }\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"fee_recipient\",\n \"docs\": [\n \"CLOB's USDS ATA — receives USDS payout from redeem, then distribute_fee draws from it.\"\n ],\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\": \"clob_yes_ata\",\n \"docs\": [\n \"CLOB's YES ATA (SPL Token) — must be pre-initialized.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"clob_no_ata\",\n \"docs\": [\n \"CLOB's NO ATA (SPL Token) — must be pre-initialized.\"\n ],\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\": \"conditional_tokens_program\",\n \"address\": \"3f4vBEgXo9y4Ndrn8KWnNpLLtt4VAGkmKWqXpGS1BLDB\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"order_count\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"outcome_index\",\n \"type\": \"u8\"\n }\n ]\n },\n {\n \"name\": \"batch_merge_with_fee\",\n \"docs\": [\n \"Batch merge YES+NO tokens before resolution. Returns net USDS to yes_signer, keeps fee.\",\n \"Mirrors EVM _matchMergeOrder flow.\"\n ],\n \"discriminator\": [\n 56,\n 127,\n 113,\n 232,\n 208,\n 177,\n 157,\n 230\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 \"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 \"program\": {\n \"kind\": \"account\",\n \"path\": \"conditional_tokens_program\"\n }\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"fee_recipient\",\n \"docs\": [\n \"CLOB USDS ATA — receives USDS from merge, distributes to users + fee.\"\n ],\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\": \"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\": \"conditional_tokens_program\",\n \"address\": \"3f4vBEgXo9y4Ndrn8KWnNpLLtt4VAGkmKWqXpGS1BLDB\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"order_count\",\n \"type\": \"u8\"\n }\n ]\n },\n {\n \"name\": \"batch_redeem_with_fee\",\n \"docs\": [\n \"Batch redeem YES+NO tokens after resolution. Returns net USDS to users, keeps fee.\",\n \"Mirrors EVM _matchRedeemOrder flow.\"\n ],\n \"discriminator\": [\n 240,\n 238,\n 168,\n 110,\n 84,\n 41,\n 165,\n 2\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 \"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 \"program\": {\n \"kind\": \"account\",\n \"path\": \"conditional_tokens_program\"\n }\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"fee_recipient\",\n \"docs\": [\n \"CLOB USDS ATA — receives USDS from redeem, distributes to users + fee.\"\n ],\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\": \"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\": \"conditional_tokens_program\",\n \"address\": \"3f4vBEgXo9y4Ndrn8KWnNpLLtt4VAGkmKWqXpGS1BLDB\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"order_count\",\n \"type\": \"u8\"\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 or SELL) + N makers (opposite side) 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\": \"3f4vBEgXo9y4Ndrn8KWnNpLLtt4VAGkmKWqXpGS1BLDB\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\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 \"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\": \"3f4vBEgXo9y4Ndrn8KWnNpLLtt4VAGkmKWqXpGS1BLDB\"\n },\n {\n \"name\": \"collateral_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\": \"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 \"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\": \"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\": \"3f4vBEgXo9y4Ndrn8KWnNpLLtt4VAGkmKWqXpGS1BLDB\"\n },\n {\n \"name\": \"collateral_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\": \"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_collect_fee_order\",\n \"docs\": [\n \"Register a signed CollectFeeOrder on-chain (Ed25519 verify at registration time).\",\n \"ix[0] must be Ed25519 precompile with 1 entry for order.user.\",\n \"Call once per user before batch_collect_redeem_early.\"\n ],\n \"discriminator\": [\n 63,\n 26,\n 202,\n 98,\n 195,\n 2,\n 211,\n 36\n ],\n \"accounts\": [\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\": \"ix_sysvar\",\n \"address\": \"Sysvar1nstructions1111111111111111111111111\"\n },\n {\n \"name\": \"order_signer\"\n },\n {\n \"name\": \"collect_fee_order_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 108,\n 108,\n 101,\n 99,\n 116,\n 95,\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\": \"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\": \"register_redeem_fee_order\",\n \"docs\": [\n \"Register a signed RedeemFeeOrder on-chain (Ed25519 verify + PDA creation).\",\n \"Prerequisite for batch_redeem_with_fee and batch_merge_with_fee.\"\n ],\n \"discriminator\": [\n 129,\n 167,\n 199,\n 14,\n 217,\n 12,\n 76,\n 162\n ],\n \"accounts\": [\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\": \"ix_sysvar\",\n \"address\": \"Sysvar1nstructions1111111111111111111111111\"\n },\n {\n \"name\": \"order_signer\"\n },\n {\n \"name\": \"redeem_fee_order_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 100,\n 101,\n 101,\n 109,\n 95,\n 102,\n 101,\n 101,\n 95,\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\": \"CollectFeeOrderRecord\",\n \"discriminator\": [\n 145,\n 140,\n 193,\n 74,\n 12,\n 98,\n 74,\n 130\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\": \"RedeemFeeOrderRecord\",\n \"discriminator\": [\n 88,\n 3,\n 122,\n 192,\n 131,\n 243,\n 143,\n 146\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\": \"CollectFeeOrderRecord\",\n \"docs\": [\n \"On-chain record of a signed CollectFeeOrder.\",\n \"Created by `register_collect_fee_order` after Ed25519 verification.\",\n \"Read and marked collected by `batch_collect_redeem_early`.\",\n \"\",\n \"PDA seeds: [b\\\"collect_order\\\", user, nonce_le_bytes]\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"token_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"is_collected\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\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 \"V2: YES/NO mints are plain SPL tokens — no transfer hook, no hook_program field.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\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\": \"outcome_slot_count\",\n \"type\": \"u8\"\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\": \"total_collateral\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"collateral_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"collateral_vault\",\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\": \"authorized_clob\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"is_resolved\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"resolved_at\",\n \"type\": \"i64\"\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\": \"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\": \"RedeemFeeOrderRecord\",\n \"docs\": [\n \"On-chain record of a signed RedeemFeeOrder.\",\n \"Created by `register_redeem_fee_order` after Ed25519 verification.\",\n \"Read and marked collected by `batch_redeem_with_fee` / `batch_merge_with_fee`.\",\n \"\",\n \"PDA seeds: [b\\\"redeem_fee_order\\\", user, nonce_le_bytes]\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"token_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"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\": \"is_collected\",\n \"type\": \"bool\"\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\": \"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 (investors share) when is_admin=false.\",\n \"For admin questions pass any writable account (no transfer occurs).\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"referral_vault\",\n \"docs\": [\n \"Must match fee_config.referral_vault.\"\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\": \"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\": \"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 — three parts must sum to FEE_DENOMINATOR (10_000).\",\n \"investors_market_rev + company_market_rev + referral_market_rev == 10_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 = 10_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\": \"referral_market_rev\",\n \"docs\": [\n \"Share of market trading fees routed to referral_vault (e.g. 2_000 = 20%)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"referral_vault\",\n \"docs\": [\n \"ATA of referral program config PDA — receives referral_market_rev% of trading fees\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 28\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 \"name\": \"referral_market_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"referral_vault\",\n \"type\": \"pubkey\"\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 \"name\": \"referral_market_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"referral_vault\",\n \"type\": \"pubkey\"\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\": [156, 10, 79, 161, 71, 9, 62, 77]\n },\n {\n \"name\": \"ClaimRecord\",\n \"discriminator\": [57, 229, 0, 9, 65, 62, 96, 7]\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 28\n ]\n }\n },\n {\n \"name\": \"whitelist_len\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\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}","{\n \"address\": \"7b5ohWDqrQ2KRcDJMWwj1dwgRkt5ZJdMavSmrXn9oBgL\",\n \"metadata\": {\n \"name\": \"referral\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Referral program for XMarket — whitelist-gated batch USDS distribution\"\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\": \"owner\",\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 114,\n 101,\n 102,\n 101,\n 114,\n 114,\n 97,\n 108,\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\": \"ReferralConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"batch_send_usds\",\n \"discriminator\": [\n 255,\n 33,\n 77,\n 124,\n 42,\n 207,\n 250,\n 162\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Whitelisted caller (authority, signs tx)\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 102,\n 101,\n 114,\n 114,\n 97,\n 108,\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\": \"ReferralConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"referral_vault\",\n \"docs\": [\n \"Referral vault — source of transfers (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\": \"ReferralConfig\"\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 \"args\": [\n {\n \"name\": \"amounts\",\n \"type\": {\n \"vec\": \"u64\"\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\": \"owner\",\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 114,\n 101,\n 102,\n 101,\n 114,\n 114,\n 97,\n 108,\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\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\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\": \"owner\",\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 114,\n 101,\n 102,\n 101,\n 114,\n 114,\n 97,\n 108,\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\": \"ReferralConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"ReferralConfig\",\n \"discriminator\": [\n 102,\n 148,\n 171,\n 235,\n 148,\n 83,\n 250,\n 140\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"BatchSent\",\n \"discriminator\": [\n 116,\n 64,\n 207,\n 63,\n 56,\n 97,\n 15,\n 100\n ]\n },\n {\n \"name\": \"ReferralInitialized\",\n \"discriminator\": [\n 129,\n 190,\n 249,\n 4,\n 198,\n 5,\n 141,\n 226\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"BatchSent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"sent_by\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"recipients\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"ReferralConfig\",\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\": \"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\": \"ReferralInitialized\",\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 }\n }\n ]\n}","{\n \"address\": \"4toSDWDCcx37R6HZ78P71nDp3NNoJvcmQpzP4sfivVvL\",\n \"metadata\": {\n \"name\": \"dispute\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Dispute program for XMarket — raise/resolve/claim disputes on prediction markets\"\n },\n \"instructions\": [\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\": \"user\",\n \"signer\": true\n },\n {\n \"name\": \"dispute_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"dispute_config.owner\",\n \"account\": \"DisputeConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"dispute_market\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101,\n 95,\n 109,\n 97,\n 114,\n 107,\n 101,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ]\n }\n },\n {\n \"name\": \"user_dispute\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 117,\n 115,\n 101,\n 114,\n 95,\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"user\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ]\n }\n },\n {\n \"name\": \"dispute_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"dispute_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\": \"dispute_config.collateral_mint\",\n \"account\": \"DisputeConfig\"\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_ata\",\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\": \"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\": \"dispute_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101,\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\": \"dispute_vault\",\n \"docs\": [\n \"ATA owned by dispute_config PDA — holds USDS bonds from all dispute raisers\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"dispute_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 {\n \"name\": \"raise_dispute\",\n \"discriminator\": [\n 41,\n 243,\n 1,\n 51,\n 150,\n 95,\n 246,\n 73\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\": \"dispute_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"dispute_config.owner\",\n \"account\": \"DisputeConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"dispute_market\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101,\n 95,\n 109,\n 97,\n 114,\n 107,\n 101,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ]\n }\n },\n {\n \"name\": \"user_dispute\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 117,\n 115,\n 101,\n 114,\n 95,\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"user\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ]\n }\n },\n {\n \"name\": \"user_ata\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"user\"\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\": \"dispute_config.collateral_mint\",\n \"account\": \"DisputeConfig\"\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\": \"dispute_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"dispute_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\": \"dispute_config.collateral_mint\",\n \"account\": \"DisputeConfig\"\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\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"resolve_dispute\",\n \"discriminator\": [\n 231,\n 6,\n 202,\n 6,\n 96,\n 103,\n 12,\n 230\n ],\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"signer\": true\n },\n {\n \"name\": \"dispute_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"dispute_config.owner\",\n \"account\": \"DisputeConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"dispute_market\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101,\n 95,\n 109,\n 97,\n 114,\n 107,\n 101,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ]\n }\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 \"name\": \"is_refunded\",\n \"type\": \"bool\"\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\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"dispute_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101,\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 \"args\": [\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"DisputeConfig\",\n \"discriminator\": [\n 230,\n 88,\n 200,\n 99,\n 12,\n 93,\n 56,\n 156\n ]\n },\n {\n \"name\": \"DisputeMarket\",\n \"discriminator\": [\n 235,\n 222,\n 113,\n 250,\n 83,\n 196,\n 239,\n 159\n ]\n },\n {\n \"name\": \"UserDispute\",\n \"discriminator\": [\n 54,\n 252,\n 42,\n 67,\n 211,\n 11,\n 192,\n 188\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"DisputeConfig\",\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\": \"collateral_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"DisputeMarket\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"deadline\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"bond\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"is_resolved\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"UserDispute\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\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 { 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\";\nimport { ReferralClient } from \"./programs/referral\";\nimport { DisputeClient } from \"./programs/dispute\";\n\nimport oracleIdl from \"./idls/oracle.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\";\nimport referralIdl from \"./idls/referral.json\";\nimport disputeIdl from \"./idls/dispute.json\";\n\n/**\n * XMarketSDK — V2 SDK.\n *\n * Key differences from the old v1 SDK:\n * - Uses V2 program IDs (conditionalTokens, clobExchange, questionMarket)\n * - CtfClient: plain SPL TOKEN_PROGRAM_ID for YES/NO mints, no hook\n * - ClobClient: no hookClient, no hook accounts in match instructions\n * - MarketClient: no hookProgram param in createQuestionAdmin / approvePresale\n * - No HookClient (hook program removed entirely)\n *\n * Usage:\n * const sdk = new XMarketSDK(DEVNET_CONFIG, wallet, marketOwner);\n * await sdk.market.createQuestionAdmin(params, oracle); // no hookProgram\n * await sdk.clob.matchOrders(taker, makers); // no hook in remainingAccounts\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 _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;\n private _referral?: ReferralClient;\n private _dispute?: DisputeClient;\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 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 this._market.feeConfigOwner = this.networkConfig.feeConfigOwner ?? this._marketOwner;\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 this._clob.ctfClient = this.ctf;\n this._clob.qmConfigPda = this.market.configPda;\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 get referral(): ReferralClient {\n if (!this._referral) {\n if (!this._programIds.referral) throw new Error(\"referral program ID not configured in NetworkConfig\");\n const program = new anchor.Program(this._withAddress(referralIdl, this._programIds.referral), this.provider);\n this._referral = new ReferralClient(program, this.provider, this._programIds);\n }\n return this._referral;\n }\n\n get dispute(): DisputeClient {\n if (!this._dispute) {\n if (!this._programIds.dispute) throw new Error(\"dispute program ID not configured in NetworkConfig\");\n const program = new anchor.Program(this._withAddress(disputeIdl, this._programIds.dispute), this.provider);\n this._dispute = new DisputeClient(program, this.provider, this._programIds);\n }\n return this._dispute;\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 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 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_PROGRAM_ID);\n const noAta = getAssociatedTokenAddressSync(noMint, user, false, TOKEN_PROGRAM_ID);\n\n const tx = new Transaction();\n tx.feePayer = payer;\n tx.add(\n createAssociatedTokenAccountIdempotentInstruction(\n payer, yesAta, user, yesMint, TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID,\n ),\n createAssociatedTokenAccountIdempotentInstruction(\n payer, noAta, user, noMint, TOKEN_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_PROGRAM_ID);\n const noAta = getAssociatedTokenAddressSync(noMint, signer, false, TOKEN_PROGRAM_ID);\n const amountBig = BigInt(amount.toString());\n\n const approveYesIx = createApproveInstruction(\n yesAta, delegate, signer, amountBig, [], );\n const approveNoIx = createApproveInstruction(\n noAta, delegate, signer, amountBig, [], );\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/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/programs/referral.ts","../src/programs/dispute.ts","../src/idls/oracle.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/idls/referral.json","../src/idls/dispute.json","../src/sdk.ts","../src/approve.ts"],"names":["anchor","QuestionStatus","PublicKey","SystemProgram","anchor2","TOKEN_PROGRAM_ID","SYSVAR_RENT_PUBKEY","getAssociatedTokenAddressSync","ASSOCIATED_TOKEN_PROGRAM_ID","Transaction","anchor3","TransactionInstruction","BN","aBuy","bBuy","createAssociatedTokenAccountIdempotentInstruction","Ed25519Program","SYSVAR_INSTRUCTIONS_PUBKEY","ComputeBudgetProgram","TransactionMessage","VersionedTransaction","anchor4","nacl","oracleVaultInitIx","preIxs","ixs","anchor5"],"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 clobConfig: Buffer.from(\"clob_config\"),\n order: Buffer.from(\"order\"),\n feeConfig: Buffer.from(\"fee_config\"),\n referralConfig: Buffer.from(\"referral_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 // Dispute\n disputeConfig: Buffer.from(\"dispute_config\"),\n disputeMarket: Buffer.from(\"dispute_market\"),\n userDispute: Buffer.from(\"user_dispute\"),\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 // ─── 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 static collectFeeOrderRecord(\n user: 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(\"collect_order\"), user.toBuffer(), nonceBuf],\n programIds.clobExchange\n );\n }\n\n static redeemFeeOrderRecord(\n user: 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(\"redeem_fee_order\"), user.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 // ─── Referral Program ────────────────────────────────────────────────────\n\n static referralConfig(\n owner: PublicKey,\n programIds: Pick<ProgramIds, \"referral\">\n ): [PublicKey, number] {\n if (!programIds.referral) throw new Error(\"referral program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.referralConfig, owner.toBuffer()],\n programIds.referral\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 // ─── Dispute ─────────────────────────────────────────────────────────────\n\n static disputeConfig(\n owner: PublicKey,\n programIds: Pick<ProgramIds, \"dispute\">\n ): [PublicKey, number] {\n if (!programIds.dispute) throw new Error(\"dispute program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.disputeConfig, owner.toBuffer()],\n programIds.dispute\n );\n }\n\n static disputeMarket(\n conditionId: Uint8Array,\n programIds: Pick<ProgramIds, \"dispute\">\n ): [PublicKey, number] {\n if (!programIds.dispute) throw new Error(\"dispute program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.disputeMarket, Buffer.from(conditionId)],\n programIds.dispute\n );\n }\n\n static userDispute(\n user: PublicKey,\n conditionId: Uint8Array,\n programIds: Pick<ProgramIds, \"dispute\">\n ): [PublicKey, number] {\n if (!programIds.dispute) throw new Error(\"dispute program ID not configured\");\n return PublicKey.findProgramAddressSync(\n [SEEDS.userDispute, user.toBuffer(), Buffer.from(conditionId)],\n programIds.dispute\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 registers a reporter PDA. */\n async addReporter(\n reporterAddress: PublicKey,\n ownerPubkey?: PublicKey,\n ): Promise<TxResult> {\n const oracleConfig = this.configPda(ownerPubkey);\n const [reporterPda] = PDA.reporter(oracleConfig, reporterAddress, this.programIds);\n const sig = await this.program.methods\n .addReporter()\n .accounts({\n authority: this.walletPubkey,\n oracleConfig,\n reporterAddress,\n reporter: reporterPda,\n systemProgram: SystemProgram.programId,\n })\n .rpc();\n return { signature: sig };\n }\n\n /** Admin or owner removes a reporter PDA. */\n async removeReporter(\n reporterAddress: PublicKey,\n ownerPubkey?: PublicKey,\n ): Promise<TxResult> {\n const oracleConfig = this.configPda(ownerPubkey);\n const [reporterPda] = PDA.reporter(oracleConfig, reporterAddress, this.programIds);\n const sig = await this.program.methods\n .removeReporter()\n .accounts({\n authority: this.walletPubkey,\n oracleConfig,\n reporterAddress,\n reporter: reporterPda,\n systemProgram: SystemProgram.programId,\n })\n .rpc();\n return { signature: sig };\n }\n\n /**\n * Registered reporter resolves a question.\n * reporterSigner signs; payer covers rent for question_result PDA.\n */\n async resolveQuestion(\n questionId: Uint8Array,\n outcomeCount: number,\n payoutNumerators: number[],\n reporterSigner: PublicKey = this.walletPubkey,\n payer: PublicKey = this.walletPubkey,\n ownerPubkey?: PublicKey,\n ): Promise<Transaction> {\n const oracleConfig = this.configPda(ownerPubkey);\n const [reporterPda] = PDA.reporter(oracleConfig, reporterSigner, this.programIds);\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 reporterSigner,\n oracleConfig,\n reporter: reporterPda,\n questionResult: questionResultPda,\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 reporterCount: acc.reporterCount.toNumber(),\n isPaused: acc.isPaused,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n /** Check if an address is a registered reporter (Reporter PDA exists). */\n async isReporter(\n reporterAddress: PublicKey,\n ownerPubkey?: PublicKey,\n ): Promise<boolean> {\n try {\n const oracleConfig = this.configPda(ownerPubkey);\n const [reporterPda] = PDA.reporter(oracleConfig, reporterAddress, this.programIds);\n const info = await this.provider.connection.getAccountInfo(reporterPda);\n return info !== null;\n } catch {\n return false;\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 { 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 reporterCount: 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 authorizedClob: PublicKey;\n authorizedResolver: 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 oracleProgram: 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 /** 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// ─── CLOB Exchange ────────────────────────────────────────────────────────────\n\nexport interface ClobConfig {\n admin: 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/** Authorization for CLOB to collect fee_amount winning tokens after question resolution. */\nexport interface CollectFeeOrder {\n user: PublicKey;\n condition: PublicKey;\n tokenMint: PublicKey;\n amount: BN;\n nonce: BN;\n /** Unix timestamp, 0 = no expiry */\n expiry: BN;\n}\n\nexport interface SignedCollectFeeOrder {\n order: CollectFeeOrder;\n /** Ed25519 signature (64 bytes) from order.user over serializeCollectFeeOrderToBytes() */\n signature: Uint8Array;\n}\n\n/**\n * Authorization for CLOB to collect YES or NO tokens for redeem/merge, returning net USDS after fee.\n * Used with batchRedeemWithFee and batchMergeWithFee instructions.\n */\nexport interface RedeemFeeOrder {\n user: PublicKey;\n condition: PublicKey;\n tokenMint: PublicKey;\n amount: BN;\n /** Net USDS to receive back after fee deduction. 0 for the losing side. */\n takerAmount: BN;\n nonce: BN;\n expiry: BN;\n}\n\nexport interface SignedRedeemFeeOrder {\n order: RedeemFeeOrder;\n /** Ed25519 signature (64 bytes) from order.user over serializeRedeemFeeOrderToBytes() */\n signature: Uint8Array;\n}\n\n/** A pair of YES + NO orders for one user in batchRedeemWithFee / batchMergeWithFee. */\nexport interface RedeemFeeOrderPair {\n yes: SignedRedeemFeeOrder;\n no: SignedRedeemFeeOrder;\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 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 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 /** Injected by XMarketSDK — fee config owner (= market owner) for MarketFeeOverride PDA derivation */\n feeConfigOwner?: PublicKey;\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 oracleProgram: 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 oracleProgram,\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: import(\"../types\").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 if (!this.feeConfigOwner) throw new Error(\"feeConfigOwner not configured\");\n const [questionFeePda] = PDA.questionFee(conditionPda, this.programIds);\n const [feeConfigPda] = PDA.feeConfig(this.feeConfigOwner, this.programIds);\n const [marketFeeOverride] = PDA.marketFeeOverride(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 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 feeConfig: feeConfigPda,\n marketFeeOverride,\n feeManagementProgram: this.programIds.feeManagement,\n tokenProgram: TOKEN_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; newOracleProgram?: 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 newOracleProgram: params.newOracleProgram ?? 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 async bumpPresaleCount(\n count: number,\n authority: PublicKey,\n ): Promise<Transaction> {\n return this.program.methods\n .bumpPresaleCount(new anchor.BN(count))\n .accounts({ authority, config: this.configPda })\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 oracleProgram: acc.oracleProgram,\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[]).slice(0, acc.whitelistLen),\n whitelistLen: acc.whitelistLen,\n isPaused: acc.isPaused,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n /** Check if address is in question_market whitelist (can call createQuestion) */\n async isWhitelisted(address: PublicKey): Promise<boolean> {\n const cfg = await this.fetchConfig();\n return cfg?.whitelist.some(k => k.equals(address)) ?? false;\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 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 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, 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 const [claimRecord] = PDA.claimRecord(conditionPda.toBytes(), this.programIds);\n const feeConfigOwner = this.feeConfigOwner ?? adminOwner;\n const [feeConfigPda] = PDA.feeConfig(feeConfigOwner, this.programIds);\n const [marketFeeOverride] = PDA.marketFeeOverride(conditionPda, this.programIds);\n\n const builder = this.program.methods\n .approvePresale({\n contentHash: Array.from(contentHash) as number[],\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 feeConfig: feeConfigPda,\n marketFeeOverride,\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 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 * Resolve a question by reading the oracle question_result PDA and updating the CTF condition.\n * Must be called after sdk.oracle.resolveQuestion records the result.\n * Caller must be on the question_market whitelist.\n */\n async resolveQuestion(\n questionId: Uint8Array,\n conditionPda: PublicKey,\n oracleOwner: PublicKey,\n payer: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n if (!this.programIds.oracle) throw new Error(\"oracle program ID not configured\");\n const [questionPda] = PDA.question(this.configPda, questionId, this.programIds);\n const oracleConfigPda = PDA.oracleConfig(oracleOwner, this.programIds)[0];\n const [questionResult] = PDA.questionResult(oracleConfigPda, questionId, this.programIds);\n return this.program.methods\n .resolveQuestion(Array.from(questionId) as number[])\n .accounts({\n payer,\n config: this.configPda,\n question: questionPda,\n questionResult,\n condition: conditionPda,\n ctfProgram: this.programIds.conditionalTokens,\n oracleProgram: this.programIds.oracle,\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 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 * V2: uses plain SPL TOKEN_PROGRAM_ID for YES/NO mints — no hook program.\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 authorizedClob: PublicKey,\n authorizedResolver: PublicKey = oracle,\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 authorizedClob,\n authorizedResolver\n )\n .accounts({\n oracle,\n condition: conditionPda,\n yesMint,\n noMint,\n mintAuthority,\n collateralMint,\n collateralVault,\n payer,\n tokenProgram: TOKEN_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 [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 payer: this.walletPubkey,\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 * V2: uses TOKEN_PROGRAM_ID for YES/NO mints (plain SPL, no Token-2022).\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_PROGRAM_ID);\n const userNoAta = getAssociatedTokenAddressSync(noMint, user, false, TOKEN_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 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 * V2: uses TOKEN_PROGRAM_ID for YES/NO mints (plain SPL, no Token-2022).\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_PROGRAM_ID);\n const userNoAta = getAssociatedTokenAddressSync(noMint, user, false, TOKEN_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 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 * V2: uses TOKEN_PROGRAM_ID for YES/NO mints (plain SPL, no Token-2022).\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_PROGRAM_ID);\n const userNoAta = getAssociatedTokenAddressSync(noMint, user, false, TOKEN_PROGRAM_ID);\n const userCollateral = getAssociatedTokenAddressSync(collateralMint, user);\n\n const createYesAtaIx = createAssociatedTokenAccountIdempotentInstruction(\n payer, userYesAta, user, yesMint, TOKEN_PROGRAM_ID,\n );\n const createNoAtaIx = createAssociatedTokenAccountIdempotentInstruction(\n payer, userNoAta, user, noMint, TOKEN_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 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 * V2: uses TOKEN_PROGRAM_ID (plain SPL) for outcome mints.\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 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 tokenProgram: TOKEN_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 authorizedClob: acc.authorizedClob,\n authorizedResolver: acc.authorizedResolver,\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 { CollectFeeOrder, Order, RedeemFeeOrder, SignedCollectFeeOrder, SignedOrder, SignedRedeemFeeOrder } 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 */\n// ─── CollectFeeOrder serialization ───────────────────────────────────────────\n\n/**\n * Serialize a CollectFeeOrder to 120 bytes — must match Rust `CollectFeeOrder::to_signable_bytes()`.\n * [0..32] user pubkey\n * [32..64] condition pubkey\n * [64..96] token_mint pubkey\n * [96..104] amount (u64 le)\n * [104..112] nonce (u64 le)\n * [112..120] expiry (i64 le)\n */\nexport function serializeCollectFeeOrderToBytes(order: CollectFeeOrder): Uint8Array {\n const buf = new Uint8Array(120);\n buf.set(order.user.toBytes(), 0);\n buf.set(order.condition.toBytes(), 32);\n buf.set(order.tokenMint.toBytes(), 64);\n buf.set(order.amount.toArrayLike(Buffer, \"le\", 8), 96);\n buf.set(order.nonce.toArrayLike(Buffer, \"le\", 8), 104);\n buf.set(order.expiry.toArrayLike(Buffer, \"le\", 8), 112);\n return buf;\n}\n\n/**\n * Build a batched Ed25519 precompile instruction for N signed CollectFeeOrders.\n * Same layout as buildBatchedEd25519Instruction but with 120-byte messages.\n */\nexport function buildBatchedCollectFeeEd25519Instruction(\n orders: SignedCollectFeeOrder[],\n): TransactionInstruction {\n const N = orders.length;\n if (N === 0) throw new Error(\"At least 1 order required\");\n\n const MSG_SIZE = 120;\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);\n data.writeUInt16LE(0xffff, e + 2);\n data.writeUInt16LE(pkBase + i * PK_SIZE, e + 4);\n data.writeUInt16LE(0xffff, e + 6);\n data.writeUInt16LE(msgBase + i * MSG_SIZE, e + 8);\n data.writeUInt16LE(MSG_SIZE, e + 10);\n data.writeUInt16LE(0xffff, e + 12);\n\n data.set(orders[i].signature, sigBase + i * SIG_SIZE);\n data.set(orders[i].order.user.toBytes(), pkBase + i * PK_SIZE);\n data.set(serializeCollectFeeOrderToBytes(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// ─── RedeemFeeOrder serialization ────────────────────────────────────────────\n\n/**\n * Serialize a RedeemFeeOrder to 128 bytes — must match Rust `RedeemFeeOrder::to_signable_bytes()`.\n * [0..32] user pubkey\n * [32..64] condition pubkey\n * [64..96] token_mint pubkey\n * [96..104] amount (u64 le)\n * [104..112] taker_amount (u64 le)\n * [112..120] nonce (u64 le)\n * [120..128] expiry (i64 le)\n */\nexport function serializeRedeemFeeOrderToBytes(order: RedeemFeeOrder): Uint8Array {\n const buf = new Uint8Array(128);\n buf.set(order.user.toBytes(), 0);\n buf.set(order.condition.toBytes(), 32);\n buf.set(order.tokenMint.toBytes(), 64);\n buf.set(order.amount.toArrayLike(Buffer, \"le\", 8), 96);\n buf.set(order.takerAmount.toArrayLike(Buffer, \"le\", 8), 104);\n buf.set(order.nonce.toArrayLike(Buffer, \"le\", 8), 112);\n buf.set(order.expiry.toArrayLike(Buffer, \"le\", 8), 120);\n return buf;\n}\n\n/**\n * Build a batched Ed25519 precompile instruction for N signed RedeemFeeOrders.\n * Same layout as buildBatchedCollectFeeEd25519Instruction but with 128-byte messages.\n */\nexport function buildBatchedRedeemFeeEd25519Instruction(\n orders: SignedRedeemFeeOrder[],\n): TransactionInstruction {\n const N = orders.length;\n if (N === 0) throw new Error(\"At least 1 order required\");\n\n const MSG_SIZE = 128;\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);\n data.writeUInt16LE(0xffff, e + 2);\n data.writeUInt16LE(pkBase + i * PK_SIZE, e + 4);\n data.writeUInt16LE(0xffff, e + 6);\n data.writeUInt16LE(msgBase + i * MSG_SIZE, e + 8);\n data.writeUInt16LE(MSG_SIZE, e + 10);\n data.writeUInt16LE(0xffff, e + 12);\n\n data.set(orders[i].signature, sigBase + i * SIG_SIZE);\n data.set(orders[i].order.user.toBytes(), pkBase + i * PK_SIZE);\n data.set(serializeRedeemFeeOrderToBytes(orders[i].order), msgBase + i * MSG_SIZE);\n }\n\n return new TransactionInstruction({\n keys: [],\n programId: Ed25519Program.programId,\n data,\n });\n}\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 Transaction,\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 ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n createAssociatedTokenAccountIdempotentInstruction,\n} from \"@solana/spl-token\";\nimport { PDA } from \"../pda\";\nimport { ProgramIds } from \"../config/networks\";\nimport {\n ClobConfig, OrderStatus, SignedCollectFeeOrder, SignedOrder, TxResult, InvalidParamError,\n RedeemFeeOrderPair, SignedRedeemFeeOrder,\n} from \"../types\";\nimport {\n buildBatchedCollectFeeEd25519Instruction,\n buildBatchedEd25519Instruction,\n buildBatchedRedeemFeeEd25519Instruction,\n IX_SYSVAR,\n serializeOrderToBytes,\n} from \"../signing\";\nimport { buildOrderFromPrice } from \"../order\";\nimport type { FeeManagementClient } from \"./fee_management\";\nimport type { CtfClient } from \"./ctf\";\n\n/**\n * ClobClient — V2 variant of the CLOB client.\n * Key differences from the old v1 ClobClient:\n * - No hookClient dependency (Token-2022 hook removed)\n * - YES/NO token ATAs use TOKEN_PROGRAM_ID (plain SPL) instead of TOKEN_2022_PROGRAM_ID\n * - No hook accounts in remainingAccounts for any match instruction\n * - No extraAccountMetaList / hookConfig PDAs included in ALTs or remainingAccounts\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 /** Injected by XMarketSDK — enables auto-derive of marketOracleVault for presale markets */\n ctfClient?: CtfClient;\n qmConfigPda?: PublicKey;\n\n /** Cached company_address from fee_config to avoid repeated RPC calls */\n private _companyAddress?: PublicKey;\n /** Cached referral_vault from fee_config */\n private _referralVault?: PublicKey;\n /** Cache: conditionPda.toBase58() → marketOracleVault ATA */\n private _marketOracleVaultCache = new Map<string, 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) {\n this._companyAddress = cfg.companyAddress;\n this._referralVault = cfg.referralVault;\n }\n }\n return this._companyAddress;\n }\n\n private async referralVault(): Promise<PublicKey | undefined> {\n await this.companyAddress(); // populates _referralVault as side-effect\n return this._referralVault;\n }\n\n /**\n * Derive marketOracleVault ATA for a condition, cached per condition.\n * Works for presale markets (market_oracle initialized by approvePresale).\n * Returns undefined if ctfClient/qmConfigPda not injected or marketOracle not configured.\n */\n private async getMarketOracleVault(\n condition: PublicKey,\n collateralMint: PublicKey,\n ): Promise<PublicKey | undefined> {\n if (!this.ctfClient || !this.qmConfigPda || !this.programIds.marketOracle) return undefined;\n const key = condition.toBase58();\n const cached = this._marketOracleVaultCache.get(key);\n if (cached) return cached;\n const cond = await this.ctfClient.fetchCondition(condition);\n if (!cond) return undefined;\n const [questionPda] = PDA.question(this.qmConfigPda, cond.questionId, this.programIds);\n const [marketOraclePda] = PDA.marketOraclePda(questionPda, this.programIds);\n const vault = getAssociatedTokenAddressSync(collateralMint, marketOraclePda, true);\n this._marketOracleVaultCache.set(key, vault);\n return vault;\n }\n\n /**\n * Returns a createATA ix for the oracle vault when:\n * - takerFee > 0\n * - marketFeeOverride exists for the condition\n * - oracle vault ATA is not yet initialized\n * Idempotent — safe to call every tx; returns null if vault already exists.\n */\n private async buildInitOracleVaultIfNeeded(\n condition: PublicKey,\n collateralMint: PublicKey,\n takerFee: anchor.BN,\n payer: PublicKey,\n ): Promise<TransactionInstruction | null> {\n if (takerFee.isZero()) return null;\n if (!this.feeConfigOwner || !this.programIds.feeManagement) return null;\n if (!this.ctfClient || !this.qmConfigPda || !this.programIds.marketOracle) return null;\n\n const companyAddr = await this.companyAddress();\n const refVault = await this.referralVault();\n if (!companyAddr || !refVault) return null;\n\n const feeOverridePda = PDA.marketFeeOverride(condition, this.programIds)[0];\n const cond = await this.ctfClient.fetchCondition(condition);\n if (!cond) return null;\n\n const [questionPda] = PDA.question(this.qmConfigPda, cond.questionId, this.programIds);\n const [marketOraclePda] = PDA.marketOraclePda(questionPda, this.programIds);\n const vault = getAssociatedTokenAddressSync(collateralMint, marketOraclePda, true);\n\n const [feeOverrideInfo, vaultInfo] = await Promise.all([\n this.provider.connection.getAccountInfo(feeOverridePda),\n this.provider.connection.getAccountInfo(vault),\n ]);\n\n if (!feeOverrideInfo) return null; // no fee override → distribute_fee not called\n if (vaultInfo) return null; // vault already exists → no init needed\n\n return createAssociatedTokenAccountIdempotentInstruction(\n payer, vault, marketOraclePda, collateralMint,\n );\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 * V2: no hook accounts — TOKEN_2022_PROGRAM_ID and hook PDAs are excluded.\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 [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 TOKEN_PROGRAM_ID,\n SystemProgram.programId,\n SYSVAR_INSTRUCTIONS_PUBKEY,\n clobConfigPda,\n condition,\n yesMint,\n noMint,\n taker,\n getAssociatedTokenAddressSync(collateralMint, taker),\n getAssociatedTokenAddressSync(outcomeMint, taker, false, TOKEN_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 clobUsdcAta = getAssociatedTokenAddressSync(collateralMint, clobConfigPda, true);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfigPda, true, TOKEN_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfigPda, true, TOKEN_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,\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_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 const refVault = await this.referralVault();\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 const oracleVaultForAlt = await this.getMarketOracleVault(condition, collateralMint) ?? payer;\n addresses.push(oracleVaultForAlt);\n if (refVault) {\n addresses.push(refVault);\n }\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_PROGRAM_ID,\n ));\n }\n if (!noInfo) {\n ixs.push(createAssociatedTokenAccountIdempotentInstruction(\n this.walletPubkey, clobNoAta, clobConfig, noMint, TOKEN_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 // ─── Register CollectFeeOrder ────────────────────────────────────────────────\n\n /**\n * Build a legacy Transaction to register a CollectFeeOrder on-chain.\n * Must be signed and sent before calling buildBatchCollectRedeemEarlyTx.\n *\n * Flow: [Ed25519 ix (1 user sig) + register_collect_fee_order ix]\n * Caller signs with payer keypair and sends.\n */\n async buildRegisterCollectFeeOrderTx(\n signedOrder: SignedCollectFeeOrder,\n payer: PublicKey,\n ): Promise<Transaction> {\n const { order } = signedOrder;\n const [collectFeeOrderRecord] = PDA.collectFeeOrderRecord(order.user, order.nonce, this.programIds);\n\n const ed25519Ix = buildBatchedCollectFeeEd25519Instruction([signedOrder]);\n const registerIx = await this.program.methods\n .registerCollectFeeOrder(order.nonce)\n .accounts({\n payer,\n clobConfig: this.configPda(),\n ixSysvar: IX_SYSVAR,\n orderSigner: order.user,\n collectFeeOrderRecord,\n systemProgram: SystemProgram.programId,\n })\n .instruction();\n\n const { blockhash } = await this.provider.connection.getLatestBlockhash();\n const tx = new Transaction();\n tx.recentBlockhash = blockhash;\n tx.feePayer = payer;\n tx.add(ed25519Ix, registerIx);\n return tx;\n }\n\n /**\n * Register a CollectFeeOrder on-chain and send immediately (operator-signed flow).\n * Idempotent — skips if PDA already exists.\n */\n async registerCollectFeeOrderIfNeeded(signedOrder: SignedCollectFeeOrder): Promise<void> {\n const [pda] = PDA.collectFeeOrderRecord(\n signedOrder.order.user,\n signedOrder.order.nonce,\n this.programIds,\n );\n const existing = await (this.program.account as any).collectFeeOrderRecord?.fetchNullable(pda);\n if (!existing) {\n const tx = await this.buildRegisterCollectFeeOrderTx(signedOrder, this.walletPubkey);\n await this._sendLegacyTx(tx.instructions);\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 * V2: no hook accounts in remainingAccounts.\n *\n * remaining_accounts layout:\n * [seller, order_record, seller_token, seller_collateral, seller_position, sell_status] × N\n * [feeManagement, fee_config, mkt_override, company_ata, oracle_vault, referral_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_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_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 // V2: No hook accounts — removed extraAccountMetaList, hookConfig, hookProgram\n\n // Fee accounts (optional) — only added when market_fee_override PDA exists for this condition.\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 const refVault = await this.referralVault();\n if (companyAddr && refVault) {\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\n ?? await this.getMarketOracleVault(condition, collateralMint)\n ?? 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 { pubkey: refVault, 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 systemProgram: SystemProgram.programId,\n })\n .remainingAccounts([...makerAccounts, ...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 * V2: no hook accounts in remainingAccounts.\n *\n * remaining_accounts per NO maker (6):\n * [maker, order_record, buyer_no_token, buyer_no_collateral, buyer_no_position, no_order_status]\n */\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_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_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_PROGRAM_ID);\n const [clobYesPos] = PDA.position(condition, 1, clobConfig, this.programIds);\n const [clobNoPos] = PDA.position(condition, 0, clobConfig, this.programIds);\n\n // V2: no hook accounts\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_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 // V2: hook accounts removed (extraMetaYes, extraMetaNo, hookConfig, hookProgram)\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 tokenProgram: TOKEN_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_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_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 * V2: no hook accounts in remainingAccounts.\n *\n * remaining_accounts per NO maker (6):\n * [maker, order_record, seller_no_token, seller_no_collateral, seller_no_position, no_order_status]\n * After all makers, optional 6 fee accounts.\n */\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_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_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_PROGRAM_ID);\n const [clobYesPos] = PDA.position(condition, 1, clobConfig, this.programIds);\n const [clobNoPos] = PDA.position(condition, 0, clobConfig, this.programIds);\n\n // V2: no hook accounts\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_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 // V2: hook accounts removed (extraMetaYes, extraMetaNo, hookConfig, hookProgram)\n\n if (yesSigned.order.fee.gtn(0) && this.programIds.feeManagement && this.feeConfigOwner) {\n const companyAddr = await this.companyAddress();\n const refVault = await this.referralVault();\n if (companyAddr && refVault) {\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\n ?? await this.getMarketOracleVault(condition, collateralMint)\n ?? 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 { pubkey: refVault, 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 tokenProgram: TOKEN_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_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_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 * Build ixs for a mixed batch: some makers COMPLEMENTARY (same tokenId as taker),\n * others MINT/MERGE (opposite tokenId). Packs all into a single ix array so the\n * caller can send them in one atomic tx.\n *\n * Supported taker configurations:\n * YES BUY + YES SELL makers + NO BUY makers → COMP ixs + MINT ix\n * YES SELL + YES BUY makers + NO SELL makers → COMP ixs + MERGE ix\n */\n private async _buildMixedMatchIxs(\n taker: SignedOrder,\n complementaryMakers: SignedOrder[],\n mintMergeMakers: SignedOrder[],\n collateralMint: PublicKey,\n feeRecipient: PublicKey,\n operator: PublicKey,\n opts?: { marketOracleVault?: PublicKey },\n ): Promise<TransactionInstruction[]> {\n const t = taker.order;\n const SIDE_BUY = 0;\n const SIDE_SELL = 1;\n\n // ── COMPLEMENTARY ixs ─────────────────────────────────────────────────────\n // BUY taker + SELL comp makers → use_taker_price=true (default)\n // SELL taker + BUY comp makers → use_taker_price=false\n const useTakerPrice = t.side === SIDE_BUY;\n const compIxs = await this.buildMatchComplementaryIxs(\n taker, complementaryMakers, collateralMint, feeRecipient, operator, opts, useTakerPrice,\n );\n\n // ── MINT / MERGE ix ───────────────────────────────────────────────────────\n const allBuy = t.side === SIDE_BUY && mintMergeMakers.every(m => m.order.side === SIDE_BUY);\n const allSell = t.side === SIDE_SELL && mintMergeMakers.every(m => m.order.side === SIDE_SELL);\n if (!allBuy && !allSell) {\n throw new InvalidParamError(\"MINT/MERGE makers in mixed batch must all share taker side\");\n }\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_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_PROGRAM_ID);\n await this._ensureClobOutcomeAtas(yesMint, noMint, clobConfig, clobYesAta, clobNoAta);\n\n let mmIxs: TransactionInstruction[];\n if (t.tokenId === 1) {\n // YES taker\n const ix = allBuy\n ? await this._buildMintIx(taker, mintMergeMakers, collateralMint, operator, this.walletPubkey)\n : await this._buildMergeIx(taker, mintMergeMakers, collateralMint, operator, this.walletPubkey, opts);\n mmIxs = [ix];\n } else {\n // NO taker → swap: each YES maker becomes taker-side, NO taker is maker-side\n mmIxs = [];\n for (const yesMaker of mintMergeMakers) {\n const ix = allBuy\n ? await this._buildMintIx(yesMaker, [taker], collateralMint, operator, this.walletPubkey)\n : await this._buildMergeIx(yesMaker, [taker], collateralMint, operator, this.walletPubkey, opts);\n mmIxs.push(ix);\n }\n }\n\n return [...compIxs, ...mmIxs];\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 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 SIDE_BUY = 0;\n const SIDE_SELL = 1;\n\n // Mixed batch: some makers COMPLEMENTARY (same tokenId), others MINT/MERGE (different tokenId).\n // Pack both instruction types into 1 atomic tx via sendMatchTx.\n const complementaryMakers = makers.filter(m => m.order.tokenId === t.tokenId);\n const mintMergeMakers = makers.filter(m => m.order.tokenId !== t.tokenId);\n if (complementaryMakers.length > 0 && mintMergeMakers.length > 0) {\n await Promise.all([\n this.registerOrderIfNeeded(taker),\n ...makers.map(m => this.registerOrderIfNeeded(m)),\n ]);\n const ixs = await this._buildMixedMatchIxs(\n taker, complementaryMakers, mintMergeMakers, collateralMint, feeRecipient, operatorWallet.publicKey, opts,\n );\n const sig = await this.sendMatchTx(ixs, alt, operatorWallet);\n return { signature: sig };\n }\n\n const m0 = makers[0].order;\n\n if (t.tokenId === m0.tokenId) {\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 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 const finalSells = sellCandidates;\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 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 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 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;\n if (isDirectSell) return b.price - a.price;\n if (isMint) return b.price - a.price;\n if (isMerge) return a.price - b.price;\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 */\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 * V2: no hookClient, no hook init ixs prepended.\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 SIDE_BUY = 0;\n const SIDE_SELL = 1;\n\n // Mixed batch: some makers COMPLEMENTARY (same tokenId), others MINT/MERGE (different tokenId).\n // Pack all instructions into one atomic vtx.\n const complementaryMakers = makers.filter(m => m.order.tokenId === t.tokenId);\n const mintMergeMakers = makers.filter(m => m.order.tokenId !== t.tokenId);\n if (complementaryMakers.length > 0 && mintMergeMakers.length > 0) {\n await Promise.all([\n this.registerOrderIfNeeded(taker),\n ...makers.map(m => this.registerOrderIfNeeded(m)),\n ]);\n const oracleVaultInitIx = await this.buildInitOracleVaultIfNeeded(\n t.condition, collateralMint, t.fee, payer,\n );\n const preIxs = oracleVaultInitIx ? [oracleVaultInitIx] : [];\n const ixs = await this._buildMixedMatchIxs(\n taker, complementaryMakers, mintMergeMakers, collateralMint, feeRecipient, operator, opts,\n );\n return this._buildUnsignedVtx([...preIxs, ...ixs], alt, payer);\n }\n\n const m0 = makers[0].order;\n\n // V2: no hookClient, so no hook init ixs\n // Auto-init oracle vault ATA for old markets where vault was never created.\n const oracleVaultInitIx = await this.buildInitOracleVaultIfNeeded(\n t.condition, collateralMint, t.fee, payer,\n );\n const preIxs = oracleVaultInitIx ? [oracleVaultInitIx] : [];\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 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([...preIxs, ...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([...preIxs, ...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_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_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([...preIxs, 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([...preIxs, ...ixs], alt, payer);\n }\n\n // ─── batchCollectRedeemEarly ─────────────────────────────────────────────────\n\n /**\n * Build VersionedTransaction for batchCollectRedeemEarly.\n * V2: no hook accounts in remainingAccounts, uses TOKEN_PROGRAM_ID for outcome mints.\n *\n * @param signedOrders - Array of { order, signature } (used to derive record PDAs)\n * @param condition - Market condition PDA\n * @param outcomeIndex - 0 = NO wins, 1 = YES wins\n * @param operator - Whitelisted operator pubkey (must sign)\n * @param payer - Fee payer pubkey (must sign)\n * @param opts.marketOracleVault - MarketOracle vault for fee distribution\n */\n async buildBatchCollectRedeemEarlyTx(\n signedOrders: SignedCollectFeeOrder[],\n condition: PublicKey,\n outcomeIndex: 0 | 1,\n operator: PublicKey,\n payer: PublicKey,\n opts?: { marketOracleVault?: PublicKey; lookupTable?: AddressLookupTableAccount },\n ): Promise<VersionedTransaction> {\n if (signedOrders.length === 0) throw new InvalidParamError(\"At least 1 order 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\n const clobConfig = this.configPda();\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\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfig, true, TOKEN_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_PROGRAM_ID);\n\n const outcomeMint = outcomeIndex === 1 ? yesMint : noMint;\n\n // V2: no hook PDAs\n\n // CLOB's CTF position PDAs (managed by CTF, passed as unchecked)\n const [clobYesPosition] = PDA.position(condition, 1, clobConfig, this.programIds);\n const [clobNoPosition] = PDA.position(condition, 0, clobConfig, this.programIds);\n\n // Per-user remaining_accounts (4 accounts each):\n // [collectFeeOrderRecord (mut), user, userTokenAta (mut), userPosition (mut)]\n const userAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n for (const { order } of signedOrders) {\n const [collectFeeOrderRecord] = PDA.collectFeeOrderRecord(order.user, order.nonce, this.programIds);\n const userTokenAta = getAssociatedTokenAddressSync(outcomeMint, order.user, false, TOKEN_PROGRAM_ID);\n const [userPosition] = PDA.position(condition, outcomeIndex, order.user, this.programIds);\n userAccounts.push(\n { pubkey: collectFeeOrderRecord, isSigner: false, isWritable: true },\n { pubkey: order.user, isSigner: false, isWritable: false },\n { pubkey: userTokenAta, isSigner: false, isWritable: true },\n { pubkey: userPosition, isSigner: false, isWritable: true },\n );\n }\n\n // V2: no hook accounts\n\n // Fee accounts (optional)\n let feeAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n if (this.programIds.feeManagement && this.feeConfigOwner) {\n const companyAddr = await this.companyAddress();\n const refVault = await this.referralVault();\n if (companyAddr && refVault) {\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\n ?? await this.getMarketOracleVault(condition, collateralMint)\n ?? payer;\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 { pubkey: refVault, isSigner: false, isWritable: true },\n ];\n }\n }\n }\n\n // Ensure CLOB's YES/NO ATAs exist — required receivers for transfer_position CPI.\n await this._ensureClobOutcomeAtas(yesMint, noMint, clobConfig, clobYesAta, clobNoAta);\n\n // V2: no hookClient, no hook init ixs\n\n const collectIx = await this.program.methods\n .batchCollectRedeemEarly(\n signedOrders.length,\n outcomeIndex,\n )\n .accounts({\n operator,\n payer,\n clobConfig,\n condition,\n collateralVault,\n vaultTokenAccount,\n feeRecipient: cfg.feeRecipient,\n yesMint,\n noMint,\n clobYesAta,\n clobNoAta,\n clobYesPosition,\n clobNoPosition,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n tokenProgram: TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .remainingAccounts([...userAccounts, ...feeAccounts])\n .instruction();\n\n // ALT: caller-supplied > build with user accounts included\n const alt = opts?.lookupTable\n ?? await this.buildAltForCollectBatch(condition, payer, collateralMint, signedOrders, outcomeIndex);\n\n return this._buildUnsignedVtx([collectIx], alt, payer);\n }\n\n // ─── Register RedeemFeeOrder ─────────────────────────────────────────────────\n\n /**\n * Build a Transaction to register a RedeemFeeOrder on-chain (Ed25519 verify + PDA).\n * Must be sent before calling buildBatchRedeemWithFeeTx / buildBatchMergeWithFeeTx.\n */\n async buildRegisterRedeemFeeOrderTx(\n signedOrder: SignedRedeemFeeOrder,\n payer: PublicKey,\n ): Promise<anchor.web3.Transaction> {\n const { order } = signedOrder;\n const [redeemFeeOrderRecord] = PDA.redeemFeeOrderRecord(order.user, order.nonce, this.programIds);\n const ed25519Ix = buildBatchedRedeemFeeEd25519Instruction([signedOrder]);\n const registerIx = await this.program.methods\n .registerRedeemFeeOrder(order.nonce)\n .accounts({\n payer,\n clobConfig: this.configPda(),\n ixSysvar: IX_SYSVAR,\n orderSigner: order.user,\n redeemFeeOrderRecord,\n systemProgram: anchor.web3.SystemProgram.programId,\n })\n .instruction();\n const tx = new anchor.web3.Transaction();\n tx.add(ed25519Ix, registerIx);\n return tx;\n }\n\n // ─── batchRedeemWithFee ───────────────────────────────────────────────────────\n\n /**\n * Build a VersionedTransaction for batchRedeemWithFee.\n * V2: no hook accounts, uses TOKEN_PROGRAM_ID for outcome mints.\n *\n * Each pair has a YES order + NO order for the same user (same signer or different).\n * Prerequisite: each order's RedeemFeeOrderRecord must be registered via buildRegisterRedeemFeeOrderTx.\n */\n async buildBatchRedeemWithFeeTx(\n orderPairs: RedeemFeeOrderPair[],\n condition: PublicKey,\n operator: PublicKey,\n payer: PublicKey,\n opts?: { marketOracleVault?: PublicKey; lookupTable?: AddressLookupTableAccount },\n ): Promise<VersionedTransaction> {\n if (orderPairs.length === 0) throw new InvalidParamError(\"At least 1 order pair 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\n const clobConfig = this.configPda();\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 // V2: no hook PDAs (extraMeta, hookConfig removed)\n const [clobYesPosition] = PDA.position(condition, 1, clobConfig, this.programIds);\n const [clobNoPosition] = PDA.position(condition, 0, clobConfig, this.programIds);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfig, true, TOKEN_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_PROGRAM_ID);\n\n // Per-user remaining accounts (10 each)\n const userAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n for (const { yes, no } of orderPairs) {\n const [yesRecord] = PDA.redeemFeeOrderRecord(yes.order.user, yes.order.nonce, this.programIds);\n const [noRecord] = PDA.redeemFeeOrderRecord(no.order.user, no.order.nonce, this.programIds);\n const userYesAta = getAssociatedTokenAddressSync(yesMint, yes.order.user, false, TOKEN_PROGRAM_ID);\n const userNoAta = getAssociatedTokenAddressSync(noMint, no.order.user, false, TOKEN_PROGRAM_ID);\n const [userYesPos] = PDA.position(condition, 1, yes.order.user, this.programIds);\n const [userNoPos] = PDA.position(condition, 0, no.order.user, this.programIds);\n const yesCollateral = getAssociatedTokenAddressSync(collateralMint, yes.order.user);\n const noCollateral = getAssociatedTokenAddressSync(collateralMint, no.order.user);\n\n userAccounts.push(\n { pubkey: yesRecord, isSigner: false, isWritable: true },\n { pubkey: noRecord, isSigner: false, isWritable: true },\n { pubkey: yes.order.user, isSigner: false, isWritable: false },\n { pubkey: no.order.user, isSigner: false, isWritable: false },\n { pubkey: userYesAta, isSigner: false, isWritable: true },\n { pubkey: userNoAta, isSigner: false, isWritable: true },\n { pubkey: userYesPos, isSigner: false, isWritable: true },\n { pubkey: userNoPos, isSigner: false, isWritable: true },\n { pubkey: yesCollateral, isSigner: false, isWritable: true },\n { pubkey: noCollateral, isSigner: false, isWritable: true },\n );\n }\n\n // V2: no hook accounts\n\n let feeAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n if (this.programIds.feeManagement && this.feeConfigOwner) {\n const companyAddr = await this.companyAddress();\n const refVault = await this.referralVault();\n if (companyAddr && refVault) {\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\n ?? await this.getMarketOracleVault(condition, collateralMint)\n ?? payer;\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 { pubkey: refVault, isSigner: false, isWritable: true },\n ];\n }\n }\n }\n\n await this._ensureClobOutcomeAtas(yesMint, noMint, clobConfig, clobYesAta, clobNoAta);\n\n // V2: no hookClient, no hook init ixs\n\n const redeemIx = await this.program.methods\n .batchRedeemWithFee(orderPairs.length)\n .accounts({\n operator,\n payer,\n clobConfig,\n condition,\n collateralVault,\n vaultTokenAccount,\n feeRecipient: cfg.feeRecipient,\n yesMint,\n noMint,\n clobYesAta,\n clobNoAta,\n clobYesPosition,\n clobNoPosition,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n tokenProgram: TOKEN_PROGRAM_ID,\n systemProgram: anchor.web3.SystemProgram.programId,\n })\n .remainingAccounts([...userAccounts, ...feeAccounts])\n .instruction();\n\n const alt = opts?.lookupTable\n ?? await this.buildAltForCondition(condition, payer, collateralMint);\n return this._buildUnsignedVtx([redeemIx], alt, payer);\n }\n\n // ─── batchMergeWithFee ────────────────────────────────────────────────────────\n\n /**\n * Build a VersionedTransaction for batchMergeWithFee (pre-resolution merge with fee).\n * V2: no hook accounts, uses TOKEN_PROGRAM_ID for outcome mints.\n *\n * Prerequisite: each order's RedeemFeeOrderRecord must be registered via buildRegisterRedeemFeeOrderTx.\n */\n async buildBatchMergeWithFeeTx(\n orderPairs: RedeemFeeOrderPair[],\n condition: PublicKey,\n operator: PublicKey,\n payer: PublicKey,\n opts?: { marketOracleVault?: PublicKey; lookupTable?: AddressLookupTableAccount },\n ): Promise<VersionedTransaction> {\n if (orderPairs.length === 0) throw new InvalidParamError(\"At least 1 order pair 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\n const clobConfig = this.configPda();\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 // V2: no hook PDAs (extraMeta, hookConfig removed)\n const [clobYesPosition] = PDA.position(condition, 1, clobConfig, this.programIds);\n const [clobNoPosition] = PDA.position(condition, 0, clobConfig, this.programIds);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfig, true, TOKEN_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfig, true, TOKEN_PROGRAM_ID);\n\n // Per-user remaining accounts (9 each)\n const userAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n for (const { yes, no } of orderPairs) {\n const [yesRecord] = PDA.redeemFeeOrderRecord(yes.order.user, yes.order.nonce, this.programIds);\n const [noRecord] = PDA.redeemFeeOrderRecord(no.order.user, no.order.nonce, this.programIds);\n const userYesAta = getAssociatedTokenAddressSync(yesMint, yes.order.user, false, TOKEN_PROGRAM_ID);\n const userNoAta = getAssociatedTokenAddressSync(noMint, no.order.user, false, TOKEN_PROGRAM_ID);\n const [userYesPos] = PDA.position(condition, 1, yes.order.user, this.programIds);\n const [userNoPos] = PDA.position(condition, 0, no.order.user, this.programIds);\n const yesCollateral = getAssociatedTokenAddressSync(collateralMint, yes.order.user);\n\n userAccounts.push(\n { pubkey: yesRecord, isSigner: false, isWritable: true },\n { pubkey: noRecord, isSigner: false, isWritable: true },\n { pubkey: yes.order.user, isSigner: false, isWritable: false },\n { pubkey: no.order.user, isSigner: false, isWritable: false },\n { pubkey: userYesAta, isSigner: false, isWritable: true },\n { pubkey: userNoAta, isSigner: false, isWritable: true },\n { pubkey: userYesPos, isSigner: false, isWritable: true },\n { pubkey: userNoPos, isSigner: false, isWritable: true },\n { pubkey: yesCollateral, isSigner: false, isWritable: true },\n );\n }\n\n // V2: no hook accounts\n\n let feeAccounts: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n if (this.programIds.feeManagement && this.feeConfigOwner) {\n const companyAddr = await this.companyAddress();\n const refVault = await this.referralVault();\n if (companyAddr && refVault) {\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\n ?? await this.getMarketOracleVault(condition, collateralMint)\n ?? payer;\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 { pubkey: refVault, isSigner: false, isWritable: true },\n ];\n }\n }\n }\n\n await this._ensureClobOutcomeAtas(yesMint, noMint, clobConfig, clobYesAta, clobNoAta);\n\n // V2: no hookClient, no hook init ixs\n\n const mergeIx = await this.program.methods\n .batchMergeWithFee(orderPairs.length)\n .accounts({\n operator,\n payer,\n clobConfig,\n condition,\n collateralVault,\n vaultTokenAccount,\n feeRecipient: cfg.feeRecipient,\n yesMint,\n noMint,\n clobYesAta,\n clobNoAta,\n clobYesPosition,\n clobNoPosition,\n conditionalTokensProgram: this.programIds.conditionalTokens,\n tokenProgram: TOKEN_PROGRAM_ID,\n systemProgram: anchor.web3.SystemProgram.programId,\n })\n .remainingAccounts([...userAccounts, ...feeAccounts])\n .instruction();\n\n const alt = opts?.lookupTable\n ?? await this.buildAltForCondition(condition, payer, collateralMint);\n return this._buildUnsignedVtx([mergeIx], alt, payer);\n }\n\n /**\n * Build ALT for batchCollectRedeemEarly — includes per-user accounts so all\n * remaining_accounts fit as 1-byte ALT indices instead of 32-byte inline addresses.\n * V2: no hook program or hook PDAs included.\n */\n async buildAltForCollectBatch(\n condition: PublicKey,\n payer: PublicKey,\n collateralMint: PublicKey,\n signedOrders: SignedCollectFeeOrder[],\n outcomeIndex: 0 | 1,\n ): Promise<AddressLookupTableAccount> {\n const userKeys = signedOrders.map(o => o.order.user.toBase58()).sort((a, b) => a.localeCompare(b)).join(\",\");\n const cacheKey = `${condition.toBase58()}:collect:${userKeys}`;\n if (this._altCache.has(cacheKey)) return this._altCache.get(cacheKey)!;\n\n const { connection } = this.provider;\n const clobConfigPda = this.configPda();\n\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const outcomeMint = outcomeIndex === 1 ? yesMint : noMint;\n const [collateralVault] = PDA.collateralVault(collateralMint, this.programIds);\n const [vaultTokenAccount] = PDA.vaultToken(collateralMint, this.programIds);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfigPda, true, TOKEN_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfigPda, true, TOKEN_PROGRAM_ID);\n const [clobYesPos] = PDA.position(condition, 1, clobConfigPda, this.programIds);\n const [clobNoPos] = PDA.position(condition, 0, clobConfigPda, this.programIds);\n const feeRecipientAddr = (await this.fetchConfig())?.feeRecipient;\n\n const addresses: PublicKey[] = [\n this.programIds.clobExchange,\n this.programIds.conditionalTokens,\n TOKEN_PROGRAM_ID,\n SystemProgram.programId,\n clobConfigPda,\n condition, yesMint, noMint,\n collateralVault, vaultTokenAccount,\n clobYesAta, clobNoAta, clobYesPos, clobNoPos,\n ];\n if (feeRecipientAddr) addresses.push(feeRecipientAddr);\n if (this.feeConfigOwner && this.programIds.feeManagement) {\n const companyAddr = await this.companyAddress();\n const refVault = await this.referralVault();\n addresses.push(this.programIds.feeManagement!);\n addresses.push(PDA.feeConfig(this.feeConfigOwner, this.programIds)[0]);\n addresses.push(PDA.marketFeeOverride(condition, this.programIds)[0]);\n if (companyAddr) addresses.push(getAssociatedTokenAddressSync(collateralMint, companyAddr));\n if (refVault) addresses.push(refVault);\n const oracleVault = await this.getMarketOracleVault(condition, collateralMint) ?? payer;\n addresses.push(oracleVault);\n }\n\n // Per-user accounts\n for (const { order } of signedOrders) {\n const [collectFeeOrderRecord] = PDA.collectFeeOrderRecord(order.user, order.nonce, this.programIds);\n const userTokenAta = getAssociatedTokenAddressSync(outcomeMint, order.user, false, TOKEN_PROGRAM_ID);\n const [userPosition] = PDA.position(condition, outcomeIndex, order.user, this.programIds);\n addresses.push(collectFeeOrderRecord, order.user, userTokenAta, userPosition);\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, lookupTable: altAddress, 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++) await this._sendLegacyTx([extendIxs[i]]);\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 /**\n * Build ALT with static accounts for a condition — no order-specific PDAs needed.\n * V2: no hook program or hook PDAs included.\n */\n async buildAltForCondition(\n condition: PublicKey,\n _payer: PublicKey,\n collateralMint?: PublicKey,\n ): Promise<AddressLookupTableAccount> {\n const cacheKey = condition.toBase58();\n if (this._altCache.has(cacheKey)) return this._altCache.get(cacheKey)!;\n\n const mint = collateralMint ?? this.networkConfig.defaultCollateral.mint;\n const payer = this.walletPubkey;\n const { connection } = this.provider;\n const clobConfigPda = this.configPda();\n\n const [yesMint] = PDA.yesMint(condition, this.programIds);\n const [noMint] = PDA.noMint(condition, this.programIds);\n const [collateralVault] = PDA.collateralVault(mint, this.programIds);\n const [vaultTokenAccount] = PDA.vaultToken(mint, this.programIds);\n const clobYesAta = getAssociatedTokenAddressSync(yesMint, clobConfigPda, true, TOKEN_PROGRAM_ID);\n const clobNoAta = getAssociatedTokenAddressSync(noMint, clobConfigPda, true, TOKEN_PROGRAM_ID);\n const feeRecipientAddr = (await this.fetchConfig())?.feeRecipient;\n\n const addresses: PublicKey[] = [\n Ed25519Program.programId,\n this.programIds.clobExchange,\n this.programIds.conditionalTokens,\n TOKEN_PROGRAM_ID,\n SystemProgram.programId,\n SYSVAR_INSTRUCTIONS_PUBKEY,\n clobConfigPda,\n condition, yesMint, noMint,\n collateralVault, vaultTokenAccount,\n clobYesAta, clobNoAta,\n ];\n if (feeRecipientAddr) addresses.push(feeRecipientAddr);\n if (this.feeConfigOwner && this.programIds.feeManagement) {\n const companyAddr = await this.companyAddress();\n const refVault = await this.referralVault();\n addresses.push(this.programIds.feeManagement!);\n addresses.push(PDA.feeConfig(this.feeConfigOwner, this.programIds)[0]);\n addresses.push(PDA.marketFeeOverride(condition, this.programIds)[0]);\n if (companyAddr) addresses.push(getAssociatedTokenAddressSync(mint, companyAddr));\n if (refVault) addresses.push(refVault);\n const oracleVault = await this.getMarketOracleVault(condition, mint) ?? payer;\n addresses.push(oracleVault);\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, lookupTable: altAddress, 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++) await this._sendLegacyTx([extendIxs[i]]);\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 // ─── 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 admin: acc.admin,\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 /** Check if address is a CLOB operator (can submit match transactions) */\n async isOperator(address: PublicKey): Promise<boolean> {\n const cfg = await this.fetchConfig();\n return cfg?.operators.some(k => k.equals(address)) ?? false;\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, Transaction } 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(params: {\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 /** Share routed to referral vault (e.g. 2_000 = 20%). Must satisfy referral+company+investors=10_000 */\n referralMarketRev: number;\n referralVault: PublicKey;\n authority: PublicKey;\n payer: PublicKey;\n }): Promise<TxResult> {\n const [feeConfigPda] = PDA.feeConfig(params.authority, this.programIds);\n const sig = await this.program.methods\n .initialize({\n admin: params.admin,\n companyAddress: params.companyAddress,\n referralAddress: params.referralAddress,\n presaleRevenueAddress: params.presaleRevenueAddress,\n investorsMarketRev: params.investorsMarketRev,\n companyMarketRev: params.companyMarketRev,\n agentsPresaleRev: params.agentsPresaleRev,\n companyPresaleRev: params.companyPresaleRev,\n referralMarketRev: params.referralMarketRev,\n referralVault: params.referralVault,\n })\n .accounts({\n authority: params.authority,\n payer: params.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(params: {\n companyAddress: PublicKey;\n referralAddress: PublicKey;\n presaleRevenueAddress: PublicKey;\n investorsMarketRev: number;\n companyMarketRev: number;\n agentsPresaleRev: number;\n companyPresaleRev: number;\n referralMarketRev: number;\n referralVault: PublicKey;\n authority: PublicKey;\n payer: PublicKey;\n }): Promise<TxResult> {\n const [feeConfigPda] = PDA.feeConfig(params.authority, this.programIds);\n const sig = await this.program.methods\n .updateConfig({\n companyAddress: params.companyAddress,\n referralAddress: params.referralAddress,\n presaleRevenueAddress: params.presaleRevenueAddress,\n investorsMarketRev: params.investorsMarketRev,\n companyMarketRev: params.companyMarketRev,\n agentsPresaleRev: params.agentsPresaleRev,\n companyPresaleRev: params.companyPresaleRev,\n referralMarketRev: params.referralMarketRev,\n referralVault: params.referralVault,\n })\n .accounts({\n authority: params.authority,\n payer: params.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 /**\n * Build editMarketFee transaction (whitelist-only).\n * @param conditionPda - condition PDA (market identifier)\n * @param mergeFee - out of FEE_DENOMINATOR (10_000), e.g. 2_000 = 20%\n * @param redeemFee - out of FEE_DENOMINATOR\n * @param swapFee - trading fee out of FEE_DENOMINATOR, e.g. 200 = 2%\n * @param feeConfigOwner - owner of fee_config PDA\n * @param authority - whitelisted signer (signs tx externally)\n * @param payer - fee payer (can differ from authority)\n */\n async buildEditMarketFeeTx(\n conditionPda: PublicKey,\n mergeFee: BN,\n redeemFee: BN,\n swapFee: BN,\n feeConfigOwner: PublicKey,\n authority: PublicKey,\n payer: PublicKey = authority,\n ): Promise<Transaction> {\n const [feeConfigPda] = PDA.feeConfig(feeConfigOwner, this.programIds);\n const [questionFeePda] = PDA.questionFee(conditionPda, this.programIds);\n\n return 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 .transaction();\n }\n\n /** @deprecated use buildEditMarketFeeTx */\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 /**\n * Build addToWhitelist tx — authority (admin/owner) signs externally.\n * Whitelist members can call editMarketFee / setQuestionFee.\n */\n /** Build addToWhitelist tx — authority (admin/owner) signs externally. */\n async buildAddToWhitelistTx(\n address: PublicKey,\n feeConfigOwner: PublicKey,\n authority: PublicKey,\n ): Promise<Transaction> {\n const [feeConfigPda] = PDA.feeConfig(feeConfigOwner, this.programIds);\n return this.program.methods\n .addToWhitelist(address)\n .accounts({ authority, feeConfig: feeConfigPda })\n .transaction();\n }\n\n /** Build removeFromWhitelist tx — authority (admin/owner) signs externally. */\n async buildRemoveFromWhitelistTx(\n address: PublicKey,\n feeConfigOwner: PublicKey,\n authority: PublicKey,\n ): Promise<Transaction> {\n const [feeConfigPda] = PDA.feeConfig(feeConfigOwner, this.programIds);\n return this.program.methods\n .removeFromWhitelist(address)\n .accounts({ authority, feeConfig: feeConfigPda })\n .transaction();\n }\n\n /** Build setAdmin tx — only owner signs externally. */\n async buildSetAdminTx(\n newAdmin: PublicKey,\n feeConfigOwner: PublicKey,\n authority: PublicKey,\n ): Promise<Transaction> {\n const [feeConfigPda] = PDA.feeConfig(feeConfigOwner, this.programIds);\n return this.program.methods\n .setAdmin(newAdmin)\n .accounts({ authority, feeConfig: feeConfigPda })\n .transaction();\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 interface FeesShareEstimate {\n /** Net USDS user will receive if they claim now */\n share: anchor.BN;\n /** Total accumulated fees (vault + already claimed) */\n effectiveTotal: anchor.BN;\n /** Current vault balance */\n vaultBalance: anchor.BN;\n /** User's current MST balance */\n userQtBalance: anchor.BN;\n /** Snapshotted total MST supply (0 if not yet distributed) */\n qtTotalSupply: anchor.BN;\n /** True if fees_distributed — claim is on-chain executable */\n feesDistributed: boolean;\n /** True if user already claimed */\n hasClaimed: boolean;\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 /**\n * Derive marketOracleVault from presaleAddress and return its USDS balance.\n * presaleAddress is used as the questionId seed in the question PDA.\n */\n async getOracleVaultBalance(\n presaleAddress: PublicKey,\n qmConfigPda: PublicKey,\n collateralMint: PublicKey,\n ): Promise<number> {\n const [questionPda] = PDA.question(qmConfigPda, presaleAddress.toBytes(), this.programIds);\n const [marketOraclePda] = PDA.marketOraclePda(questionPda, this.programIds);\n const vault = getAssociatedTokenAddressSync(collateralMint, marketOraclePda, true);\n const bal = await this.program.provider.connection.getTokenAccountBalance(vault);\n return bal.value.uiAmount ?? 0;\n }\n\n /**\n * Estimate the USDS share a user would receive if they called claimFeesShare now.\n * Works both before and after fees_distributed — no extra params needed.\n *\n * When fees not yet distributed, auto-resolves qtMint via:\n * oracle.question (questionPda) → raw account bytes[8..40] = presalePda\n * → PDA.qtMint(presalePda) → qtMint\n *\n * Formula mirrors on-chain claim_fees_share_handler:\n * effective_total = vault_balance + oracle.total_claimed\n * share = user_qt_balance * effective_total / oracle.qt_total_supply\n */\n async estimateFeesShare(\n marketOraclePda: PublicKey,\n user: PublicKey,\n ): Promise<FeesShareEstimate | null> {\n const { connection } = this.provider;\n\n // Batch 1: oracle + claim record (independent)\n const [oracle, claimRecord] = await Promise.all([\n this.fetchMarketOracle(marketOraclePda),\n this.fetchUserClaimRecord(marketOraclePda, user),\n ]);\n if (!oracle) return null;\n\n const hasClaimed = claimRecord?.hasClaimed ?? false;\n const vaultAta = getAssociatedTokenAddressSync(oracle.currencyMint, marketOraclePda, true);\n const needsQtMintResolve = !oracle.feesDistributed || oracle.qtMint.equals(PublicKey.default);\n\n // Batch 2: vault balance + question account (independent, both need oracle)\n const [vaultResult, questionAccount] = await Promise.all([\n connection.getTokenAccountBalance(vaultAta).catch(() => null),\n needsQtMintResolve\n ? connection.getAccountInfo(oracle.question).catch(() => null)\n : Promise.resolve(null),\n ]);\n\n const vaultBalance = vaultResult\n ? new anchor.BN(vaultResult.value.amount)\n : new anchor.BN(0);\n\n // Resolve qtMint\n let qtMint = oracle.qtMint;\n if (needsQtMintResolve && questionAccount) {\n try {\n // Question layout: [8 disc][1 version][32 config][32 questionId = presalePda]\n const presalePda = new PublicKey(questionAccount.data.slice(41, 73));\n qtMint = PDA.qtMint(presalePda, this.programIds)[0];\n } catch { /* parse error */ }\n }\n\n const isDefaultMint = qtMint.equals(PublicKey.default);\n const needsSupply = (!oracle.feesDistributed || oracle.qtTotalSupply.isZero()) && !isDefaultMint;\n\n // Batch 3: user QT balance + total supply (independent, both need qtMint)\n const userQtAta = isDefaultMint ? null : getAssociatedTokenAddressSync(qtMint, user);\n const [qtBalResult, supplyResult] = await Promise.all([\n userQtAta\n ? connection.getTokenAccountBalance(userQtAta).catch(() => null)\n : Promise.resolve(null),\n needsSupply\n ? connection.getTokenSupply(qtMint).catch(() => null)\n : Promise.resolve(null),\n ]);\n\n const userQtBalance = qtBalResult\n ? new anchor.BN(qtBalResult.value.amount)\n : new anchor.BN(0);\n\n const qtTotalSupply = needsSupply && supplyResult\n ? new anchor.BN(supplyResult.value.amount)\n : oracle.qtTotalSupply;\n\n const effectiveTotal = vaultBalance.add(oracle.totalClaimed);\n\n if (qtTotalSupply.isZero() || userQtBalance.isZero()) {\n return {\n share: new anchor.BN(0),\n effectiveTotal,\n vaultBalance,\n userQtBalance,\n qtTotalSupply,\n feesDistributed: oracle.feesDistributed,\n hasClaimed,\n };\n }\n\n const share = userQtBalance.mul(effectiveTotal).div(qtTotalSupply);\n\n return {\n share,\n effectiveTotal,\n vaultBalance,\n userQtBalance,\n qtTotalSupply,\n feesDistributed: oracle.feesDistributed,\n hasClaimed,\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 /** Check if address is in admin_whitelist (can call addToWhitelist, removeFromWhitelist) */\n async isAdmin(address: PublicKey, owner = this.walletPubkey): Promise<boolean> {\n const cfg = await this.fetchConfig(owner);\n return cfg?.adminWhitelist.some(k => k.equals(address)) ?? false;\n }\n\n /** Check if address is in whitelist (can call claim) */\n async isWhitelisted(address: PublicKey, owner = this.walletPubkey): Promise<boolean> {\n const cfg = await this.fetchConfig(owner);\n return cfg?.whitelist.some(k => k.equals(address)) ?? false;\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","import * as anchor from \"@coral-xyz/anchor\";\nimport {\n PublicKey, SystemProgram, Transaction,\n} from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n createAssociatedTokenAccountIdempotentInstruction,\n} from \"@solana/spl-token\";\nimport BN from \"bn.js\";\nimport { ProgramIds } from \"../config/networks\";\nimport { PDA } from \"../pda\";\n\nexport interface ReferralConfigInfo {\n owner: PublicKey;\n collateralMint: PublicKey;\n whitelist: PublicKey[];\n bump: number;\n}\n\nexport class ReferralClient {\n constructor(\n private readonly program: anchor.Program,\n private readonly provider: anchor.AnchorProvider,\n private readonly programIds: ProgramIds,\n ) {}\n\n get walletPubkey(): PublicKey {\n return this.provider.wallet.publicKey;\n }\n\n referralVault(owner: PublicKey, collateralMint: PublicKey): PublicKey {\n const [configPda] = PDA.referralConfig(owner, this.programIds);\n return getAssociatedTokenAddressSync(collateralMint, configPda, true);\n }\n\n async fetchConfig(owner: PublicKey): Promise<ReferralConfigInfo | null> {\n try {\n const [pda] = PDA.referralConfig(owner, this.programIds);\n const acc = await (this.program.account as any).referralConfig.fetch(pda);\n return {\n owner: acc.owner,\n collateralMint: acc.collateralMint,\n whitelist: acc.whitelist.slice(0, acc.whitelistLen),\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n /** Check if address is whitelisted in referral config (can call batchSendUsds) */\n async isWhitelisted(address: PublicKey, owner = this.walletPubkey): Promise<boolean> {\n const cfg = await this.fetchConfig(owner);\n return cfg?.whitelist.some(k => k.equals(address)) ?? false;\n }\n\n /**\n * Build initialize tx — creates referral config PDA.\n * Also prepends an ATA creation instruction for the referral vault (idempotent).\n * Build-tx pattern.\n */\n async buildInitializeTx(\n collateralMint: PublicKey,\n owner: PublicKey = this.walletPubkey,\n payer: PublicKey = owner,\n ): Promise<{ tx: Transaction; configPda: PublicKey; vaultAta: PublicKey }> {\n if (!this.programIds.referral) throw new Error(\"referral program ID not configured\");\n const [configPda] = PDA.referralConfig(owner, this.programIds);\n const vaultAta = getAssociatedTokenAddressSync(collateralMint, configPda, true);\n\n // Create vault ATA (idempotent) + init config in one tx\n const createVaultIx = createAssociatedTokenAccountIdempotentInstruction(\n payer, vaultAta, configPda, collateralMint,\n );\n\n const initTx = await this.program.methods\n .initialize()\n .accounts({\n owner,\n payer,\n config: configPda,\n collateralMint,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n\n const tx = new Transaction().add(createVaultIx, ...initTx.instructions);\n return { tx, configPda, vaultAta };\n }\n\n /** Build add-to-whitelist tx. Build-tx pattern. */\n async buildAddToWhitelistTx(\n address: PublicKey,\n owner: PublicKey = this.walletPubkey,\n payer: PublicKey = owner,\n ): Promise<Transaction> {\n if (!this.programIds.referral) throw new Error(\"referral program ID not configured\");\n const [configPda] = PDA.referralConfig(owner, this.programIds);\n return this.program.methods\n .addToWhitelist(address)\n .accounts({ owner, payer, config: configPda })\n .transaction();\n }\n\n /** Build remove-from-whitelist tx. Build-tx pattern. */\n async buildRemoveFromWhitelistTx(\n address: PublicKey,\n owner: PublicKey = this.walletPubkey,\n payer: PublicKey = owner,\n ): Promise<Transaction> {\n if (!this.programIds.referral) throw new Error(\"referral program ID not configured\");\n const [configPda] = PDA.referralConfig(owner, this.programIds);\n return this.program.methods\n .removeFromWhitelist(address)\n .accounts({ owner, payer, config: configPda })\n .transaction();\n }\n\n /**\n * Build batchSendUsds tx. Build-tx pattern.\n * @param recipients - wallet addresses to send to\n * @param amounts - corresponding amounts in token smallest units\n * @param configOwner - owner of referral config (used to derive config + vault)\n * @param collateralMint - token mint\n * @param authority - whitelisted signer\n * @param payer - fee payer (can differ from authority)\n */\n async buildBatchSendUsdsTx(\n recipients: PublicKey[],\n amounts: BN[],\n configOwner: PublicKey,\n collateralMint: PublicKey,\n authority: PublicKey = this.walletPubkey,\n payer: PublicKey = authority,\n ): Promise<Transaction> {\n if (!this.programIds.referral) throw new Error(\"referral program ID not configured\");\n if (recipients.length !== amounts.length) throw new Error(\"recipients and amounts must have same length\");\n if (recipients.length === 0) throw new Error(\"recipients array is empty\");\n\n const [configPda] = PDA.referralConfig(configOwner, this.programIds);\n const referralVault = getAssociatedTokenAddressSync(collateralMint, configPda, true);\n\n // Derive recipient ATAs\n const recipientAtas = recipients.map(wallet =>\n getAssociatedTokenAddressSync(collateralMint, wallet)\n );\n\n return this.program.methods\n .batchSendUsds(amounts)\n .accounts({\n authority,\n config: configPda,\n referralVault,\n tokenProgram: TOKEN_PROGRAM_ID,\n })\n .remainingAccounts(\n recipientAtas.map(ata => ({ pubkey: ata, isSigner: false, isWritable: true }))\n )\n .transaction();\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 DisputeConfigInfo {\n version: number;\n owner: PublicKey;\n admin: PublicKey;\n collateralMint: PublicKey;\n bump: number;\n}\n\nexport interface DisputeMarketInfo {\n version: number;\n conditionId: number[];\n deadline: anchor.BN;\n bond: anchor.BN;\n amount: anchor.BN;\n isResolved: boolean;\n bump: number;\n}\n\nexport interface UserDisputeInfo {\n version: number;\n user: PublicKey;\n conditionId: number[];\n amount: anchor.BN;\n bump: number;\n}\n\nexport class DisputeClient {\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 configPdaFor(owner: PublicKey): PublicKey {\n const [pda] = PDA.disputeConfig(owner, this.programIds);\n return pda;\n }\n\n disputeVault(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<DisputeConfigInfo | null> {\n const [configPda] = PDA.disputeConfig(owner, this.programIds);\n try {\n const acc = await (this.program.account as any).disputeConfig.fetch(configPda);\n return {\n version: acc.version,\n owner: acc.owner,\n admin: acc.admin,\n collateralMint: acc.collateralMint,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchDisputeMarket(conditionId: Uint8Array): Promise<DisputeMarketInfo | null> {\n const [pda] = PDA.disputeMarket(conditionId, this.programIds);\n try {\n const acc = await (this.program.account as any).disputeMarket.fetch(pda);\n return {\n version: acc.version,\n conditionId: acc.conditionId,\n deadline: acc.deadline,\n bond: acc.bond,\n amount: acc.amount,\n isResolved: acc.isResolved,\n bump: acc.bump,\n };\n } catch {\n return null;\n }\n }\n\n async fetchUserDispute(user: PublicKey, conditionId: Uint8Array): Promise<UserDisputeInfo | null> {\n const [pda] = PDA.userDispute(user, conditionId, this.programIds);\n try {\n const acc = await (this.program.account as any).userDispute.fetch(pda);\n return {\n version: acc.version,\n user: acc.user,\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 collateralMint: PublicKey,\n owner: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [configPda] = PDA.disputeConfig(owner, this.programIds);\n const vault = getAssociatedTokenAddressSync(collateralMint, configPda, true);\n\n return this.program.methods\n .initialize()\n .accounts({\n owner,\n disputeConfig: configPda,\n collateralMint,\n disputeVault: vault,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n async buildSetAdminTx(\n newAdmin: PublicKey,\n owner: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [configPda] = PDA.disputeConfig(owner, this.programIds);\n return this.program.methods\n .setAdmin(newAdmin)\n .accounts({\n owner,\n disputeConfig: configPda,\n })\n .transaction();\n }\n\n async buildRaiseDisputeTx(\n conditionId: Uint8Array,\n collateralMint: PublicKey,\n owner: PublicKey,\n user: PublicKey = this.walletPubkey,\n payer: PublicKey = user,\n ): Promise<Transaction> {\n const [configPda] = PDA.disputeConfig(owner, this.programIds);\n const [disputeMarket] = PDA.disputeMarket(conditionId, this.programIds);\n const [userDispute] = PDA.userDispute(user, conditionId, this.programIds);\n const userAta = getAssociatedTokenAddressSync(collateralMint, user);\n const vault = getAssociatedTokenAddressSync(collateralMint, configPda, true);\n\n return this.program.methods\n .raiseDispute(Array.from(conditionId))\n .accounts({\n user,\n payer,\n disputeConfig: configPda,\n disputeMarket,\n userDispute,\n userAta,\n disputeVault: vault,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .transaction();\n }\n\n async buildClaimTx(\n conditionId: Uint8Array,\n collateralMint: PublicKey,\n owner: PublicKey,\n user: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [configPda] = PDA.disputeConfig(owner, this.programIds);\n const [disputeMarket] = PDA.disputeMarket(conditionId, this.programIds);\n const [userDispute] = PDA.userDispute(user, conditionId, this.programIds);\n const vault = getAssociatedTokenAddressSync(collateralMint, configPda, true);\n const userAta = getAssociatedTokenAddressSync(collateralMint, user);\n\n return this.program.methods\n .claim(Array.from(conditionId))\n .accounts({\n user,\n disputeConfig: configPda,\n disputeMarket,\n userDispute,\n disputeVault: vault,\n userAta,\n tokenProgram: TOKEN_PROGRAM_ID,\n })\n .transaction();\n }\n\n async buildResolveDisputeTx(\n conditionId: Uint8Array,\n amount: anchor.BN,\n isRefunded: boolean,\n owner: PublicKey,\n admin: PublicKey = this.walletPubkey,\n ): Promise<Transaction> {\n const [configPda] = PDA.disputeConfig(owner, this.programIds);\n const [disputeMarket] = PDA.disputeMarket(conditionId, this.programIds);\n\n return this.program.methods\n .resolveDispute(Array.from(conditionId), amount, isRefunded)\n .accounts({\n admin,\n disputeConfig: configPda,\n disputeMarket,\n })\n .transaction();\n }\n}\n","{\n \"address\": \"8uNiLDZnarxyFyoCi1bE1qkBMsLs2Tpyohtdzdvjkg8j\",\n \"metadata\": {\n \"name\": \"oracle_v2\",\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_reporter\",\n \"docs\": [\n \"Add a new reporter to the oracle whitelist\"\n ],\n \"discriminator\": [\n 158,\n 153,\n 12,\n 6,\n 217,\n 41,\n 252,\n 157\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Admin or owner who can add reporters\"\n ],\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 \"name\": \"reporter_address\",\n \"docs\": [\n \"The address being whitelisted as a reporter\"\n ]\n },\n {\n \"name\": \"reporter\",\n \"docs\": [\n \"The reporter account (PDA)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 112,\n 111,\n 114,\n 116,\n 101,\n 114\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"oracle_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"reporter_address\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"docs\": [\n \"System program for account creation\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"initialize\",\n \"docs\": [\n \"Initialize a new Oracle configuration\"\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\"\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\": \"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_reporter\",\n \"docs\": [\n \"Remove (deactivate) a reporter from the oracle whitelist\"\n ],\n \"discriminator\": [\n 165,\n 229,\n 140,\n 210,\n 40,\n 24,\n 27,\n 34\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Admin or owner who can remove reporters\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"oracle_config\",\n \"docs\": [\n \"The oracle configuration\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"reporter_address\",\n \"docs\": [\n \"The address being removed as a reporter\"\n ]\n },\n {\n \"name\": \"reporter\",\n \"docs\": [\n \"The reporter account (PDA)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 112,\n 111,\n 114,\n 116,\n 101,\n 114\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"oracle_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"reporter_address\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"resolve_question\",\n \"docs\": [\n \"Resolve a question — called by whitelisted reporter\",\n \"Creates a QuestionResult PDA with the payout vector.\",\n \"QuestionMarket reads this to finalize the condition.\"\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_signer\",\n \"docs\": [\n \"The reporter resolving this question\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"oracle_config\",\n \"docs\": [\n \"The oracle configuration\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"reporter\",\n \"docs\": [\n \"The reporter account (must be whitelisted and active)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 112,\n 111,\n 114,\n 116,\n 101,\n 114\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"oracle_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"reporter_signer\"\n }\n ]\n }\n },\n {\n \"name\": \"question_result\",\n \"docs\": [\n \"The question result account (PDA) - stores the resolution\"\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\": \"payer\",\n \"docs\": [\n \"Payer for account creation\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"system_program\",\n \"docs\": [\n \"System program for account creation\"\n ],\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\"\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\": \"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 \"name\": \"Reporter\",\n \"discriminator\": [\n 233,\n 37,\n 148,\n 250,\n 155,\n 158,\n 118,\n 161\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"OracleConfig\",\n \"docs\": [\n \"Global configuration for the Oracle program\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"docs\": [\n \"Owner of the oracle (can transfer ownership)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"admin\",\n \"docs\": [\n \"Admin who can add/remove reporters\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_count\",\n \"docs\": [\n \"Total number of questions resolved through this oracle\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"reporter_count\",\n \"docs\": [\n \"Total number of active reporters\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"is_paused\",\n \"docs\": [\n \"Whether the oracle 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\": \"_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\": \"QuestionResult\",\n \"docs\": [\n \"Stores the resolution result for a question\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"oracle_config\",\n \"docs\": [\n \"The oracle config that resolved this question\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question_id\",\n \"docs\": [\n \"Unique identifier for the question (32-byte hash)\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"outcome_index\",\n \"docs\": [\n \"Which outcome won (for binary: 0=NO, 1=YES)\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"outcome_count\",\n \"docs\": [\n \"Number of outcomes in this question\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"payout_numerators\",\n \"docs\": [\n \"Full payout vector representing the payout ratios\",\n \"For binary YES win: [0, 1], for NO win: [1, 0]\",\n \"For multi-outcome: [0, 0, 1, 0] means outcome 2 won\"\n ],\n \"type\": {\n \"vec\": \"u64\"\n }\n },\n {\n \"name\": \"is_resolved\",\n \"docs\": [\n \"Whether the question has been resolved\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"resolved_at\",\n \"docs\": [\n \"Timestamp when the question was resolved\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"reporter\",\n \"docs\": [\n \"The reporter who resolved this question\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"docs\": [\n \"Optional link to ConditionalTokens condition (if resolved via CPI)\"\n ],\n \"type\": {\n \"option\": \"pubkey\"\n }\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump seed for PDA derivation\"\n ],\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"Reporter\",\n \"docs\": [\n \"Represents a whitelisted reporter who can resolve questions\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"oracle_config\",\n \"docs\": [\n \"The oracle config this reporter belongs to\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"reporter\",\n \"docs\": [\n \"The reporter's public key\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"is_active\",\n \"docs\": [\n \"Whether the reporter is currently active\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"questions_reported\",\n \"docs\": [\n \"Number of questions this reporter has resolved\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"added_at\",\n \"docs\": [\n \"Timestamp when the reporter was added\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"last_updated\",\n \"docs\": [\n \"Timestamp when the reporter was last updated\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"Bump seed for PDA derivation\"\n ],\n \"type\": \"u8\"\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"FkpHo3zb5h2nNS5n6tWAvDwXPTXR2qqVLjDmEkMayott\",\n \"metadata\": {\n \"name\": \"question_market_v2\",\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_config\",\n \"docs\": [\n \"FeeConfig PDA — passed to set_market_fee_override CPI.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"market_fee_override\",\n \"docs\": [\n \"MarketFeeOverride PDA — auto-init with is_admin=false and fee_config defaults.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"fee_management_program\",\n \"address\": \"8S6hxqbDc8kgHf4uUzq2t15PeY36QSCYEpBVvM4Fhrkm\"\n },\n {\n \"name\": \"presale_program\",\n \"address\": \"CKd94vPibAMAr8R5eLv21r8PYXkgLRithipBe8GV7J6C\"\n },\n {\n \"name\": \"market_oracle_program\",\n \"address\": \"Agt6beCbghi4jV9A8v9geRP5dnt2wDkJBVgy9oM33zit\"\n },\n {\n \"name\": \"admin_program\",\n \"address\": \"2HsyCdr59W5ndeboaE9JAmhEQ46m5Gm2ZWBfYEs1tC1i\"\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\": \"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\": \"bump_presale_count\",\n \"discriminator\": [\n 42,\n 84,\n 98,\n 9,\n 208,\n 168,\n 38,\n 55\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\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\": \"count\",\n \"type\": \"u64\"\n }\n ]\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\": \"CKd94vPibAMAr8R5eLv21r8PYXkgLRithipBe8GV7J6C\"\n },\n {\n \"name\": \"admin_program\",\n \"address\": \"2HsyCdr59W5ndeboaE9JAmhEQ46m5Gm2ZWBfYEs1tC1i\"\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\": \"Agt6beCbghi4jV9A8v9geRP5dnt2wDkJBVgy9oM33zit\"\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\": \"CKd94vPibAMAr8R5eLv21r8PYXkgLRithipBe8GV7J6C\"\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 ],\n \"writable\": true\n },\n {\n \"name\": \"fee_config\",\n \"docs\": [\n \"FeeConfig PDA — passed to set_market_fee_override CPI as authority validator.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"market_fee_override\",\n \"docs\": [\n \"MarketFeeOverride PDA — init'd by set_market_fee_override CPI (is_admin=true).\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"fee_management_program\",\n \"address\": \"8S6hxqbDc8kgHf4uUzq2t15PeY36QSCYEpBVvM4Fhrkm\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\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\": \"CKd94vPibAMAr8R5eLv21r8PYXkgLRithipBe8GV7J6C\"\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 \"Must match question.condition — prevents cross-market resolution.\"\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) — must match config.oracle_program\"\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\": \"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\": \"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 — three parts must sum to FEE_DENOMINATOR (10_000).\",\n \"investors_market_rev + company_market_rev + referral_market_rev == 10_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 = 10_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\": \"referral_market_rev\",\n \"docs\": [\n \"Share of market trading fees routed to referral_vault (e.g. 2_000 = 20%)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"referral_vault\",\n \"docs\": [\n \"ATA of referral program config PDA — receives referral_market_rev% of trading fees\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 28\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 config PDA that will resolve conditions\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"oracle_program\",\n \"docs\": [\n \"Oracle program ID — used to validate oracle proofs in resolve_question\"\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 config PDA that will resolve conditions\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"oracle_program\",\n \"docs\": [\n \"Oracle program ID — pinned for CPI validation in resolve_question\"\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 20\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 408\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 \"name\": \"new_oracle_program\",\n \"docs\": [\n \"New oracle program ID (optional) — used to validate oracle proofs in resolve_question\"\n ],\n \"type\": {\n \"option\": \"pubkey\"\n }\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"xpn3htSptTZECudoRA8WJmAEtiijxDseTqtawYysVNT\",\n \"metadata\": {\n \"name\": \"conditional_tokens_v2\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Conditional Tokens V2 program for XMarket prediction platform (SPL token, no transfer hook)\"\n },\n \"instructions\": [\n {\n \"name\": \"initialize_vault\",\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 \"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 \"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\": \"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 SPL mints.\",\n \"V2: uses plain SPL token (no transfer hook).\"\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 },\n {\n \"name\": \"condition\",\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 \"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 \"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 \"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 },\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\": \"collateral_mint\"\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\": \"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\": \"authorized_clob\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authorized_resolver\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"redeem_positions\",\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 \"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\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"reinitialize_vault\",\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 \"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 \"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 \"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 \"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 \"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 \"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_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_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\": \"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 \"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 \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"clob_authority\",\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_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\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 \"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\": \"admin\",\n \"docs\": [\n \"Admin pubkey — only this address can call reinitialize_vault.\",\n \"Set at initialize_vault time. If Pubkey::default(), first caller sets it (bootstrap).\"\n ],\n \"type\": \"pubkey\"\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\": \"Condition\",\n \"docs\": [\n \"V2: YES/NO mints are plain SPL tokens — no transfer hook, no hook_program field.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\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\": \"outcome_slot_count\",\n \"type\": \"u8\"\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\": \"total_collateral\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"collateral_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"collateral_vault\",\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\": \"authorized_clob\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"is_resolved\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"resolved_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"authorized_resolver\",\n \"docs\": [\n \"QuestionMarket config PDA authorized to call set_payout.\",\n \"Uses first 32 bytes of old _reserved — existing accounts read as Pubkey::default().\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\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\": \"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\": \"AFT8SM1Vv8g8AQTf81LoE5oLteUTyhWzWTLj7SKZjkY1\",\n \"metadata\": {\n \"name\": \"clob_exchange_v2\",\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\": \"batch_collect_redeem_early\",\n \"docs\": [\n \"Batch collect fee tokens from winning users after question resolution,\",\n \"redeem them via CTF, and distribute USDS via fee_management.\",\n \"Requires each user's CollectFeeOrderRecord to be registered via register_collect_fee_order.\"\n ],\n \"discriminator\": [\n 87,\n 149,\n 45,\n 245,\n 249,\n 25,\n 207,\n 82\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 \"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 \"program\": {\n \"kind\": \"account\",\n \"path\": \"conditional_tokens_program\"\n }\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"fee_recipient\",\n \"docs\": [\n \"CLOB's USDS ATA — receives USDS payout from redeem, then distribute_fee draws from it.\"\n ],\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\": \"clob_yes_ata\",\n \"docs\": [\n \"CLOB's YES ATA (SPL Token) — must be pre-initialized.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"clob_no_ata\",\n \"docs\": [\n \"CLOB's NO ATA (SPL Token) — must be pre-initialized.\"\n ],\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\": \"conditional_tokens_program\",\n \"address\": \"xpn3htSptTZECudoRA8WJmAEtiijxDseTqtawYysVNT\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"order_count\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"outcome_index\",\n \"type\": \"u8\"\n }\n ]\n },\n {\n \"name\": \"batch_merge_with_fee\",\n \"docs\": [\n \"Batch merge YES+NO tokens before resolution. Returns net USDS to yes_signer, keeps fee.\",\n \"Mirrors EVM _matchMergeOrder flow.\"\n ],\n \"discriminator\": [\n 56,\n 127,\n 113,\n 232,\n 208,\n 177,\n 157,\n 230\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 \"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 \"program\": {\n \"kind\": \"account\",\n \"path\": \"conditional_tokens_program\"\n }\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"fee_recipient\",\n \"docs\": [\n \"CLOB USDS ATA — receives USDS from merge, distributes to users + fee.\"\n ],\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\": \"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\": \"conditional_tokens_program\",\n \"address\": \"xpn3htSptTZECudoRA8WJmAEtiijxDseTqtawYysVNT\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"order_count\",\n \"type\": \"u8\"\n }\n ]\n },\n {\n \"name\": \"batch_redeem_with_fee\",\n \"docs\": [\n \"Batch redeem YES+NO tokens after resolution. Returns net USDS to users, keeps fee.\",\n \"Mirrors EVM _matchRedeemOrder flow.\"\n ],\n \"discriminator\": [\n 240,\n 238,\n 168,\n 110,\n 84,\n 41,\n 165,\n 2\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 \"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 \"program\": {\n \"kind\": \"account\",\n \"path\": \"conditional_tokens_program\"\n }\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"fee_recipient\",\n \"docs\": [\n \"CLOB USDS ATA — receives USDS from redeem, distributes to users + fee.\"\n ],\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\": \"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\": \"conditional_tokens_program\",\n \"address\": \"xpn3htSptTZECudoRA8WJmAEtiijxDseTqtawYysVNT\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"order_count\",\n \"type\": \"u8\"\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 or SELL) + N makers (opposite side) 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\": \"xpn3htSptTZECudoRA8WJmAEtiijxDseTqtawYysVNT\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\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 \"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\": \"xpn3htSptTZECudoRA8WJmAEtiijxDseTqtawYysVNT\"\n },\n {\n \"name\": \"collateral_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\": \"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 \"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\": \"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\": \"xpn3htSptTZECudoRA8WJmAEtiijxDseTqtawYysVNT\"\n },\n {\n \"name\": \"collateral_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\": \"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_collect_fee_order\",\n \"docs\": [\n \"Register a signed CollectFeeOrder on-chain (Ed25519 verify at registration time).\",\n \"ix[0] must be Ed25519 precompile with 1 entry for order.user.\",\n \"Call once per user before batch_collect_redeem_early.\"\n ],\n \"discriminator\": [\n 63,\n 26,\n 202,\n 98,\n 195,\n 2,\n 211,\n 36\n ],\n \"accounts\": [\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\": \"ix_sysvar\",\n \"address\": \"Sysvar1nstructions1111111111111111111111111\"\n },\n {\n \"name\": \"order_signer\"\n },\n {\n \"name\": \"collect_fee_order_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 111,\n 108,\n 108,\n 101,\n 99,\n 116,\n 95,\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\": \"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\": \"register_redeem_fee_order\",\n \"docs\": [\n \"Register a signed RedeemFeeOrder on-chain (Ed25519 verify + PDA creation).\",\n \"Prerequisite for batch_redeem_with_fee and batch_merge_with_fee.\"\n ],\n \"discriminator\": [\n 129,\n 167,\n 199,\n 14,\n 217,\n 12,\n 76,\n 162\n ],\n \"accounts\": [\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\": \"ix_sysvar\",\n \"address\": \"Sysvar1nstructions1111111111111111111111111\"\n },\n {\n \"name\": \"order_signer\"\n },\n {\n \"name\": \"redeem_fee_order_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 100,\n 101,\n 101,\n 109,\n 95,\n 102,\n 101,\n 101,\n 95,\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\": \"CollectFeeOrderRecord\",\n \"discriminator\": [\n 145,\n 140,\n 193,\n 74,\n 12,\n 98,\n 74,\n 130\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\": \"RedeemFeeOrderRecord\",\n \"discriminator\": [\n 88,\n 3,\n 122,\n 192,\n 131,\n 243,\n 143,\n 146\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\": \"admin\",\n \"docs\": [\n \"Admin pubkey — only this address can call reinitialize_vault.\",\n \"Set at initialize_vault time. If Pubkey::default(), first caller sets it (bootstrap).\"\n ],\n \"type\": \"pubkey\"\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\": \"CollectFeeOrderRecord\",\n \"docs\": [\n \"On-chain record of a signed CollectFeeOrder.\",\n \"Created by `register_collect_fee_order` after Ed25519 verification.\",\n \"Read and marked collected by `batch_collect_redeem_early`.\",\n \"\",\n \"PDA seeds: [b\\\"collect_order\\\", user, nonce_le_bytes]\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"token_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"expiry\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"is_collected\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\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 \"V2: YES/NO mints are plain SPL tokens — no transfer hook, no hook_program field.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\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\": \"outcome_slot_count\",\n \"type\": \"u8\"\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\": \"total_collateral\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"collateral_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"collateral_vault\",\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\": \"authorized_clob\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"is_resolved\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"resolved_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"authorized_resolver\",\n \"docs\": [\n \"QuestionMarket config PDA authorized to call set_payout.\",\n \"Uses first 32 bytes of old _reserved — existing accounts read as Pubkey::default().\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\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\": \"RedeemFeeOrderRecord\",\n \"docs\": [\n \"On-chain record of a signed RedeemFeeOrder.\",\n \"Created by `register_redeem_fee_order` after Ed25519 verification.\",\n \"Read and marked collected by `batch_redeem_with_fee` / `batch_merge_with_fee`.\",\n \"\",\n \"PDA seeds: [b\\\"redeem_fee_order\\\", user, nonce_le_bytes]\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"condition\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"token_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"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\": \"is_collected\",\n \"type\": \"bool\"\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\": \"8S6hxqbDc8kgHf4uUzq2t15PeY36QSCYEpBVvM4Fhrkm\",\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\": \"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 (investors share) when is_admin=false.\",\n \"For admin questions pass any writable account (no transfer occurs).\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"referral_vault\",\n \"docs\": [\n \"Must match fee_config.referral_vault.\"\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\": \"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\": \"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 — three parts must sum to FEE_DENOMINATOR (10_000).\",\n \"investors_market_rev + company_market_rev + referral_market_rev == 10_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 = 10_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\": \"referral_market_rev\",\n \"docs\": [\n \"Share of market trading fees routed to referral_vault (e.g. 2_000 = 20%)\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"referral_vault\",\n \"docs\": [\n \"ATA of referral program config PDA — receives referral_market_rev% of trading fees\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 28\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 \"name\": \"referral_market_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"referral_vault\",\n \"type\": \"pubkey\"\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 \"name\": \"referral_market_rev\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"referral_vault\",\n \"type\": \"pubkey\"\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"CKd94vPibAMAr8R5eLv21r8PYXkgLRithipBe8GV7J6C\",\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\": \"Agt6beCbghi4jV9A8v9geRP5dnt2wDkJBVgy9oM33zit\",\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\": \"2HsyCdr59W5ndeboaE9JAmhEQ46m5Gm2ZWBfYEs1tC1i\",\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 28\n ]\n }\n },\n {\n \"name\": \"whitelist_len\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\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}","{\n \"address\": \"9kyNMtUEFR6hDeZHUTbRKH3t1EJisfSvWQKKUev7ujoC\",\n \"metadata\": {\n \"name\": \"referral_v2\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Referral program for XMarket — whitelist-gated batch USDS distribution\"\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\": \"owner\",\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 114,\n 101,\n 102,\n 101,\n 114,\n 114,\n 97,\n 108,\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\": \"ReferralConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"batch_send_usds\",\n \"discriminator\": [\n 255,\n 33,\n 77,\n 124,\n 42,\n 207,\n 250,\n 162\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Whitelisted caller (authority, signs tx)\"\n ],\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 102,\n 101,\n 114,\n 114,\n 97,\n 108,\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\": \"ReferralConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"referral_vault\",\n \"docs\": [\n \"Referral vault — source of transfers (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\": \"ReferralConfig\"\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 \"args\": [\n {\n \"name\": \"amounts\",\n \"type\": {\n \"vec\": \"u64\"\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\": \"owner\",\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 114,\n 101,\n 102,\n 101,\n 114,\n 114,\n 97,\n 108,\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\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\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\": \"owner\",\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 114,\n 101,\n 102,\n 101,\n 114,\n 114,\n 97,\n 108,\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\": \"ReferralConfig\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"address\",\n \"type\": \"pubkey\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"ReferralConfig\",\n \"discriminator\": [\n 102,\n 148,\n 171,\n 235,\n 148,\n 83,\n 250,\n 140\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"BatchSent\",\n \"discriminator\": [\n 116,\n 64,\n 207,\n 63,\n 56,\n 97,\n 15,\n 100\n ]\n },\n {\n \"name\": \"ReferralInitialized\",\n \"discriminator\": [\n 129,\n 190,\n 249,\n 4,\n 198,\n 5,\n 141,\n 226\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"BatchSent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"sent_by\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"recipients\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"ReferralConfig\",\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\": \"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\": \"ReferralInitialized\",\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 }\n }\n ]\n}","{\n \"address\": \"8gqHPY1WtGFGmYNbrGrPVoct1kqPL6cCaUtJ17EHSsFp\",\n \"metadata\": {\n \"name\": \"dispute_v2\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Dispute program for XMarket — raise/resolve/claim disputes on prediction markets\"\n },\n \"instructions\": [\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\": \"user\",\n \"signer\": true\n },\n {\n \"name\": \"dispute_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"dispute_config.owner\",\n \"account\": \"DisputeConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"dispute_market\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101,\n 95,\n 109,\n 97,\n 114,\n 107,\n 101,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ]\n }\n },\n {\n \"name\": \"user_dispute\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 117,\n 115,\n 101,\n 114,\n 95,\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"user\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ]\n }\n },\n {\n \"name\": \"dispute_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"dispute_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\": \"dispute_config.collateral_mint\",\n \"account\": \"DisputeConfig\"\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_ata\",\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\": \"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\": \"dispute_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101,\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\": \"dispute_vault\",\n \"docs\": [\n \"ATA owned by dispute_config PDA — holds USDS bonds from all dispute raisers\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"dispute_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 {\n \"name\": \"raise_dispute\",\n \"discriminator\": [\n 41,\n 243,\n 1,\n 51,\n 150,\n 95,\n 246,\n 73\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\": \"dispute_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"dispute_config.owner\",\n \"account\": \"DisputeConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"dispute_market\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101,\n 95,\n 109,\n 97,\n 114,\n 107,\n 101,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ]\n }\n },\n {\n \"name\": \"user_dispute\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 117,\n 115,\n 101,\n 114,\n 95,\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"user\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ]\n }\n },\n {\n \"name\": \"user_ata\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"user\"\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\": \"dispute_config.collateral_mint\",\n \"account\": \"DisputeConfig\"\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\": \"dispute_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"dispute_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\": \"dispute_config.collateral_mint\",\n \"account\": \"DisputeConfig\"\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\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"resolve_dispute\",\n \"discriminator\": [\n 231,\n 6,\n 202,\n 6,\n 96,\n 103,\n 12,\n 230\n ],\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"signer\": true\n },\n {\n \"name\": \"dispute_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"dispute_config.owner\",\n \"account\": \"DisputeConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"dispute_market\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101,\n 95,\n 109,\n 97,\n 114,\n 107,\n 101,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"condition_id\"\n }\n ]\n }\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 \"name\": \"is_refunded\",\n \"type\": \"bool\"\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\": \"owner\",\n \"signer\": true\n },\n {\n \"name\": \"dispute_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 100,\n 105,\n 115,\n 112,\n 117,\n 116,\n 101,\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 \"args\": [\n {\n \"name\": \"new_admin\",\n \"type\": \"pubkey\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"DisputeConfig\",\n \"discriminator\": [\n 230,\n 88,\n 200,\n 99,\n 12,\n 93,\n 56,\n 156\n ]\n },\n {\n \"name\": \"DisputeMarket\",\n \"discriminator\": [\n 235,\n 222,\n 113,\n 250,\n 83,\n 196,\n 239,\n 159\n ]\n },\n {\n \"name\": \"UserDispute\",\n \"discriminator\": [\n 54,\n 252,\n 42,\n 67,\n 211,\n 11,\n 192,\n 188\n ]\n }\n ],\n \"types\": [\n {\n \"name\": \"DisputeConfig\",\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\": \"collateral_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"DisputeMarket\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"condition_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"deadline\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"bond\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"is_resolved\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"UserDispute\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"user\",\n \"type\": \"pubkey\"\n },\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 { 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\";\nimport { ReferralClient } from \"./programs/referral\";\nimport { DisputeClient } from \"./programs/dispute\";\n\nimport oracleIdl from \"./idls/oracle.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\";\nimport referralIdl from \"./idls/referral.json\";\nimport disputeIdl from \"./idls/dispute.json\";\n\n/**\n * XMarketSDK — V2 SDK.\n *\n * Key differences from the old v1 SDK:\n * - Uses V2 program IDs (conditionalTokens, clobExchange, questionMarket)\n * - CtfClient: plain SPL TOKEN_PROGRAM_ID for YES/NO mints, no hook\n * - ClobClient: no hookClient, no hook accounts in match instructions\n * - MarketClient: no hookProgram param in createQuestionAdmin / approvePresale\n * - No HookClient (hook program removed entirely)\n *\n * Usage:\n * const sdk = new XMarketSDK(DEVNET_CONFIG, wallet, marketOwner);\n * await sdk.market.createQuestionAdmin(params, oracle); // no hookProgram\n * await sdk.clob.matchOrders(taker, makers); // no hook in remainingAccounts\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 _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;\n private _referral?: ReferralClient;\n private _dispute?: DisputeClient;\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 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 this._market.feeConfigOwner = this.networkConfig.feeConfigOwner ?? this._marketOwner;\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 this._clob.ctfClient = this.ctf;\n this._clob.qmConfigPda = this.market.configPda;\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 get referral(): ReferralClient {\n if (!this._referral) {\n if (!this._programIds.referral) throw new Error(\"referral program ID not configured in NetworkConfig\");\n const program = new anchor.Program(this._withAddress(referralIdl, this._programIds.referral), this.provider);\n this._referral = new ReferralClient(program, this.provider, this._programIds);\n }\n return this._referral;\n }\n\n get dispute(): DisputeClient {\n if (!this._dispute) {\n if (!this._programIds.dispute) throw new Error(\"dispute program ID not configured in NetworkConfig\");\n const program = new anchor.Program(this._withAddress(disputeIdl, this._programIds.dispute), this.provider);\n this._dispute = new DisputeClient(program, this.provider, this._programIds);\n }\n return this._dispute;\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 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 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_PROGRAM_ID);\n const noAta = getAssociatedTokenAddressSync(noMint, user, false, TOKEN_PROGRAM_ID);\n\n const tx = new Transaction();\n tx.feePayer = payer;\n tx.add(\n createAssociatedTokenAccountIdempotentInstruction(\n payer, yesAta, user, yesMint, TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID,\n ),\n createAssociatedTokenAccountIdempotentInstruction(\n payer, noAta, user, noMint, TOKEN_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_PROGRAM_ID);\n const noAta = getAssociatedTokenAddressSync(noMint, signer, false, TOKEN_PROGRAM_ID);\n const amountBig = BigInt(amount.toString());\n\n const approveYesIx = createApproveInstruction(\n yesAta, delegate, signer, amountBig, [], );\n const approveNoIx = createApproveInstruction(\n noAta, delegate, signer, amountBig, [], );\n\n const tx = new Transaction();\n tx.feePayer = payer;\n tx.add(approveYesIx, approveNoIx);\n return tx;\n}\n"]}
|