pnp-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types.ts","../src/platform/client.ts","../src/idl/index.ts","../src/idl/pnp_exchange.json","../src/instructions/pdas.ts","../src/modules/market.ts","../src/instructions/idl_builders.ts","../src/platform/tx.ts","../src/modules/trading.ts","../src/instructions/trading.ts","../src/modules/redemption.ts","../src/instructions/redemption.ts","../src/sdk.ts","../src/platform/wallet.ts","../src/lib/anchor-client.ts","../src/modules/anchor-market.ts"],"sourcesContent":["// Keep SDK types independent of web3.js imports to avoid resolution issues in pure type files\nexport type Commitment = \"processed\" | \"confirmed\" | \"finalized\";\n\nexport interface Logger {\n debug?: (...args: any[]) => void;\n info?: (...args: any[]) => void;\n warn?: (...args: any[]) => void;\n error?: (...args: any[]) => void;\n}\n\nexport interface SdkConfig {\n rpcUrl: string;\n commitment?: Commitment;\n httpHeaders?: Record<string, string>;\n priorityFeeMicroLamports?: number;\n computeUnitLimit?: number;\n computeUnitPriceMicroLamports?: number;\n addressLookupTables?: unknown[];\n logger?: Logger;\n}\n\nexport class SdkError extends Error {\n code: string;\n details?: unknown;\n constructor(code: string, message: string, details?: unknown) {\n super(message);\n this.name = \"SdkError\";\n this.code = code;\n this.details = details;\n }\n}\n\nexport class ValidationError extends SdkError {\n constructor(message: string, details?: unknown) {\n super(\"VALIDATION_ERROR\", message, details);\n this.name = \"ValidationError\";\n }\n}\n\nexport class TransportError extends SdkError {\n constructor(message: string, details?: unknown) {\n super(\"TRANSPORT_ERROR\", message, details);\n this.name = \"TransportError\";\n }\n}\n\nexport class ProgramError extends SdkError {\n programErrorCode?: number;\n logs?: string[];\n constructor(\n message: string,\n details?: unknown,\n programErrorCode?: number,\n logs?: string[]\n ) {\n super(\"PROGRAM_ERROR\", message, details);\n this.name = \"ProgramError\";\n this.programErrorCode = programErrorCode;\n this.logs = logs;\n }\n}\n\n// ===== PNP raw IDL types =====\n\n// Web3-agnostic pubkey representation for raw account typing\nexport type PubkeyLike = string;\n\n// Numeric fields from IDL may arrive as bigint | number | string depending on decoder\nexport type U64Like = bigint | number | string;\n\n// Enum may arrive as tagged object, string, or number depending on decoder\nexport type WinningTokenLike =\n | \"none\"\n | \"yes\"\n | \"no\"\n | number\n | Record<string, unknown>\n | null;\n\n// Raw Market account shape (snake_case per IDL)\nexport interface MarketType {\n id: U64Like;\n resolved: boolean;\n market_reserves: U64Like;\n collateral_token: PubkeyLike;\n winning_token_id: WinningTokenLike;\n yes_token_mint: PubkeyLike;\n no_token_mint: PubkeyLike;\n yes_token_supply_minted: U64Like;\n no_token_supply_minted: U64Like;\n creator: PubkeyLike;\n creator_fee_treasury: PubkeyLike;\n question: string;\n initial_liquidity: U64Like;\n end_time: U64Like;\n bump: number;\n creation_time: U64Like;\n resolvable: boolean;\n force_resolve: boolean;\n version: number;\n}\n\nexport interface MarketsResponse {\n count: number;\n data: Array<{ publicKey: string; account: MarketType }>;\n}\n\n// Global configuration account shape (snake_case per IDL)\nexport interface GlobalConfigType {\n admin: PubkeyLike;\n oracle_program: PubkeyLike;\n fee: U64Like;\n creator_fee: U64Like;\n bump: number;\n yes_global_metadata: string;\n no_global_metadata: string;\n collateral_token_mint: PubkeyLike;\n global_id: U64Like;\n min_liquidity: U64Like;\n buffer_period: U64Like;\n burn_fee: U64Like;\n trading_paused: boolean;\n}\n\n// Settlement criteria response from proxy server\nexport interface SettlementCriteria {\n category: string;\n reasoning: string;\n resolvable: boolean;\n resolution_sources: string[];\n settlement_criteria: string;\n suggested_improvements: string;\n}\n\n// Settlement data response from proxy server\nexport interface SettlementData {\n answer: string; // The resolution answer (e.g., \"YES\", \"NO\", \"INVALID\")\n reasoning: string; // Explanation for the resolution\n resolved?: boolean;\n winning_token_id?: string;\n resolution_time?: string;\n settlement_description?: string;\n resolution_source?: string;\n}\n","import { Connection, Commitment, PublicKey } from \"@solana/web3.js\";\nimport { Logger, SdkConfig, TransportError } from \"../types\";\nimport { PNP_PROGRAM_ID } from \"../idl\";\n\nexport class Client {\n readonly connection: Connection;\n readonly programId: PublicKey;\n readonly commitment: Commitment;\n readonly logger: Logger;\n\n constructor(cfg: SdkConfig) {\n this.commitment = cfg.commitment ?? \"confirmed\";\n this.connection = new Connection(cfg.rpcUrl, {\n commitment: this.commitment,\n httpHeaders: cfg.httpHeaders,\n });\n this.programId = PNP_PROGRAM_ID;\n this.logger = cfg.logger ?? console;\n }\n\n fail(code: string, message: string, details?: unknown) {\n this.logger.error?.(code, message, details);\n return new TransportError(`${code}: ${message}`, details);\n }\n}\n","import { PublicKey, TransactionInstruction } from \"@solana/web3.js\";\nimport type { Idl } from \"@coral-xyz/anchor\";\nimport { BorshCoder } from \"@coral-xyz/anchor\";\nimport idlJson from \"./pnp_exchange.json\" assert { type: \"json\" };\n\nconst DEBUG = process.env.PNP_DEBUG === '1';\n\n// Lightweight IDL utilities to encode instructions and build account metas\nexport const PNP_IDL = idlJson as unknown as Idl & { address?: string };\nexport const PNP_PROGRAM_ID = new PublicKey(\n (PNP_IDL as any).address ?? (() => { throw new Error(\"IDL missing address field\"); })()\n);\n\nexport const idlCoder = new BorshCoder(PNP_IDL);\n\nexport type AccountsMap = Record<string, PublicKey>;\n\nexport function buildIdlIx(\n ixName: string,\n accounts: AccountsMap,\n args: any[] = []\n): TransactionInstruction {\n const ixDef = PNP_IDL.instructions?.find((ix) => ix.name === ixName);\n if (!ixDef) throw new Error(`Instruction not found in IDL: ${ixName}`);\n\n if (DEBUG) {\n console.log(`Building instruction: ${ixName}`);\n // Pretty-print args, handling bigint, BN, PublicKey, Buffers\n console.log(\n `Instruction args:`,\n JSON.stringify(\n args.map((v) => {\n if (v && typeof v === \"object\") {\n // BN detection (bn.js)\n if (typeof (v as any).toString === \"function\" && (v as any).constructor?.name === \"BN\") {\n return { __bn: (v as any).toString(10) };\n }\n // PublicKey\n if (typeof (v as any).toBase58 === \"function\") {\n return { __pubkey: (v as any).toBase58() };\n }\n // Buffer / Uint8Array\n if (v instanceof Uint8Array) {\n return { __bytes: Buffer.from(v).toString(\"hex\") };\n }\n }\n if (typeof v === \"bigint\") return v.toString();\n return v;\n }),\n null,\n 2\n )\n );\n console.log(`IDL definition:`, JSON.stringify(ixDef.args, null, 2));\n }\n\n // Log accounts in IDL order with provided pubkeys\n try {\n if (DEBUG) {\n console.log(`Accounts for ${ixName} (IDL order):`);\n for (const acc of ixDef.accounts) {\n const name = (acc as any).name as string;\n const pk = accounts[name];\n console.log(` ${name}: ${pk ? pk.toBase58() : '(missing)'}`);\n }\n }\n } catch (_) {\n // best-effort logging\n }\n\n // Ensure types match IDL specification\n if (ixDef.args && ixDef.args.length > 0) {\n if (DEBUG) {\n console.log('Checking argument types against IDL specification...');\n for (let i = 0; i < Math.min(args.length, ixDef.args.length); i++) {\n const argDef = ixDef.args[i];\n if (!argDef) continue;\n const argValue = args[i];\n console.log(`Arg ${i} (${argDef.name}): Expected type '${argDef.type}', got '${typeof argValue}' with value:`, \n typeof argValue === 'bigint' ? argValue.toString() : argValue);\n }\n }\n }\n\n // Encode data using Anchor coder\n try {\n // Anchor expects a named-args object; if we received an array, map it to an object per IDL arg names\n let namedArgs: any = args;\n if (Array.isArray(args)) {\n namedArgs = {} as Record<string, any>;\n for (let i = 0; i < (ixDef.args?.length ?? 0); i++) {\n const def = ixDef.args[i];\n if (!def) continue;\n namedArgs[def.name] = args[i];\n }\n if (DEBUG) {\n console.log(`Mapped positional args to named args:`, JSON.stringify(namedArgs, (key, value) => {\n if (value && typeof value === \"object\") {\n if (typeof (value as any).toString === \"function\" && (value as any).constructor?.name === \"BN\") {\n return { __bn: (value as any).toString(10) };\n }\n if (typeof (value as any).toBase58 === \"function\") {\n return { __pubkey: (value as any).toBase58() };\n }\n if (value instanceof Uint8Array) {\n return { __bytes: Buffer.from(value).toString(\"hex\") };\n }\n }\n if (typeof value === \"bigint\") return value.toString();\n return value;\n }, 2));\n }\n }\n\n const data = idlCoder.instruction.encode(ixName as any, namedArgs);\n if (DEBUG) {\n console.log(`Instruction data encoded successfully, length: ${data.length} bytes`);\n console.log(`First 20 bytes: ${Buffer.from(data).toString('hex').substring(0, 40)}...`);\n }\n\n // For critical debugging: decode the first fields directly from the encoded buffer\n try {\n if (DEBUG) {\n const buf = Buffer.from(data);\n // Discriminator is first 8 bytes\n const off = 8;\n const readU64LE = (b: Buffer, o: number) =>\n BigInt(b.readUInt32LE(o)) + (BigInt(b.readUInt32LE(o + 4)) << 32n);\n\n if (ixName === \"mint_decision_tokens\") {\n const amountLE = readU64LE(buf, off);\n const buyFlag = buf[off + 8] === 1;\n const minimumOutLE = readU64LE(buf, off + 9);\n console.log(\n `[buildIdlIx:${ixName}] Encoded fields -> amount(u64): ${amountLE.toString()}, buy_yes_token(bool): ${buyFlag}, minimum_out(u64): ${minimumOutLE.toString()}`\n );\n }\n if (ixName === \"burn_decision_tokens\") {\n const amountLE = readU64LE(buf, off);\n const burnFlag = buf[off + 8] === 1;\n console.log(\n `[buildIdlIx:${ixName}] Encoded fields -> amount(u64): ${amountLE.toString()}, burn_yes_token(bool): ${burnFlag}`\n );\n }\n }\n } catch (e) {\n if (DEBUG) console.warn(`[buildIdlIx:${ixName}] Post-encode field inspection failed:`, (e as any)?.message ?? String(e));\n }\n\n return new TransactionInstruction({ programId: PNP_PROGRAM_ID, keys: constructAccountMetas(ixDef, accounts), data });\n } catch (err: any) {\n if (DEBUG) console.error(`Failed to encode instruction data: ${err.message || err}`);\n throw err;\n }\n}\n\nfunction constructAccountMetas(ixDef: any, accounts: AccountsMap) {\n // Map accounts in IDL order\n const metas: { pubkey: PublicKey; isSigner: boolean; isWritable: boolean }[] = [];\n for (const acc of ixDef.accounts) {\n const a: any = acc as any;\n const name: string = a.name as string;\n const optional: boolean = Boolean(a.optional);\n const pubkey = accounts[name];\n if (!pubkey) {\n if (optional) {\n // Skip optional accounts if not supplied\n continue;\n }\n throw new Error(`Missing account for ${ixDef.name}: ${name}`);\n }\n const isSigner: boolean = Boolean(a.signer);\n const isWritable: boolean = Boolean(a.writable);\n metas.push({ pubkey, isSigner, isWritable });\n }\n return metas;\n}\n\n // Removed duplicated code (replaced by constructAccountMetas function)\n\nexport function decodeAccount<T = any>(accountName: string, data: Buffer): T {\n return idlCoder.accounts.decode(accountName as any, data) as T;\n}\n","{\n \"address\": \"6fnYZUSyp3vJxTNnayq5S62d363EFaGARnqYux5bqrxb\",\n \"metadata\": {\n \"name\": \"pnp_protocol_solana\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Created with Anchor\"\n },\n \"docs\": [\n \"Main program module for the PnP prediction market protocol\"\n ],\n \"instructions\": [\n {\n \"name\": \"burn_decision_tokens\",\n \"docs\": [\n \"Burns decision tokens in exchange for collateral\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing burning accounts\",\n \"* `amount` - Amount of decision tokens to burn\",\n \"* `burn_yes_token` - If true, burn YES tokens; if false, burn NO tokens\",\n \"\",\n \"# Returns\",\n \"* The amount of collateral returned\"\n ],\n \"discriminator\": [\n 18,\n 198,\n 214,\n 1,\n 236,\n 94,\n 63,\n 29\n ],\n \"accounts\": [\n {\n \"name\": \"buyer\",\n \"docs\": [\n \"The buyer's account, must be a signer\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"admin\",\n \"docs\": [\n \"The admin's account, must be a signer\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"market_creator\",\n \"docs\": [\n \"The market creator's account\"\n ]\n },\n {\n \"name\": \"market\",\n \"docs\": [\n \"The prediction market account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"global_config\",\n \"docs\": [\n \"Global configuration account\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"yes_token_mint\",\n \"docs\": [\n \"YES token mint account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"no_token_mint\",\n \"docs\": [\n \"NO token mint account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"buyer_yes_token_account\",\n \"docs\": [\n \"Buyer's YES token account\"\n ],\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\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\": \"yes_token_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_no_token_account\",\n \"docs\": [\n \"Buyer's NO token account\"\n ],\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\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\": \"no_token_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\": \"market_reserve_vault\",\n \"docs\": [\n \"Market's collateral token vault\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"market\"\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_token_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\": \"collateral_token_mint\",\n \"docs\": [\n \"Collateral token mint account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"buyer_collateral_token_account\",\n \"docs\": [\n \"Buyer's collateral token account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\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_token_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\": \"admin_collateral_token_account\",\n \"docs\": [\n \"Market creator's collateral token account\",\n \"Admin's collateral token account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"admin\"\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_token_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_fee_treasury\",\n \"docs\": [\n \"Creator's fee treasury account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"docs\": [\n \"Token program interface\"\n ]\n },\n {\n \"name\": \"associated_token_program\",\n \"docs\": [\n \"Associated token program\"\n ],\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"docs\": [\n \"System program\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"burn_yes_token\",\n \"type\": \"bool\"\n }\n ],\n \"returns\": \"u64\"\n },\n {\n \"name\": \"claim_creator_fee\",\n \"docs\": [\n \"Claims the creator fee from the creator fee treasury\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing fee claiming accounts\",\n \"\",\n \"# Returns\",\n \"* Result indicating success or error\"\n ],\n \"discriminator\": [\n 26,\n 97,\n 138,\n 203,\n 132,\n 171,\n 141,\n 252\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"creator_fee_treasury\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 114,\n 101,\n 97,\n 116,\n 111,\n 114,\n 95,\n 102,\n 101,\n 101,\n 95,\n 116,\n 114,\n 101,\n 97,\n 115,\n 117,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n }\n ]\n }\n },\n {\n \"name\": \"creator_token_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\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_token_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\": \"collateral_token_mint\"\n },\n {\n \"name\": \"token_program\"\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\": \"create_market\",\n \"docs\": [\n \"Creates a new prediction market\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing market creation accounts\",\n \"* `question` - The prediction market question/statement\",\n \"* `initial_liquidity` - Initial liquidity provided to the market\",\n \"* `end_time` - Unix timestamp when the market ends\",\n \"\",\n \"# Returns\",\n \"* The public key of the newly created market\"\n ],\n \"discriminator\": [\n 103,\n 226,\n 97,\n 235,\n 200,\n 188,\n 251,\n 254\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"market\",\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 ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"yes_token_mint\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"no_token_mint\"\n }\n ]\n }\n },\n {\n \"name\": \"global_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"collateral_token_mint\",\n \"writable\": true\n },\n {\n \"name\": \"creator_collateral_token_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\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_token_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_token_mint\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 121,\n 101,\n 115,\n 95,\n 116,\n 111,\n 107,\n 101,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"global_config.global_id\",\n \"account\": \"GlobalConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"no_token_mint\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 110,\n 111,\n 95,\n 116,\n 111,\n 107,\n 101,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"global_config.global_id\",\n \"account\": \"GlobalConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"user_yes_token_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\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\": \"yes_token_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_no_token_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\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\": \"no_token_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\": \"market_reserve_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"market\"\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_token_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_metadata_program\"\n },\n {\n \"name\": \"yes_metadata\",\n \"writable\": true\n },\n {\n \"name\": \"no_metadata\",\n \"writable\": true\n },\n {\n \"name\": \"creator_fee_treasury\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 114,\n 101,\n 97,\n 116,\n 111,\n 114,\n 95,\n 102,\n 101,\n 101,\n 95,\n 116,\n 114,\n 101,\n 97,\n 115,\n 117,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\n }\n ]\n }\n },\n {\n \"name\": \"token_program\"\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\": \"question\",\n \"type\": \"string\"\n },\n {\n \"name\": \"initial_liquidity\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"u64\"\n }\n ],\n \"returns\": \"pubkey\"\n },\n {\n \"name\": \"create_market_v2\",\n \"docs\": [\n \"Creates a new V2 prediction market with deferred token creation\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing V2 market creation accounts\",\n \"* `question` - The prediction market question/statement\",\n \"* `initial_liquidity` - Initial liquidity provided to the market (held in reserve)\",\n \"* `end_time` - Unix timestamp when the market ends\",\n \"* `creator` - The public key of the market creator (doesn't need to sign)\",\n \"\",\n \"# Returns\",\n \"* The public key of the newly created market\"\n ],\n \"discriminator\": [\n 193,\n 18,\n 155,\n 62,\n 161,\n 124,\n 80,\n 25\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Payer who pays for market creation\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"creator\"\n },\n {\n \"name\": \"market\",\n \"docs\": [\n \"Market account - uses V2 PDA derivation with market ID\"\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 45,\n 118,\n 50\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"global_config.global_id\",\n \"account\": \"GlobalConfig\"\n }\n ]\n }\n },\n {\n \"name\": \"global_config\",\n \"docs\": [\n \"Global configuration account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"collateral_token_mint\",\n \"docs\": [\n \"Collateral token mint (must match global config)\"\n ]\n },\n {\n \"name\": \"payer_collateral_token_account\",\n \"docs\": [\n \"Payer's collateral token account (for initial liquidity transfer)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"payer\"\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_token_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\": \"market_reserve_vault\",\n \"docs\": [\n \"Market reserve vault to hold initial liquidity\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"market\"\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_token_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_fee_treasury\",\n \"docs\": [\n \"Creator fee treasury (created if needed)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 99,\n 114,\n 101,\n 97,\n 116,\n 111,\n 114,\n 95,\n 102,\n 101,\n 101,\n 95,\n 116,\n 114,\n 101,\n 97,\n 115,\n 117,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"creator\"\n }\n ]\n }\n },\n {\n \"name\": \"token_program\",\n \"docs\": [\n \"Token program\"\n ]\n },\n {\n \"name\": \"associated_token_program\",\n \"docs\": [\n \"Associated token program\"\n ],\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"docs\": [\n \"System program\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"question\",\n \"type\": \"string\"\n },\n {\n \"name\": \"initial_liquidity\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n }\n ],\n \"returns\": \"pubkey\"\n },\n {\n \"name\": \"creator_refund\",\n \"docs\": [\n \"Allows creator to claim refund if market is expired and not resolvable\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing creator refund accounts\"\n ],\n \"discriminator\": [\n 131,\n 96,\n 75,\n 61,\n 131,\n 158,\n 144,\n 19\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"docs\": [\n \"Market creator account\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"global_config\",\n \"docs\": [\n \"Global configuration account\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"market\",\n \"docs\": [\n \"Market account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"yes_token_mint\",\n \"docs\": [\n \"YES token mint account\"\n ],\n \"optional\": true\n },\n {\n \"name\": \"no_token_mint\",\n \"docs\": [\n \"NO token mint account\"\n ],\n \"optional\": true\n },\n {\n \"name\": \"market_reserve_vault\",\n \"docs\": [\n \"Market's collateral token vault\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"market\"\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_token_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\": \"collateral_token_mint\",\n \"docs\": [\n \"Collateral token mint account\"\n ]\n },\n {\n \"name\": \"creator_collateral_token_account\",\n \"docs\": [\n \"Creator's collateral token account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\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_token_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 \"docs\": [\n \"Token program interface\"\n ]\n },\n {\n \"name\": \"associated_token_program\",\n \"docs\": [\n \"Associated token program\"\n ],\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"docs\": [\n \"System program\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"creator_refund_v2\",\n \"docs\": [\n \"V2 version: Allows creator to claim refund for V2 markets using market-id based seeds\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing creator refund accounts\"\n ],\n \"discriminator\": [\n 93,\n 161,\n 160,\n 92,\n 75,\n 205,\n 235,\n 184\n ],\n \"accounts\": [\n {\n \"name\": \"creator\",\n \"docs\": [\n \"Market creator account\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"global_config\",\n \"docs\": [\n \"Global configuration account\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"market\",\n \"docs\": [\n \"Market account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"yes_token_mint\",\n \"docs\": [\n \"YES token mint account\"\n ],\n \"optional\": true\n },\n {\n \"name\": \"no_token_mint\",\n \"docs\": [\n \"NO token mint account\"\n ],\n \"optional\": true\n },\n {\n \"name\": \"market_reserve_vault\",\n \"docs\": [\n \"Market's collateral token vault\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"market\"\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_token_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\": \"collateral_token_mint\",\n \"docs\": [\n \"Collateral token mint account\"\n ]\n },\n {\n \"name\": \"creator_collateral_token_account\",\n \"docs\": [\n \"Creator's collateral token account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\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_token_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 \"docs\": [\n \"Token program interface\"\n ]\n },\n {\n \"name\": \"associated_token_program\",\n \"docs\": [\n \"Associated token program\"\n ],\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"docs\": [\n \"System program\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"get_no_price\",\n \"discriminator\": [\n 21,\n 75,\n 13,\n 51,\n 64,\n 19,\n 143,\n 223\n ],\n \"accounts\": [\n {\n \"name\": \"market\"\n },\n {\n \"name\": \"yes_token_mint\",\n \"docs\": [\n \"YES token mint\"\n ]\n },\n {\n \"name\": \"no_token_mint\",\n \"docs\": [\n \"NO token mint\"\n ]\n }\n ],\n \"args\": [],\n \"returns\": \"u64\"\n },\n {\n \"name\": \"get_price_for_market\",\n \"docs\": [\n \"Gets the price of YES and NO tokens for a given market\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing the market and mint accounts\",\n \"\",\n \"# Returns\",\n \"* (YES price, NO price)\"\n ],\n \"discriminator\": [\n 74,\n 121,\n 126,\n 27,\n 228,\n 50,\n 232,\n 98\n ],\n \"accounts\": [\n {\n \"name\": \"market\"\n },\n {\n \"name\": \"yes_token_mint\",\n \"docs\": [\n \"YES token mint\"\n ]\n },\n {\n \"name\": \"no_token_mint\",\n \"docs\": [\n \"NO token mint\"\n ]\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"get_yes_price\",\n \"discriminator\": [\n 55,\n 53,\n 8,\n 152,\n 205,\n 158,\n 118,\n 52\n ],\n \"accounts\": [\n {\n \"name\": \"market\"\n },\n {\n \"name\": \"yes_token_mint\",\n \"docs\": [\n \"YES token mint\"\n ]\n },\n {\n \"name\": \"no_token_mint\",\n \"docs\": [\n \"NO token mint\"\n ]\n }\n ],\n \"args\": [],\n \"returns\": \"u64\"\n },\n {\n \"name\": \"init_protocol\",\n \"docs\": [\n \"Initializes the protocol with global configuration settings\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing protocol initialization accounts\",\n \"* `yes_global_metadata` - Metadata template for YES tokens\",\n \"* `no_global_metadata` - Metadata template for NO tokens\"\n ],\n \"discriminator\": [\n 3,\n 188,\n 141,\n 237,\n 225,\n 226,\n 232,\n 210\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Payer account that will pay for account creation\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"global_config\",\n \"docs\": [\n \"Global configuration account that stores protocol settings\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"collateral_token_mint\",\n \"docs\": [\n \"Mint account for the token used as collateral\"\n ]\n },\n {\n \"name\": \"system_program\",\n \"docs\": [\n \"System program\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"yes_global_metadata\",\n \"type\": \"string\"\n },\n {\n \"name\": \"no_global_metadata\",\n \"type\": \"string\"\n },\n {\n \"name\": \"initial_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"creator_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"oracle_program\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"min_liquidity\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"buffer_period\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"burn_fee\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"mint_decision_tokens\",\n \"docs\": [\n \"Mints new decision tokens (YES or NO) in exchange for collateral\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing minting accounts\",\n \"* `amount` - Amount of collateral to exchange for decision tokens\",\n \"* `buy_yes_token` - If true, mint YES tokens; if false, mint NO tokens\",\n \"\",\n \"# Returns\",\n \"* The amount of decision tokens minted\"\n ],\n \"discriminator\": [\n 226,\n 180,\n 53,\n 125,\n 168,\n 69,\n 114,\n 25\n ],\n \"accounts\": [\n {\n \"name\": \"buyer\",\n \"docs\": [\n \"The buyer's account, must be a signer\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"admin\",\n \"docs\": [\n \"The admin's account, must be a signer\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"market_creator\",\n \"docs\": [\n \"The market creator's account\"\n ]\n },\n {\n \"name\": \"market\",\n \"docs\": [\n \"The prediction market account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"global_config\",\n \"docs\": [\n \"Global configuration account\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"yes_token_mint\",\n \"docs\": [\n \"YES token mint account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"no_token_mint\",\n \"docs\": [\n \"NO token mint account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"buyer_yes_token_account\",\n \"docs\": [\n \"Buyer's YES token account\"\n ],\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\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\": \"yes_token_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_no_token_account\",\n \"docs\": [\n \"Buyer's NO token account\"\n ],\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\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\": \"no_token_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\": \"market_reserve_vault\",\n \"docs\": [\n \"Market's collateral token vault\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"market\"\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_token_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\": \"collateral_token_mint\",\n \"docs\": [\n \"Collateral token mint account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"buyer_collateral_token_account\",\n \"docs\": [\n \"Buyer's collateral token account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\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_token_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\": \"admin_collateral_token_account\",\n \"docs\": [\n \"Market creator's collateral token account\",\n \"Admin's collateral token account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"admin\"\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_token_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_fee_treasury\",\n \"docs\": [\n \"Creator's fee treasury account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"docs\": [\n \"Token program interface\"\n ]\n },\n {\n \"name\": \"associated_token_program\",\n \"docs\": [\n \"Associated token program\"\n ],\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"docs\": [\n \"System program\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"buy_yes_token\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"minimum_out\",\n \"type\": \"u64\"\n }\n ],\n \"returns\": \"u64\"\n },\n {\n \"name\": \"redeem_position\",\n \"docs\": [\n \"Redeems winning tokens for collateral after market settlement\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing redemption accounts\",\n \"\",\n \"# Returns\",\n \"* The amount of collateral redeemed\"\n ],\n \"discriminator\": [\n 51,\n 138,\n 49,\n 229,\n 33,\n 216,\n 19,\n 97\n ],\n \"accounts\": [\n {\n \"name\": \"buyer\",\n \"docs\": [\n \"The buyer's account, must be a signer\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"admin\",\n \"docs\": [\n \"The admin's account, must be a signer\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"market_creator\",\n \"docs\": [\n \"The market creator's account\"\n ]\n },\n {\n \"name\": \"market\",\n \"docs\": [\n \"The prediction market account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"global_config\",\n \"docs\": [\n \"Global configuration account\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"yes_token_mint\",\n \"docs\": [\n \"YES token mint account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"no_token_mint\",\n \"docs\": [\n \"NO token mint account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"buyer_yes_token_account\",\n \"docs\": [\n \"Buyer's YES token account\"\n ],\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\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\": \"yes_token_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_no_token_account\",\n \"docs\": [\n \"Buyer's NO token account\"\n ],\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\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\": \"no_token_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\": \"market_reserve_vault\",\n \"docs\": [\n \"Market's collateral token vault\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"market\"\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_token_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\": \"collateral_token_mint\",\n \"docs\": [\n \"Collateral token mint account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"buyer_collateral_token_account\",\n \"docs\": [\n \"Buyer's collateral token account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\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_token_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\": \"admin_collateral_token_account\",\n \"docs\": [\n \"Market creator's collateral token account\",\n \"Admin's collateral token account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"admin\"\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_token_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_fee_treasury\",\n \"docs\": [\n \"Creator's fee treasury account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"docs\": [\n \"Token program interface\"\n ]\n },\n {\n \"name\": \"associated_token_program\",\n \"docs\": [\n \"Associated token program\"\n ],\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"docs\": [\n \"System program\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [],\n \"returns\": \"u64\"\n },\n {\n \"name\": \"redeem_position_v2\",\n \"discriminator\": [\n 21,\n 131,\n 209,\n 12,\n 53,\n 125,\n 168,\n 130\n ],\n \"accounts\": [\n {\n \"name\": \"buyer\",\n \"docs\": [\n \"The buyer's account, must be a signer\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"admin\",\n \"docs\": [\n \"The admin's account, must be a signer\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"market_creator\",\n \"docs\": [\n \"The market creator's account\"\n ]\n },\n {\n \"name\": \"market\",\n \"docs\": [\n \"The prediction market account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"global_config\",\n \"docs\": [\n \"Global configuration account\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"yes_token_mint\",\n \"docs\": [\n \"YES token mint account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"no_token_mint\",\n \"docs\": [\n \"NO token mint account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"buyer_yes_token_account\",\n \"docs\": [\n \"Buyer's YES token account\"\n ],\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\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\": \"yes_token_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_no_token_account\",\n \"docs\": [\n \"Buyer's NO token account\"\n ],\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\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\": \"no_token_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\": \"market_reserve_vault\",\n \"docs\": [\n \"Market's collateral token vault\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"market\"\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_token_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\": \"collateral_token_mint\",\n \"docs\": [\n \"Collateral token mint account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"buyer_collateral_token_account\",\n \"docs\": [\n \"Buyer's collateral token account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\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_token_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\": \"admin_collateral_token_account\",\n \"docs\": [\n \"Market creator's collateral token account\",\n \"Admin's collateral token account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"admin\"\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_token_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_fee_treasury\",\n \"docs\": [\n \"Creator's fee treasury account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"docs\": [\n \"Token program interface\"\n ]\n },\n {\n \"name\": \"associated_token_program\",\n \"docs\": [\n \"Associated token program\"\n ],\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"docs\": [\n \"System program\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [],\n \"returns\": \"u64\"\n },\n {\n \"name\": \"set_buffer_period\",\n \"docs\": [\n \"Sets the buffer period for market resolution\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing buffer period setting accounts\",\n \"* `buffer_period` - The new buffer period in seconds\"\n ],\n \"discriminator\": [\n 214,\n 74,\n 140,\n 200,\n 87,\n 28,\n 33,\n 245\n ],\n \"accounts\": [\n {\n \"name\": \"admin\",\n \"docs\": [\n \"Admin account (must be the current admin)\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"global_config\",\n \"docs\": [\n \"Global configuration account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\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\": \"buffer_period\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"set_burn_fee\",\n \"docs\": [\n \"Sets the burn fee for the protocol\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing fee setting accounts\",\n \"* `new_fee` - The new burn fee value\",\n \"\",\n \"# Returns\",\n \"* Result indicating success or error\"\n ],\n \"discriminator\": [\n 42,\n 181,\n 26,\n 185,\n 180,\n 168,\n 128,\n 181\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"The authority attempting to set the fee. Must be the admin.\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"global_config\",\n \"docs\": [\n \"The global configuration account storing protocol settings\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\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_fee\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"set_creator_fee\",\n \"docs\": [\n \"Sets the creator fee percentage that creators receive from trading fees\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing fee setting accounts\",\n \"* `new_fee` - The new creator fee value (must be <= 20% of protocol fee)\",\n \"\",\n \"# Returns\",\n \"* Result indicating success or error\"\n ],\n \"discriminator\": [\n 188,\n 13,\n 191,\n 116,\n 68,\n 13,\n 254,\n 218\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"The authority attempting to set the fee. Must be the admin.\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"global_config\",\n \"docs\": [\n \"The global configuration account storing protocol settings\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\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_fee\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"set_market_resolvable\",\n \"docs\": [\n \"Sets the resolvable status for a market\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing market resolvable setting accounts\",\n \"* `resolvable` - The new resolvable status\",\n \"* `force_resolve` - Whether to force resolve (allow immediate refunds)\"\n ],\n \"discriminator\": [\n 248,\n 31,\n 54,\n 169,\n 19,\n 42,\n 126,\n 93\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Admin or oracle account\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"global_config\",\n \"docs\": [\n \"Global configuration account\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"market\",\n \"docs\": [\n \"Market account to update\"\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 ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"market.yes_token_mint\",\n \"account\": \"Market\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"market.no_token_mint\",\n \"account\": \"Market\"\n }\n ]\n }\n },\n {\n \"name\": \"yes_token_mint\",\n \"docs\": [\n \"YES token mint account\"\n ]\n },\n {\n \"name\": \"no_token_mint\",\n \"docs\": [\n \"NO token mint account\"\n ]\n }\n ],\n \"args\": [\n {\n \"name\": \"resolvable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"force_resolve\",\n \"type\": {\n \"option\": \"bool\"\n }\n }\n ]\n },\n {\n \"name\": \"set_market_resolvable_v2\",\n \"docs\": [\n \"Sets the resolvable status for a V2 market and creates tokens if needed\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing V2 market resolvable setting accounts\",\n \"* `market_id` - The market ID\",\n \"* `resolvable` - The new resolvable status\",\n \"* `force_resolve` - Whether to force resolve (allow immediate refunds)\"\n ],\n \"discriminator\": [\n 74,\n 223,\n 187,\n 6,\n 245,\n 19,\n 220,\n 253\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Admin or oracle account (pays for token creation)\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"global_config\",\n \"docs\": [\n \"Global configuration account\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"market\",\n \"docs\": [\n \"V2 Market account to update\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"collateral_token_mint\",\n \"docs\": [\n \"Collateral token mint\"\n ]\n },\n {\n \"name\": \"yes_token_mint\",\n \"docs\": [\n \"YES token mint (created by admin)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 121,\n 101,\n 115,\n 95,\n 116,\n 111,\n 107,\n 101,\n 110\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"market_id\"\n }\n ]\n }\n },\n {\n \"name\": \"no_token_mint\",\n \"docs\": [\n \"NO token mint (created by admin)\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 110,\n 111,\n 95,\n 116,\n 111,\n 107,\n 101,\n 110\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"market_id\"\n }\n ]\n }\n },\n {\n \"name\": \"creator\",\n \"docs\": [\n \"Original market creator (for receiving initial tokens)\"\n ]\n },\n {\n \"name\": \"creator_yes_token_account\",\n \"docs\": [\n \"Creator's YES token account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\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\": \"yes_token_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_no_token_account\",\n \"docs\": [\n \"Creator's NO token account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"creator\"\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\": \"no_token_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_metadata_program\",\n \"docs\": [\n \"Token metadata program\"\n ]\n },\n {\n \"name\": \"yes_metadata\",\n \"docs\": [\n \"YES token metadata account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"no_metadata\",\n \"docs\": [\n \"NO token metadata account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"docs\": [\n \"Token program\"\n ]\n },\n {\n \"name\": \"associated_token_program\",\n \"docs\": [\n \"Associated token program\"\n ],\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"docs\": [\n \"System program\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"rent\",\n \"docs\": [\n \"Rent sysvar\"\n ],\n \"address\": \"SysvarRent111111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"market_id\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"resolvable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"force_resolve\",\n \"type\": {\n \"option\": \"bool\"\n }\n }\n ]\n },\n {\n \"name\": \"set_min_liquidity\",\n \"docs\": [\n \"Sets the minimum liquidity required for a market\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing fee setting accounts\",\n \"* `new_min_liquidity` - The new minimum liquidity value\",\n \"\",\n \"# Returns\",\n \"* Result indicating success or error\"\n ],\n \"discriminator\": [\n 162,\n 147,\n 87,\n 130,\n 193,\n 136,\n 3,\n 58\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"The authority attempting to set the fee. Must be the admin.\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"global_config\",\n \"docs\": [\n \"The global configuration account storing protocol settings\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\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_min_liquidity\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"set_taker_fee\",\n \"docs\": [\n \"Sets the protocol's taker fee percentage\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing fee setting accounts\",\n \"* `new_fee` - The new fee value (between 0-10000, representing 0-100%)\"\n ],\n \"discriminator\": [\n 182,\n 139,\n 233,\n 12,\n 57,\n 127,\n 45,\n 244\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"The authority attempting to set the fee. Must be the admin.\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"global_config\",\n \"docs\": [\n \"The global configuration account storing protocol settings\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\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_fee\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"set_trading_paused\",\n \"docs\": [\n \"Sets the trading pause status for the protocol\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing trading pause setting accounts\",\n \"* `trading_paused` - Whether trading should be paused (true) or enabled (false)\"\n ],\n \"discriminator\": [\n 184,\n 179,\n 206,\n 146,\n 99,\n 185,\n 77,\n 231\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"The authority attempting to set the fee. Must be the admin.\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"global_config\",\n \"docs\": [\n \"The global configuration account storing protocol settings\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\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\": \"trading_paused\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"settle_market\",\n \"docs\": [\n \"Settles a market by determining the winning outcome\",\n \"\",\n \"# Arguments\",\n \"* `ctx` - The context containing settlement accounts\",\n \"* `yes_winner` - If true, YES tokens win; if false, NO tokens win\",\n \"\",\n \"# Returns\",\n \"* The winning token type\"\n ],\n \"discriminator\": [\n 193,\n 153,\n 95,\n 216,\n 166,\n 6,\n 144,\n 217\n ],\n \"accounts\": [\n {\n \"name\": \"buyer\",\n \"docs\": [\n \"The buyer's account, must be a signer\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"admin\",\n \"docs\": [\n \"The admin's account, must be a signer\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"market_creator\",\n \"docs\": [\n \"The market creator's account\"\n ]\n },\n {\n \"name\": \"market\",\n \"docs\": [\n \"The prediction market account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"global_config\",\n \"docs\": [\n \"Global configuration account\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 103,\n 108,\n 111,\n 98,\n 97,\n 108,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"yes_token_mint\",\n \"docs\": [\n \"YES token mint account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"no_token_mint\",\n \"docs\": [\n \"NO token mint account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"buyer_yes_token_account\",\n \"docs\": [\n \"Buyer's YES token account\"\n ],\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\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\": \"yes_token_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_no_token_account\",\n \"docs\": [\n \"Buyer's NO token account\"\n ],\n \"writable\": true,\n \"optional\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\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\": \"no_token_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\": \"market_reserve_vault\",\n \"docs\": [\n \"Market's collateral token vault\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"market\"\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_token_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\": \"collateral_token_mint\",\n \"docs\": [\n \"Collateral token mint account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"buyer_collateral_token_account\",\n \"docs\": [\n \"Buyer's collateral token account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"buyer\"\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_token_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\": \"admin_collateral_token_account\",\n \"docs\": [\n \"Market creator's collateral token account\",\n \"Admin's collateral token account\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"admin\"\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_token_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_fee_treasury\",\n \"docs\": [\n \"Creator's fee treasury account\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"docs\": [\n \"Token program interface\"\n ]\n },\n {\n \"name\": \"associated_token_program\",\n \"docs\": [\n \"Associated token program\"\n ],\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"docs\": [\n \"System program\"\n ],\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"yes_winner\",\n \"type\": \"bool\"\n }\n ],\n \"returns\": {\n \"defined\": {\n \"name\": \"WinningToken\"\n }\n }\n }\n ],\n \"accounts\": [\n {\n \"name\": \"GlobalConfig\",\n \"discriminator\": [\n 149,\n 8,\n 156,\n 202,\n 160,\n 252,\n 176,\n 217\n ]\n },\n {\n \"name\": \"Market\",\n \"discriminator\": [\n 219,\n 190,\n 213,\n 55,\n 0,\n 227,\n 198,\n 154\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"BufferPeriodUpdated\",\n \"discriminator\": [\n 50,\n 193,\n 188,\n 146,\n 213,\n 236,\n 63,\n 224\n ]\n },\n {\n \"name\": \"BurnDecisionTokensEvent\",\n \"discriminator\": [\n 194,\n 248,\n 24,\n 110,\n 133,\n 210,\n 96,\n 232\n ]\n },\n {\n \"name\": \"CreatorRefundEvent\",\n \"discriminator\": [\n 230,\n 23,\n 204,\n 95,\n 135,\n 31,\n 5,\n 25\n ]\n },\n {\n \"name\": \"FeeEvent\",\n \"discriminator\": [\n 73,\n 79,\n 78,\n 127,\n 184,\n 213,\n 13,\n 220\n ]\n },\n {\n \"name\": \"MarketCreatedEvent\",\n \"discriminator\": [\n 130,\n 142,\n 5,\n 16,\n 107,\n 160,\n 73,\n 124\n ]\n },\n {\n \"name\": \"MarketResolvableUpdated\",\n \"discriminator\": [\n 101,\n 255,\n 127,\n 205,\n 46,\n 146,\n 153,\n 157\n ]\n },\n {\n \"name\": \"MarketV2CreatedEvent\",\n \"discriminator\": [\n 39,\n 108,\n 151,\n 231,\n 171,\n 113,\n 198,\n 175\n ]\n },\n {\n \"name\": \"MarketV2ResolvableUpdated\",\n \"discriminator\": [\n 250,\n 22,\n 126,\n 96,\n 59,\n 231,\n 75,\n 200\n ]\n },\n {\n \"name\": \"MintDecisionTokensEvent\",\n \"discriminator\": [\n 244,\n 132,\n 127,\n 247,\n 11,\n 218,\n 227,\n 77\n ]\n },\n {\n \"name\": \"PriceGetterEvent\",\n \"discriminator\": [\n 154,\n 255,\n 209,\n 101,\n 176,\n 232,\n 166,\n 73\n ]\n },\n {\n \"name\": \"RedeemPositionEvent\",\n \"discriminator\": [\n 229,\n 215,\n 73,\n 152,\n 17,\n 193,\n 28,\n 179\n ]\n },\n {\n \"name\": \"SetFeeEvent\",\n \"discriminator\": [\n 169,\n 3,\n 1,\n 148,\n 197,\n 127,\n 147,\n 69\n ]\n },\n {\n \"name\": \"SettleMarketEvent\",\n \"discriminator\": [\n 220,\n 116,\n 83,\n 65,\n 32,\n 237,\n 196,\n 165\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"UnauthorizedAuthority\",\n \"msg\": \"Only admin or oracle can set market resolvable status\"\n },\n {\n \"code\": 6001,\n \"name\": \"BufferPeriodExpired\",\n \"msg\": \"Buffer period has expired, cannot change resolvable status\"\n },\n {\n \"code\": 6002,\n \"name\": \"TokensAlreadyCreated\",\n \"msg\": \"Tokens already created for this market\"\n },\n {\n \"code\": 6003,\n \"name\": \"InvalidMarketVersion\",\n \"msg\": \"Market must be V2 to use this instruction\"\n },\n {\n \"code\": 6004,\n \"name\": \"ArithmeticOverflow\",\n \"msg\": \"Arithmetic overflow\"\n }\n ],\n \"types\": [\n {\n \"name\": \"BufferPeriodUpdated\",\n \"docs\": [\n \"Event emitted when buffer period is updated\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"buffer_period\",\n \"docs\": [\n \"New buffer period in seconds\"\n ],\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"BurnDecisionTokensEvent\",\n \"docs\": [\n \"Event emitted when decision tokens are burned\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"buyer\",\n \"docs\": [\n \"Public key of the token burner\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"market\",\n \"docs\": [\n \"Public key of the prediction market\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"docs\": [\n \"Amount of decision tokens burned\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"collateral_token_amount\",\n \"docs\": [\n \"Amount of collateral tokens returned to user (after burn fee)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"burn_fee_amount\",\n \"docs\": [\n \"Amount of burn fee sent to admin\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"is_yes\",\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"CreatorRefundEvent\",\n \"docs\": [\n \"Event emitted when creator claims refund\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"market_id\",\n \"docs\": [\n \"Market ID\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"market_address\",\n \"docs\": [\n \"Market address (PDA)\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"docs\": [\n \"Creator public key\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"refund_amount\",\n \"docs\": [\n \"Amount refunded\"\n ],\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"FeeEvent\",\n \"docs\": [\n \"Event emitted when protocol fee is set or updated\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"fee\",\n \"docs\": [\n \"Protocol fee in basis points (10000 = 100%)\"\n ],\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"GlobalConfig\",\n \"docs\": [\n \"Global configuration account that stores protocol-wide settings and parameters\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"admin\",\n \"docs\": [\n \"The admin pubkey that has authority to modify protocol settings\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"oracle_program\",\n \"docs\": [\n \"The oracle program ID used for resolving prediction markets\",\n \"not used right now.\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"fee\",\n \"docs\": [\n \"Protocol fee taken from trades (between 0-10000, representing 0-100%)\",\n \"all the fee goes to the admin, admin can than distribute it to token holders and lp's (via the lp pool program that will be developed later)\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"creator_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"PDA bump seed\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"yes_global_metadata\",\n \"docs\": [\n \"Metadata template for YES tokens\"\n ],\n \"type\": \"string\"\n },\n {\n \"name\": \"no_global_metadata\",\n \"docs\": [\n \"Metadata template for NO tokens\"\n ],\n \"type\": \"string\"\n },\n {\n \"name\": \"collateral_token_mint\",\n \"docs\": [\n \"Mint address of the token used as collateral\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"global_id\",\n \"docs\": [\n \"Incrementing ID used to generate unique market identifiers\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"min_liquidity\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"buffer_period\",\n \"docs\": [\n \"Buffer period in seconds before market can be resolved\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"burn_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"trading_paused\",\n \"docs\": [\n \"Trading pause flag - when true, all trading operations are disabled\"\n ],\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"Market\",\n \"docs\": [\n \"Represents a prediction market where users can trade YES/NO tokens based on an outcome\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"id\",\n \"docs\": [\n \"Unique identifier for this market\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"resolved\",\n \"docs\": [\n \"Whether the market has been resolved with a winning outcome\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"market_reserves\",\n \"docs\": [\n \"Total amount of collateral tokens held in reserve\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"collateral_token\",\n \"docs\": [\n \"Mint address of the token used as collateral\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"winning_token_id\",\n \"docs\": [\n \"The winning token type after market resolution (None, Yes, or No)\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"WinningToken\"\n }\n }\n },\n {\n \"name\": \"yes_token_mint\",\n \"docs\": [\n \"Mint address for YES outcome tokens\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"no_token_mint\",\n \"docs\": [\n \"Mint address for NO outcome tokens\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"yes_token_supply_minted\",\n \"docs\": [\n \"Total supply of YES tokens that have been minted\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"no_token_supply_minted\",\n \"docs\": [\n \"Total supply of NO tokens that have been minted\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"creator\",\n \"docs\": [\n \"Public key of the market creator\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator_fee_treasury\",\n \"docs\": [\n \"Public key of the creator's fee treasury\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"docs\": [\n \"The prediction market question/statement\"\n ],\n \"type\": \"string\"\n },\n {\n \"name\": \"initial_liquidity\",\n \"docs\": [\n \"Initial liquidity provided to the market\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"end_time\",\n \"docs\": [\n \"Unix timestamp when the market ends\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"docs\": [\n \"PDA bump seed\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"creation_time\",\n \"docs\": [\n \"Unix timestamp when the market was created\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"resolvable\",\n \"docs\": [\n \"Whether the market is resolvable (set by admin/oracle)\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"force_resolve\",\n \"docs\": [\n \"Whether the market has been force resolved (allows immediate refunds)\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"MarketCreatedEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"market\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\"\n },\n {\n \"name\": \"initial_liquidity\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"yes_token_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"no_token_mint\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"MarketResolvableUpdated\",\n \"docs\": [\n \"Event emitted when market resolvable status is updated\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"market_id\",\n \"docs\": [\n \"Market ID\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"resolvable\",\n \"docs\": [\n \"New resolvable status\"\n ],\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"MarketV2CreatedEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"market\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"market_id\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"creator\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"question\",\n \"type\": \"string\"\n },\n {\n \"name\": \"initial_liquidity\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"end_time\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"MarketV2ResolvableUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"market_id\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"market\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"resolvable\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"tokens_created\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"yes_token_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"no_token_mint\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"MintDecisionTokensEvent\",\n \"docs\": [\n \"Event emitted when decision tokens are minted\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"buyer\",\n \"docs\": [\n \"Public key of the token buyer\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"market\",\n \"docs\": [\n \"Public key of the prediction market\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"docs\": [\n \"Amount of collateral tokens provided\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokens_minted\",\n \"docs\": [\n \"Amount of decision tokens minted\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"buy_yes_token\",\n \"docs\": [\n \"Whether YES tokens were bought (true) or NO tokens (false)\"\n ],\n \"type\": \"bool\"\n },\n {\n \"name\": \"creator_fee\",\n \"docs\": [\n \"Amount of creator fee\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"admin_fee\",\n \"docs\": [\n \"Amount of admin fee\"\n ],\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"PriceGetterEvent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"yes_price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"no_price\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"RedeemPositionEvent\",\n \"docs\": [\n \"Event emitted when position is redeemed\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"redeemer\",\n \"docs\": [\n \"Public key of the position redeemer\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"market\",\n \"docs\": [\n \"Public key of the prediction market\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"winning_token_amount\",\n \"docs\": [\n \"Amount of winning tokens redeemed\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"collateral_redeemed\",\n \"docs\": [\n \"Amount of collateral tokens received\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"winning_token_type\",\n \"docs\": [\n \"Type of winning token (YES or NO)\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"WinningToken\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"SetFeeEvent\",\n \"docs\": [\n \"Event emitted when the protocol fee is updated\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"fee\",\n \"docs\": [\n \"The new fee value (between 0-10000, representing 0-100%)\"\n ],\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"SettleMarketEvent\",\n \"docs\": [\n \"Event emitted when market is settled\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"market\",\n \"docs\": [\n \"Public key of the prediction market\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"yes_winner\",\n \"docs\": [\n \"Whether YES tokens won (true) or NO tokens (false)\"\n ],\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"WinningToken\",\n \"docs\": [\n \"Represents the possible winning token types for a market\"\n ],\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"None\"\n },\n {\n \"name\": \"Yes\"\n },\n {\n \"name\": \"No\"\n }\n ]\n }\n }\n ]\n}","import { PublicKey } from \"@solana/web3.js\";\nimport { getAssociatedTokenAddressSync, TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID } from \"@solana/spl-token\";\n\nexport function deriveMarketPda(baseMint: PublicKey, quoteMint: PublicKey, programId: PublicKey) {\n return PublicKey.findProgramAddressSync([\n Buffer.from(\"market\"),\n baseMint.toBuffer(),\n quoteMint.toBuffer(),\n ], programId);\n}\n\nexport function derivePositionPda(market: PublicKey, owner: PublicKey, programId: PublicKey) {\n return PublicKey.findProgramAddressSync([\n Buffer.from(\"position\"),\n market.toBuffer(),\n owner.toBuffer(),\n ], programId);\n}\n\n// From IDL: global_config PDA seed: [\"global_config\"]\nexport function deriveGlobalConfigPda(programId: PublicKey) {\n return PublicKey.findProgramAddressSync([Buffer.from(\"global_config\")], programId);\n}\n\n// From IDL: creator_fee_treasury PDA seed: [\"creator_fee_treasury\", creator]\nexport function deriveCreatorFeeTreasuryPda(creator: PublicKey, programId: PublicKey) {\n return PublicKey.findProgramAddressSync([Buffer.from(\"creator_fee_treasury\"), creator.toBuffer()], programId);\n}\n\n// Many accounts in the IDL are ATAs (buyer/creator/admin/market vault ATAs)\nexport function deriveAta(owner: PublicKey, mint: PublicKey, allowOwnerOffCurve = false, tokenProgramId: PublicKey = TOKEN_PROGRAM_ID, ataProgramId: PublicKey = ASSOCIATED_TOKEN_PROGRAM_ID) {\n return getAssociatedTokenAddressSync(mint, owner, allowOwnerOffCurve, tokenProgramId, ataProgramId);\n}\n\n// Market PDA per IDL derives from yes/no mints as seeds with \"market\"\nexport function deriveMarketPdaFromMints(yesMint: PublicKey, noMint: PublicKey, programId: PublicKey) {\n return PublicKey.findProgramAddressSync([\n Buffer.from(\"market\"),\n yesMint.toBuffer(),\n noMint.toBuffer(),\n ], programId);\n}\n\n// Helpers to derive YES/NO token mints based on global id (u64 LE)\nfunction u64LeBuffer(n: bigint) {\n const buf = Buffer.alloc(8);\n let x = n;\n for (let i = 0; i < 8; i++) { buf[i] = Number(x & 0xffn); x >>= 8n; }\n return buf;\n}\n\nexport function deriveYesTokenMint(globalId: bigint, programId: PublicKey) {\n return PublicKey.findProgramAddressSync([\n Buffer.from(\"yes_token\"),\n u64LeBuffer(globalId),\n ], programId);\n}\n\nexport function deriveNoTokenMint(globalId: bigint, programId: PublicKey) {\n return PublicKey.findProgramAddressSync([\n Buffer.from(\"no_token\"),\n u64LeBuffer(globalId),\n ], programId);\n}\n\n// Metaplex token metadata PDA: [\"metadata\", metadata_program_id, mint]\nexport function deriveTokenMetadataPda(mint: PublicKey, metadataProgramId: PublicKey) {\n return PublicKey.findProgramAddressSync([\n Buffer.from(\"metadata\"),\n metadataProgramId.toBuffer(),\n mint.toBuffer(),\n ], metadataProgramId);\n}\n","import { PublicKey, SystemProgram } from \"@solana/web3.js\";\nimport { z } from \"zod\";\nimport { Client } from \"../platform/client\";\nimport { buildCreateMarketIxIdl, type CreateMarketArgs } from \"../instructions/idl_builders\";\nimport { decodeAccount } from \"../idl\";\nimport type { AccountsMap } from \"../idl\";\nimport { buildAndSendV0 } from \"../platform/tx\";\nimport type { SignerLike } from \"../platform/wallet\";\nimport {\n deriveGlobalConfigPda,\n deriveAta,\n deriveCreatorFeeTreasuryPda,\n} from \"../instructions/pdas\";\nimport { TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID } from \"@solana/spl-token\";\n\nconst DEBUG = process.env.PNP_DEBUG === '1';\n\n// Default collateral mint used when none is provided by caller\n// Using USDC on Mainnet: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\nconst DEFAULT_COLLATERAL_MINT = new PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v');\n\nconst CreateMarketSchema = z.object({\n baseMint: z.instanceof(PublicKey).optional(),\n quoteMint: z.instanceof(PublicKey).optional(),\n question: z.string().optional(),\n initialLiquidity: z.bigint().optional(),\n endTime: z.bigint().optional(),\n tickSize: z.bigint().optional(),\n lotSize: z.bigint().optional(),\n});\n\nexport class MarketModule {\n constructor(private readonly client: Client, private readonly signer: SignerLike) {}\n\n async createMarket(params: z.infer<typeof CreateMarketSchema>) {\n const p = CreateMarketSchema.parse(params);\n if (!p.question || !p.initialLiquidity || !p.endTime) {\n throw new Error(\"createMarket now requires question, initialLiquidity, and endTime. The legacy v1 path has been removed.\");\n }\n const collateral = p.baseMint ?? DEFAULT_COLLATERAL_MINT;\n return this.createMarketDerived({\n question: p.question,\n initialLiquidity: p.initialLiquidity,\n endTime: p.endTime,\n collateralMint: collateral,\n });\n }\n\n // IDL-backed create market allowing explicit accounts from the pnp.exchange IDL\n async createMarketIdl(accounts: AccountsMap, args: CreateMarketArgs) {\n const ix = buildCreateMarketIxIdl(accounts, args);\n const res = await buildAndSendV0(this.client, this.signer, [ix], {\n computeUnitLimit: 800000,\n });\n return { signature: res.signature };\n }\n\n // High-level helper: derive all accounts and create market (V2)\n async createMarketDerived(params: {\n question: string;\n initialLiquidity: bigint;\n endTime: bigint;\n collateralMint?: PublicKey;\n }) {\n const { question, initialLiquidity, endTime } = params;\n const collateralMint = params.collateralMint ?? DEFAULT_COLLATERAL_MINT;\n\n // 1) global_config PDA\n const [globalConfig] = deriveGlobalConfigPda(this.client.programId);\n const ai = await this.client.connection.getAccountInfo(globalConfig, this.client.commitment);\n if (!ai) throw new Error(\"global_config not initialized on-chain\");\n\n // 2) decode to read global_id (u64) and convert to bigint\n const globalCfg = decodeAccount<any>(\"GlobalConfig\", ai.data);\n if (DEBUG) {\n try {\n console.log('GlobalConfig account data:', JSON.stringify(globalCfg, null, 2));\n } catch {}\n }\n \n // Extract globalId from the correct field in the structure\n // The exact field name might be 'globalId', 'global_id', or another property\n let globalId: bigint;\n if (globalCfg.globalId) {\n globalId = BigInt(globalCfg.globalId.toString());\n } else if (globalCfg.global_id) {\n globalId = BigInt(globalCfg.global_id.toString());\n } else {\n // Find the field containing the global ID by inspecting all properties\n const keys = Object.keys(globalCfg);\n if (DEBUG) console.log('Available keys in GlobalConfig:', keys);\n \n // Try to find a property that looks like an ID (either a BN or a number)\n const idField = keys.find(k => \n typeof (globalCfg as any)[k]?.toNumber === 'function' ||\n typeof (globalCfg as any)[k]?.toString === 'function' ||\n typeof (globalCfg as any)[k] === 'number'\n );\n \n if (idField) {\n if (DEBUG) console.log(`Using ${idField} as the global ID field`);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n globalId = BigInt((globalCfg as any)[idField].toString());\n } else {\n throw new Error(`Could not find global ID in GlobalConfig account. Available fields: ${keys.join(', ')}`);\n }\n }\n\n // 3) Derive V2 market PDA: [\"market-v2\", global_id (le u64)]\n const gidLe = Buffer.alloc(8);\n gidLe.writeBigUInt64LE(globalId);\n const [market] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"market-v2\"), gidLe],\n this.client.programId\n );\n\n // 4) ATAs (creator and market reserve)\n const payer = this.signer.publicKey;\n const creator = payer; // Set creator same as payer\n const payerCollateralTokenAccount = deriveAta(payer, collateralMint);\n const marketReserveVault = deriveAta(market, collateralMint, true);\n\n // 5) Derive creator fee treasury\n const [creatorFeeTreasury] = deriveCreatorFeeTreasuryPda(creator, this.client.programId);\n \n // 6) assemble accounts per IDL (V2) - NOTE: snake_case to match IDL\n const accounts: AccountsMap & Record<string, PublicKey> = {\n payer,\n creator,\n market,\n global_config: globalConfig,\n collateral_token_mint: collateralMint,\n payer_collateral_token_account: payerCollateralTokenAccount,\n market_reserve_vault: marketReserveVault,\n creator_fee_treasury: creatorFeeTreasury,\n token_program: TOKEN_PROGRAM_ID,\n associated_token_program: ASSOCIATED_TOKEN_PROGRAM_ID,\n system_program: SystemProgram.programId,\n };\n\n // 7) build ix and send (IDL builder selects create_market_v2)\n const ix = buildCreateMarketIxIdl(accounts, {\n question,\n initial_liquidity: initialLiquidity,\n end_time: endTime,\n creator, // Pass the creator explicitly\n });\n\n const res = await buildAndSendV0(this.client, this.signer, [ix], {\n computeUnitLimit: 400_000,\n });\n\n return {\n signature: res.signature,\n market,\n };\n }\n\n // ===== Fetchers =====\n async fetchGlobalConfig() {\n const [globalConfig] = deriveGlobalConfigPda(this.client.programId);\n const ai = await this.client.connection.getAccountInfo(globalConfig, this.client.commitment);\n if (!ai) throw new Error(\"global_config not found\");\n const acc = decodeAccount<any>(\"GlobalConfig\", ai.data);\n return { publicKey: globalConfig, account: acc };\n }\n\n async fetchMarket(market: PublicKey) {\n const ai = await this.client.connection.getAccountInfo(market, this.client.commitment);\n if (!ai) throw new Error(\"market account not found\");\n const acc = decodeAccount<any>(\"Market\", ai.data);\n return { publicKey: market, account: acc };\n }\n}\n","import type { PublicKey, TransactionInstruction } from \"@solana/web3.js\";\nimport BN from \"bn.js\";\nimport { buildIdlIx, type AccountsMap } from \"../idl\";\n\nconst DEBUG = process.env.PNP_DEBUG === '1';\n\nexport type CreateMarketArgs = {\n question: string;\n initial_liquidity: bigint;\n end_time: bigint;\n creator?: PublicKey; // Optional, will default to the payer if not provided\n};\n\nexport function buildCreateMarketIxIdl(\n accounts: AccountsMap,\n args: CreateMarketArgs\n): TransactionInstruction {\n if (DEBUG) {\n console.log('Building create_market_v2 instruction with args:', JSON.stringify({\n question: args.question,\n initial_liquidity: args.initial_liquidity.toString(),\n end_time: args.end_time.toString(),\n creator: args.creator?.toBase58() || accounts.creator?.toBase58() || accounts.payer?.toBase58()\n }));\n console.log('Accounts being passed to create_market_v2:');\n Object.entries(accounts).forEach(([name, pubkey]) => {\n console.log(` ${name}: ${pubkey.toString()}`);\n });\n }\n \n // Ensure data types match IDL exactly\n // The Anchor IDL expects: [string, u64, u64] for [question, initial_liquidity, end_time]\n const question = args.question;\n \n // For u64 types, we must use BN from @coral-xyz/anchor for proper serialization\n // Convert bigint to string first to avoid precision issues\n const initial_liquidity = new BN(args.initial_liquidity.toString());\n const end_time = new BN(args.end_time.toString());\n \n if (DEBUG) {\n console.log('Prepared arguments for IDL encoding:');\n console.log(` question: ${question} (type: ${typeof question})`);\n console.log(` initial_liquidity: ${initial_liquidity.toString()} (type: ${typeof initial_liquidity})`);\n console.log(` end_time: ${end_time.toString()} (type: ${typeof end_time})`);\n }\n \n // Get the creator from args, or from accounts.creator, or fallback to accounts.payer\n const creator = args.creator || accounts.creator || accounts.payer;\n if (!creator) {\n throw new Error(\"Creator is required for create_market_v2\");\n }\n \n if (DEBUG) {\n console.log(` creator: ${creator.toBase58()} (type: ${typeof creator})`);\n }\n \n // Pass as an array exactly matching the IDL order: [question, initial_liquidity, end_time, creator]\n return buildIdlIx(\"create_market_v2\", accounts, [question, initial_liquidity, end_time, creator]);\n}\n\nexport type MintDecisionTokensArgs = {\n amount: bigint;\n buy_yes_token: boolean;\n minimum_out: bigint;\n};\n\nexport function buildMintDecisionTokensIx(\n accounts: AccountsMap,\n args: MintDecisionTokensArgs\n): TransactionInstruction {\n // Anchor expects u64 as BN\n const amount = new BN(args.amount.toString());\n const minimum_out = new BN(args.minimum_out.toString());\n try {\n if (DEBUG) {\n console.log(\"[buildMintDecisionTokensIx] amount:\", args.amount.toString?.() ?? String(args.amount));\n console.log(\"[buildMintDecisionTokensIx] minimum_out:\", args.minimum_out.toString?.() ?? String(args.minimum_out));\n // Log BN forms actually passed down\n console.log(\"[buildMintDecisionTokensIx] BN amount:\", amount.toString(10));\n console.log(\"[buildMintDecisionTokensIx] BN minimum_out:\", minimum_out.toString(10));\n }\n } catch {}\n return buildIdlIx(\"mint_decision_tokens\", accounts, [amount, args.buy_yes_token, minimum_out]);\n}\n\nexport type BurnDecisionTokensArgs = {\n amount: bigint;\n burn_yes_token: boolean;\n};\n\nexport function buildBurnDecisionTokensIx(\n accounts: AccountsMap,\n args: BurnDecisionTokensArgs\n): TransactionInstruction {\n const amount = new BN(args.amount.toString());\n try {\n if (DEBUG) {\n console.log(\"[buildBurnDecisionTokensIx] amount:\", args.amount.toString?.() ?? String(args.amount));\n console.log(\"[buildBurnDecisionTokensIx] BN amount:\", amount.toString(10));\n }\n } catch {}\n return buildIdlIx(\"burn_decision_tokens\", accounts, [amount, args.burn_yes_token]);\n}\n\nexport function buildClaimCreatorFeeIx(accounts: AccountsMap): TransactionInstruction {\n return buildIdlIx(\"claim_creator_fee\", accounts, []);\n}\n\nexport function buildCreatorRefundIx(accounts: AccountsMap): TransactionInstruction {\n return buildIdlIx(\"creator_refund\", accounts, []);\n}\n\nexport function buildCreatorRefundV2Ix(accounts: AccountsMap): TransactionInstruction {\n return buildIdlIx(\"creator_refund_v2\", accounts, []);\n}\n\nexport function buildRedeemPositionV2Ix(accounts: AccountsMap): TransactionInstruction {\n return buildIdlIx(\"redeem_position_v2\", accounts, []);\n}\n","import {\n AddressLookupTableAccount,\n ComputeBudgetProgram,\n TransactionInstruction,\n PublicKey,\n SendOptions,\n SystemProgram,\n TransactionMessage,\n VersionedTransaction,\n} from \"@solana/web3.js\";\nimport { Client } from \"./client\";\nimport { SignerLike } from \"./wallet\";\n\nexport interface SendTxOptions extends SendOptions {\n computeUnitLimit?: number;\n computeUnitPriceMicroLamports?: number;\n addressLookupTables?: AddressLookupTableAccount[];\n simulate?: boolean;\n}\n\nexport async function buildAndSendV0(\n client: Client,\n signer: SignerLike,\n ixs: readonly TransactionInstruction[],\n opts: SendTxOptions = {}\n) {\n const latest = await client.connection.getLatestBlockhash({ commitment: client.commitment });\n\n const preIxs = [] as any[];\n if (opts.computeUnitLimit) preIxs.push(ComputeBudgetProgram.setComputeUnitLimit({ units: opts.computeUnitLimit }));\n if (opts.computeUnitPriceMicroLamports) preIxs.push(ComputeBudgetProgram.setComputeUnitPrice({ microLamports: opts.computeUnitPriceMicroLamports }));\n\n const msg = new TransactionMessage({\n payerKey: signer.publicKey,\n recentBlockhash: latest.blockhash,\n instructions: [...preIxs, ...ixs],\n }).compileToV0Message(opts.addressLookupTables);\n\n const tx = new VersionedTransaction(msg);\n await signer.signTransaction(tx);\n\n if (opts.simulate) {\n const sim = await client.connection.simulateTransaction(tx, { sigVerify: true });\n return { simulated: sim, signature: undefined as string | undefined };\n }\n\n const sig = await client.connection.sendTransaction(tx, { skipPreflight: false, maxRetries: 3, preflightCommitment: client.commitment });\n return { signature: sig };\n}\n","import { PublicKey, SystemProgram, TransactionInstruction, SendTransactionError } from \"@solana/web3.js\";\nimport { z } from \"zod\";\nimport { Client } from \"../platform/client\";\nimport { buildTradeIx } from \"../instructions/trading\";\nimport { buildMintDecisionTokensIx, buildBurnDecisionTokensIx, type MintDecisionTokensArgs, type BurnDecisionTokensArgs } from \"../instructions/idl_builders\";\nimport type { AccountsMap } from \"../idl\";\nimport { decodeAccount } from \"../idl\";\nimport { buildAndSendV0 } from \"../platform/tx\";\nimport type { SignerLike } from \"../platform/wallet\";\nimport { deriveAta, deriveGlobalConfigPda } from \"../instructions/pdas\";\nimport { TOKEN_PROGRAM_ID, TOKEN_2022_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID, getAccount, getAssociatedTokenAddressSync, createAssociatedTokenAccountInstruction, getMint } from \"@solana/spl-token\";\n\nconst TradeSchema = z.object({\n market: z.instanceof(PublicKey),\n side: z.union([z.literal(\"buy\"), z.literal(\"sell\")]),\n price: z.bigint(),\n size: z.bigint(),\n});\n\nexport class TradingModule {\n constructor(private readonly client: Client, private readonly signer: SignerLike) {}\n\n async trade(params: z.infer<typeof TradeSchema>) {\n const p = TradeSchema.parse(params);\n const ix = buildTradeIx({\n trader: this.signer.publicKey,\n market: p.market,\n side: p.side,\n price: p.price,\n size: p.size,\n });\n\n const res = await buildAndSendV0(this.client, this.signer, [ix], {\n computeUnitLimit: 800000,\n });\n return { signature: res.signature };\n }\n\n // IDL-backed mint of decision tokens (YES/NO) using explicit accounts per IDL\n async mintDecisionTokens(accounts: AccountsMap, args: MintDecisionTokensArgs) {\n const ix = buildMintDecisionTokensIx(accounts, args);\n const res = await buildAndSendV0(this.client, this.signer, [ix], {\n computeUnitLimit: 800000,\n });\n return { signature: res.signature };\n }\n\n // IDL-backed burn of decision tokens for collateral redemption\n async burnDecisionTokens(accounts: AccountsMap, args: BurnDecisionTokensArgs) {\n const ix = buildBurnDecisionTokensIx(accounts, args);\n const res = await buildAndSendV0(this.client, this.signer, [ix], {\n computeUnitLimit: 800000,\n });\n return { signature: res.signature };\n }\n\n // ===== Derived helpers =====\n async mintDecisionTokensDerived(params: { market: PublicKey; amount: bigint; buyYesToken: boolean; minimumOut: bigint }) {\n const { market, amount, buyYesToken, minimumOut } = params;\n try {\n console.log(\"[mintDecisionTokensDerived] amount:\", amount.toString(), \"buyYesToken:\", buyYesToken, \"minimumOut:\", minimumOut.toString());\n } catch {}\n if (amount <= 0n) throw new Error(\"amount must be > 0\");\n const buyer = this.signer.publicKey;\n\n // Fetch and decode Market to get mints, creator, collateral\n const mai = await this.client.connection.getAccountInfo(market, this.client.commitment);\n if (!mai) throw new Error(\"market account not found\");\n const m = decodeAccount<any>(\"Market\", mai.data);\n const yesTokenMint: PublicKey = new PublicKey(m.yesTokenMint ?? m.yes_token_mint);\n const noTokenMint: PublicKey = new PublicKey(m.noTokenMint ?? m.no_token_mint);\n const collateralMint: PublicKey = new PublicKey(m.collateralToken ?? m.collateral_token);\n const marketCreator: PublicKey = new PublicKey(m.creator ?? m.market_creator ?? m.creator);\n const creatorFeeTreasury: PublicKey = new PublicKey(m.creatorFeeTreasury ?? m.creator_fee_treasury);\n // Preflight: validate market reserves and token supplies to avoid on-chain TokenCalculationError (6002)\n try {\n // Normalize possibly different field casings/types\n const reservesRaw: any = (m as any).marketReserves ?? (m as any).market_reserves;\n const yesMintedRaw: any = (m as any).yesTokenSupplyMinted ?? (m as any).yes_token_supply_minted;\n const noMintedRaw: any = (m as any).noTokenSupplyMinted ?? (m as any).no_token_supply_minted;\n\n const toBigInt = (v: any): bigint | null => {\n if (v === undefined || v === null) return null;\n if (typeof v === \"bigint\") return v;\n if (typeof v === \"number\") return BigInt(v);\n if (typeof v === \"string\") {\n // Could be hex or decimal\n const isHex = /^[0-9a-fA-F]+$/.test(v);\n try { return isHex ? BigInt(\"0x\" + v) : BigInt(v); } catch { return null; }\n }\n return null;\n };\n\n const reserves = toBigInt(reservesRaw);\n const yesMinted = toBigInt(yesMintedRaw);\n const noMinted = toBigInt(noMintedRaw);\n\n if (reserves !== null && reserves === 0n) {\n throw new Error(\"Market has zero reserves; cannot price trade. Recreate/seed the market with initial liquidity.\");\n }\n if (yesMinted !== null && noMinted !== null) {\n // If both are zero, AMM may not be initialized for pricing\n if (yesMinted === 0n && noMinted === 0n) {\n throw new Error(\"Market token supplies are uninitialized (YES=0, NO=0); cannot calculate mint output. Seed market first.\");\n }\n }\n } catch (prefErr) {\n if (prefErr instanceof Error) throw prefErr;\n }\n\n // Fetch GlobalConfig to get admin\n const [globalConfig] = deriveGlobalConfigPda(this.client.programId);\n const gai = await this.client.connection.getAccountInfo(globalConfig, this.client.commitment);\n if (!gai) throw new Error(\"global_config not initialized\");\n const g = decodeAccount<any>(\"GlobalConfig\", gai.data);\n const admin: PublicKey = new PublicKey(g.admin);\n\n // Determine a single token program to use (program expects one). Use YES mint owner as source of truth.\n const [yesAi, noAi, colAi] = await Promise.all([\n this.client.connection.getAccountInfo(yesTokenMint, this.client.commitment),\n this.client.connection.getAccountInfo(noTokenMint, this.client.commitment),\n this.client.connection.getAccountInfo(collateralMint, this.client.commitment),\n ]);\n if (!yesAi || !noAi || !colAi) throw new Error(\"one or more mint accounts not found\");\n const tokenProgramId = yesAi.owner.equals(TOKEN_2022_PROGRAM_ID) ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID;\n const ataProgramId = ASSOCIATED_TOKEN_PROGRAM_ID;\n // Assert all mints share same owner\n const owners = [yesAi.owner.toBase58(), noAi.owner.toBase58(), colAi.owner.toBase58()];\n if (!(yesAi.owner.equals(noAi.owner) && yesAi.owner.equals(colAi.owner))) {\n throw new Error(`Market mint program mismatch. Owners: YES=${owners[0]}, NO=${owners[1]}, COLLATERAL=${owners[2]}. All mints must share the same token program.`);\n }\n // Validate collateral mint via selected program\n await getMint(this.client.connection, collateralMint, this.client.commitment, tokenProgramId);\n\n // Derive ATAs\n const buyerCollateralTokenAccount = deriveAta(buyer, collateralMint, false, tokenProgramId, ataProgramId);\n const adminCollateralTokenAccount = deriveAta(admin, collateralMint, false, tokenProgramId, ataProgramId);\n const marketReserveVault = deriveAta(market, collateralMint, true, tokenProgramId, ataProgramId);\n // Buyer YES/NO token accounts (mirror working JS: create ATAs explicitly for buyer) under detected token program\n const buyerYesTokenAccount = deriveAta(buyer, yesTokenMint, false, tokenProgramId, ataProgramId);\n const buyerNoTokenAccount = deriveAta(buyer, noTokenMint, false, tokenProgramId, ataProgramId);\n\n // Pre-instructions: ensure required ATAs exist (we can pay for them)\n const preIxs: TransactionInstruction[] = [];\n const maybeCreateAta = async (owner: PublicKey, mint: PublicKey, ata: PublicKey, useTokenProgram: PublicKey = tokenProgramId, useAtaProgram: PublicKey = ataProgramId) => {\n const info = await this.client.connection.getAccountInfo(ata, this.client.commitment);\n if (!info) {\n preIxs.push(\n createAssociatedTokenAccountInstruction(\n this.signer.publicKey, // payer\n ata,\n owner,\n mint,\n useTokenProgram,\n useAtaProgram\n )\n );\n }\n };\n\n await maybeCreateAta(buyer, collateralMint, buyerCollateralTokenAccount);\n await maybeCreateAta(admin, collateralMint, adminCollateralTokenAccount);\n await maybeCreateAta(market, collateralMint, marketReserveVault);\n // Ensure buyer decision token ATAs under the same token program\n await maybeCreateAta(buyer, yesTokenMint, buyerYesTokenAccount, tokenProgramId, ataProgramId);\n await maybeCreateAta(buyer, noTokenMint, buyerNoTokenAccount, tokenProgramId, ataProgramId);\n\n // Check buyer collateral balance >= amount\n const buyerCollateralInfo = await this.client.connection.getTokenAccountBalance(buyerCollateralTokenAccount).catch(() => null as any);\n if (!buyerCollateralInfo) {\n throw new Error(\"Buyer collateral token account missing or unreadable\");\n }\n const buyerCollateralAmount = BigInt(buyerCollateralInfo.value.amount || \"0\");\n if (buyerCollateralAmount < amount) {\n throw new Error(`Insufficient collateral balance: have ${buyerCollateralInfo.value.uiAmountString}, need ${(Number(amount)/1_000_000).toFixed(6)}`);\n }\n\n const accounts: AccountsMap & Record<string, PublicKey> = {\n buyer,\n admin,\n market_creator: marketCreator,\n market,\n global_config: globalConfig,\n yes_token_mint: yesTokenMint,\n no_token_mint: noTokenMint,\n buyer_yes_token_account: buyerYesTokenAccount,\n buyer_no_token_account: buyerNoTokenAccount,\n market_reserve_vault: marketReserveVault,\n collateral_token_mint: collateralMint,\n buyer_collateral_token_account: buyerCollateralTokenAccount,\n admin_collateral_token_account: adminCollateralTokenAccount,\n creator_fee_treasury: creatorFeeTreasury,\n token_program: tokenProgramId,\n associated_token_program: ataProgramId,\n system_program: SystemProgram.programId,\n } as any;\n\n const ix = buildMintDecisionTokensIx(accounts, {\n amount,\n buy_yes_token: buyYesToken,\n minimum_out: minimumOut,\n });\n const ixs = [...preIxs, ix];\n const res = await buildAndSendV0(this.client, this.signer, ixs, { computeUnitLimit: 600_000 });\n return { signature: res.signature };\n }\n\n async burnDecisionTokensDerived(params: { market: PublicKey; amount: bigint; burnYesToken: boolean }) {\n const { market, amount, burnYesToken } = params;\n const buyer = this.signer.publicKey;\n\n // Fetch and decode Market\n const mai = await this.client.connection.getAccountInfo(market, this.client.commitment);\n if (!mai) throw new Error(\"market account not found\");\n const m = decodeAccount<any>(\"Market\", mai.data);\n const yesTokenMint: PublicKey = new PublicKey(m.yesTokenMint ?? m.yes_token_mint);\n const noTokenMint: PublicKey = new PublicKey(m.noTokenMint ?? m.no_token_mint);\n const collateralMint: PublicKey = new PublicKey(m.collateralToken ?? m.collateral_token);\n const marketCreator: PublicKey = new PublicKey(m.creator ?? m.market_creator ?? m.creator);\n const creatorFeeTreasury: PublicKey = new PublicKey(m.creatorFeeTreasury ?? m.creator_fee_treasury);\n\n // GlobalConfig for admin\n const [globalConfig] = deriveGlobalConfigPda(this.client.programId);\n const gai = await this.client.connection.getAccountInfo(globalConfig, this.client.commitment);\n if (!gai) throw new Error(\"global_config not initialized\");\n const g = decodeAccount<any>(\"GlobalConfig\", gai.data);\n const admin: PublicKey = new PublicKey(g.admin);\n\n // Determine token program (must be consistent across mints)\n const [yesAi, noAi, colAi] = await Promise.all([\n this.client.connection.getAccountInfo(yesTokenMint, this.client.commitment),\n this.client.connection.getAccountInfo(noTokenMint, this.client.commitment),\n this.client.connection.getAccountInfo(collateralMint, this.client.commitment),\n ]);\n if (!yesAi || !noAi || !colAi) throw new Error(\"one or more mint accounts not found\");\n const tokenProgramId = yesAi.owner.equals(TOKEN_2022_PROGRAM_ID) ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID;\n const ataProgramId = ASSOCIATED_TOKEN_PROGRAM_ID;\n if (!(yesAi.owner.equals(noAi.owner) && yesAi.owner.equals(colAi.owner))) {\n const owners = [yesAi.owner.toBase58(), noAi.owner.toBase58(), colAi.owner.toBase58()];\n throw new Error(`Market mint program mismatch. Owners: YES=${owners[0]}, NO=${owners[1]}, COLLATERAL=${owners[2]}. All mints must share the same token program.`);\n }\n\n // Derive ATAs with the detected token program\n const buyerYesTokenAccount = deriveAta(buyer, yesTokenMint, false, tokenProgramId, ataProgramId);\n const buyerNoTokenAccount = deriveAta(buyer, noTokenMint, false, tokenProgramId, ataProgramId);\n const buyerCollateralTokenAccount = deriveAta(buyer, collateralMint, false, tokenProgramId, ataProgramId);\n const adminCollateralTokenAccount = deriveAta(admin, collateralMint, false, tokenProgramId, ataProgramId);\n const marketReserveVault = deriveAta(market, collateralMint, true, tokenProgramId, ataProgramId);\n\n const accounts: AccountsMap & Record<string, PublicKey> = {\n buyer,\n admin,\n market_creator: marketCreator,\n market,\n global_config: globalConfig,\n yes_token_mint: yesTokenMint,\n no_token_mint: noTokenMint,\n buyer_yes_token_account: buyerYesTokenAccount,\n buyer_no_token_account: buyerNoTokenAccount,\n market_reserve_vault: marketReserveVault,\n collateral_token_mint: collateralMint,\n buyer_collateral_token_account: buyerCollateralTokenAccount,\n admin_collateral_token_account: adminCollateralTokenAccount,\n creator_fee_treasury: creatorFeeTreasury,\n token_program: tokenProgramId,\n associated_token_program: ataProgramId,\n system_program: SystemProgram.programId,\n } as any;\n\n const ix = buildBurnDecisionTokensIx(accounts, {\n amount,\n burn_yes_token: burnYesToken,\n });\n const res = await buildAndSendV0(this.client, this.signer, [ix], { computeUnitLimit: 600_000 });\n return { signature: res.signature };\n }\n\n // ===== High-level helpers mirrored from working Node script =====\n async getMarketInfo(market: PublicKey) {\n const mai = await this.client.connection.getAccountInfo(market, this.client.commitment);\n if (!mai) throw new Error(\"market account not found\");\n const m = decodeAccount<any>(\"Market\", mai.data);\n return {\n address: market,\n question: m.question,\n id: m.id ?? m.market_id,\n creator: new PublicKey(m.creator ?? m.market_creator ?? m.creator),\n initialLiquidity: m.initialLiquidity ?? m.initial_liquidity,\n marketReserves: m.marketReserves ?? m.market_reserves,\n endTime: m.endTime ?? m.end_time,\n resolvable: m.resolvable,\n resolved: m.resolved,\n winningTokenId: m.winningTokenId ?? m.winning_token_id,\n yesTokenMint: new PublicKey(m.yesTokenMint ?? m.yes_token_mint),\n noTokenMint: new PublicKey(m.noTokenMint ?? m.no_token_mint),\n collateralToken: new PublicKey(m.collateralToken ?? m.collateral_token),\n yesTokenSupplyMinted: m.yesTokenSupplyMinted ?? m.yes_token_supply_minted,\n noTokenSupplyMinted: m.noTokenSupplyMinted ?? m.no_token_supply_minted,\n };\n }\n\n async getBalances(market: PublicKey) {\n const info = await this.getMarketInfo(market);\n const owner = this.signer.publicKey;\n const collateralAta = deriveAta(owner, info.collateralToken);\n const yesAta = deriveAta(owner, info.yesTokenMint);\n const noAta = deriveAta(owner, info.noTokenMint);\n\n const [coll, yes, no] = await Promise.all([\n this.client.connection.getTokenAccountBalance(collateralAta).catch(() => null as any),\n this.client.connection.getTokenAccountBalance(yesAta).catch(() => null as any),\n this.client.connection.getTokenAccountBalance(noAta).catch(() => null as any),\n ]);\n\n return {\n collateral: {\n account: collateralAta,\n amount: coll?.value?.amount ?? \"0\",\n uiAmount: coll?.value?.uiAmount ?? 0,\n uiAmountString: coll?.value?.uiAmountString ?? \"0\",\n },\n yes: {\n account: yesAta,\n amount: yes?.value?.amount ?? \"0\",\n uiAmount: yes?.value?.uiAmount ?? 0,\n uiAmountString: yes?.value?.uiAmountString ?? \"0\",\n },\n no: {\n account: noAta,\n amount: no?.value?.amount ?? \"0\",\n uiAmount: no?.value?.uiAmount ?? 0,\n uiAmountString: no?.value?.uiAmountString ?? \"0\",\n },\n };\n }\n\n async getPrices(market: PublicKey) {\n const info = await this.getMarketInfo(market);\n const yes = Number(info.yesTokenSupplyMinted ?? 0n);\n const no = Number(info.noTokenSupplyMinted ?? 0n);\n const total = yes + no;\n const yesShare = total > 0 ? yes / total : 0.5;\n const noShare = total > 0 ? no / total : 0.5;\n return { yesMinted: yes, noMinted: no, totalMinted: total, yesShare, noShare };\n }\n\n async buyTokensUsdc(params: { market: PublicKey; buyYesToken: boolean; amountUsdc: number; minimumOut?: bigint }) {\n const { market, buyYesToken } = params;\n if (!Number.isFinite(params.amountUsdc) || params.amountUsdc <= 0) throw new Error(\"Invalid amountUsdc\");\n\n // Determine collateral mint decimals dynamically (supports Token-2022)\n const info = await this.getMarketInfo(market);\n // Preflight: block trades for ended or resolved markets to avoid on-chain MarketEnded error (0x1770)\n try {\n const nowSec = Math.floor(Date.now() / 1000);\n const rawEnd = info.endTime as any;\n let endSec: number | null = null;\n if (typeof rawEnd === \"bigint\") {\n endSec = Number(rawEnd);\n } else if (typeof rawEnd === \"number\") {\n endSec = rawEnd;\n } else if (typeof rawEnd === \"string\") {\n // Some decoders may return hex-encoded seconds; try hex first, then decimal\n const hexMatch = /^[0-9a-fA-F]+$/.test(rawEnd);\n try {\n const bi = hexMatch ? BigInt(\"0x\" + rawEnd) : BigInt(rawEnd);\n endSec = Number(bi);\n } catch {\n const n = Number(rawEnd);\n endSec = Number.isFinite(n) ? n : null;\n }\n }\n const ended = endSec !== null ? nowSec >= endSec : false;\n const resolved = (info as any).resolved === true;\n if (resolved || ended) {\n const endIso = endSec ? new Date(endSec * 1000).toISOString() : \"unknown\";\n throw new Error(`Market not tradable: ${resolved ? \"resolved\" : \"ended\"}. End time: ${endIso}.`);\n }\n } catch (e) {\n if (e instanceof Error && e.message.startsWith(\"Market not tradable\")) {\n throw e;\n }\n // If preflight parsing fails, proceed; on-chain program will enforce correctness.\n }\n const collateralMint = info.collateralToken;\n const mintAi = await this.client.connection.getAccountInfo(collateralMint, this.client.commitment);\n if (!mintAi) throw new Error(\"collateral mint account not found\");\n const is2022 = mintAi.owner.equals(TOKEN_2022_PROGRAM_ID);\n const tokenProgram = is2022 ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID;\n const mintInfo = await getMint(this.client.connection, collateralMint, this.client.commitment, tokenProgram);\n const decimals = mintInfo.decimals ?? 6;\n // Convert amountUsdc to base units without floating-point error\n const scaleBI = 10n ** BigInt(decimals);\n const amtStr = String(params.amountUsdc);\n const [intPartRaw, fracPartRaw = \"\"] = amtStr.split(\".\");\n const intBI = intPartRaw ? BigInt(intPartRaw) : 0n;\n const fracPadded = (fracPartRaw + \"0\".repeat(decimals)).slice(0, decimals);\n const fracBI = fracPadded.length ? BigInt(fracPadded) : 0n;\n const amount = intBI * scaleBI + fracBI;\n try {\n console.log(\"[buyTokensUsdc] amount_usdc=\", params.amountUsdc, \"decimals=\", decimals, \"base_units=\", amount.toString());\n } catch {}\n const minimumOut = params.minimumOut ?? 0n; // pass-through to IDL\n\n // balances before\n const before = await this.getBalances(market);\n\n let signature: string = \"\";\n try {\n const res = await this.mintDecisionTokensDerived({ market, amount, buyYesToken, minimumOut });\n signature = res.signature as string;\n } catch (e: any) {\n const base = `buyTokensUsdc failed (amount_usdc=${params.amountUsdc}, decimals=${decimals}, base_units=${amount.toString()}, buyYesToken=${buyYesToken})`;\n if (e instanceof SendTransactionError) {\n const logs = await e.getLogs(this.client.connection).catch(() => undefined);\n throw new Error(`${base}. On-chain logs: ${JSON.stringify(logs ?? [])}. Cause: ${e.message}`);\n }\n throw new Error(`${base}. Cause: ${e?.message ?? String(e)}`);\n }\n\n // small wait for RPC consistency\n await new Promise((r) => setTimeout(r, 1500));\n const after = await this.getBalances(market);\n\n const usdcSpent = Number(before.collateral.uiAmount) - Number(after.collateral.uiAmount);\n const tokenDelta = Number(buyYesToken ? after.yes.uiAmount : after.no.uiAmount) - Number(buyYesToken ? before.yes.uiAmount : before.no.uiAmount);\n\n return {\n signature,\n usdcSpent,\n tokensReceived: tokenDelta,\n before,\n after,\n };\n }\n\n async sellTokensBase(params: { market: PublicKey; burnYesToken: boolean; amountBaseUnits: bigint }) {\n const { market, burnYesToken, amountBaseUnits } = params;\n if (amountBaseUnits <= 0n) throw new Error(\"Invalid amountBaseUnits\");\n\n const before = await this.getBalances(market);\n let signature: string = \"\";\n try {\n const res = await this.burnDecisionTokensDerived({ market, amount: amountBaseUnits, burnYesToken });\n signature = res.signature as string;\n } catch (e: any) {\n // include token mint decimals for the decision tokens if helpful (both YES/NO assumed 6, but fetch to be safe)\n const info = await this.getMarketInfo(market);\n const mint = burnYesToken ? info.yesTokenMint : info.noTokenMint;\n const mintInfo = await getMint(this.client.connection, mint, this.client.commitment).catch(() => undefined as any);\n const decimals = mintInfo?.decimals ?? 6;\n const base = `sellTokensBase failed (burnYesToken=${burnYesToken}, base_units=${amountBaseUnits.toString()}, token_decimals=${decimals})`;\n if (e instanceof SendTransactionError) {\n const logs = await e.getLogs(this.client.connection).catch(() => undefined);\n throw new Error(`${base}. On-chain logs: ${JSON.stringify(logs ?? [])}. Cause: ${e.message}`);\n }\n throw new Error(`${base}. Cause: ${e?.message ?? String(e)}`);\n }\n await new Promise((r) => setTimeout(r, 1500));\n const after = await this.getBalances(market);\n\n const tokensSold = Number(burnYesToken ? before.yes.uiAmount : before.no.uiAmount) - Number(burnYesToken ? after.yes.uiAmount : after.no.uiAmount);\n const usdcReceived = Number(after.collateral.uiAmount) - Number(before.collateral.uiAmount);\n\n return { signature, tokensSold, usdcReceived, before, after };\n }\n\n async redeemPosition(market: PublicKey) {\n // Decode needed accounts\n const mai = await this.client.connection.getAccountInfo(market, this.client.commitment);\n if (!mai) throw new Error(\"market account not found\");\n const m = decodeAccount<any>(\"Market\", mai.data);\n const yesTokenMint: PublicKey = new PublicKey(m.yesTokenMint ?? m.yes_token_mint);\n const noTokenMint: PublicKey = new PublicKey(m.noTokenMint ?? m.no_token_mint);\n const collateralMint: PublicKey = new PublicKey(m.collateralToken ?? m.collateral_token);\n const marketCreator: PublicKey = new PublicKey(m.creator ?? m.market_creator ?? m.creator);\n const creatorFeeTreasury: PublicKey = new PublicKey(m.creatorFeeTreasury ?? m.creator_fee_treasury);\n\n const [globalConfig] = deriveGlobalConfigPda(this.client.programId);\n const gai = await this.client.connection.getAccountInfo(globalConfig, this.client.commitment);\n if (!gai) throw new Error(\"global_config not initialized\");\n const g = decodeAccount<any>(\"GlobalConfig\", gai.data);\n const admin: PublicKey = new PublicKey(g.admin);\n\n const buyer = this.signer.publicKey;\n const buyerYesTokenAccount = deriveAta(buyer, yesTokenMint);\n const buyerNoTokenAccount = deriveAta(buyer, noTokenMint);\n const buyerCollateralTokenAccount = deriveAta(buyer, collateralMint);\n const adminCollateralTokenAccount = deriveAta(admin, collateralMint);\n const marketReserveVault = deriveAta(market, collateralMint, true);\n\n const accounts: AccountsMap & Record<string, PublicKey> = {\n buyer,\n admin,\n market_creator: marketCreator,\n market,\n global_config: globalConfig,\n yes_token_mint: yesTokenMint,\n no_token_mint: noTokenMint,\n buyer_yes_token_account: buyerYesTokenAccount,\n buyer_no_token_account: buyerNoTokenAccount,\n market_reserve_vault: marketReserveVault,\n collateral_token_mint: collateralMint,\n buyer_collateral_token_account: buyerCollateralTokenAccount,\n admin_collateral_token_account: adminCollateralTokenAccount,\n creator_fee_treasury: creatorFeeTreasury,\n token_program: TOKEN_PROGRAM_ID,\n associated_token_program: ASSOCIATED_TOKEN_PROGRAM_ID,\n system_program: SystemProgram.programId,\n } as any;\n\n // There should be an IDL builder for redeem; if not present, this is a placeholder for when added.\n // For now, mirror the burn/mint pattern would require a buildRedeemPositionIx; omitted if not available.\n throw new Error(\"redeemPosition not implemented in SDK yet\");\n }\n}\n","import { PublicKey, TransactionInstruction } from \"@solana/web3.js\";\nimport { PNP_PROGRAM_ID } from \"../idl\";\n\n// Placeholder instruction builder. Replace data layout with IDL/Borsh encoding.\nexport function buildTradeIx(params: {\n trader: PublicKey;\n market: PublicKey;\n side: \"buy\" | \"sell\";\n price: bigint;\n size: bigint;\n}) {\n const { trader, market, side } = params;\n const disc = 1; // discriminator placeholder\n const sideFlag = side === \"buy\" ? 0 : 1;\n const data = Buffer.from([disc, sideFlag]);\n const keys = [\n { pubkey: trader, isSigner: true, isWritable: true },\n { pubkey: market, isSigner: false, isWritable: true },\n ];\n return new TransactionInstruction({ keys, programId: PNP_PROGRAM_ID, data });\n}\n","import { PublicKey } from \"@solana/web3.js\";\nimport { z } from \"zod\";\nimport { Client } from \"../platform/client\";\nimport { buildRedeemIx } from \"../instructions/redemption\";\nimport { buildClaimCreatorFeeIx, buildCreatorRefundIx, buildCreatorRefundV2Ix, buildRedeemPositionV2Ix } from \"../instructions/idl_builders\";\nimport type { AccountsMap } from \"../idl\";\nimport { buildAndSendV0 } from \"../platform/tx\";\nimport type { SignerLike } from \"../platform/wallet\";\n\nconst RedeemSchema = z.object({\n market: z.instanceof(PublicKey),\n position: z.instanceof(PublicKey),\n amount: z.bigint(),\n to: z.instanceof(PublicKey).optional(),\n});\n\nexport class RedemptionModule {\n constructor(private readonly client: Client, private readonly signer: SignerLike) {}\n\n async redeemPosition(params: z.infer<typeof RedeemSchema>) {\n const p = RedeemSchema.parse(params);\n const ix = buildRedeemIx({\n holder: this.signer.publicKey,\n market: p.market,\n position: p.position,\n amount: p.amount,\n });\n\n const res = await buildAndSendV0(this.client, this.signer, [ix], {\n computeUnitLimit: 800000,\n });\n return { signature: res.signature };\n }\n\n // IDL-backed creator fee claim\n async claimCreatorFee(accounts: AccountsMap) {\n const ix = buildClaimCreatorFeeIx(accounts);\n const res = await buildAndSendV0(this.client, this.signer, [ix], {\n computeUnitLimit: 800000,\n });\n return { signature: res.signature };\n }\n\n // IDL-backed creator refund\n async creatorRefund(accounts: AccountsMap) {\n const ix = buildCreatorRefundIx(accounts);\n const res = await buildAndSendV0(this.client, this.signer, [ix], {\n computeUnitLimit: 800000,\n });\n return { signature: res.signature };\n }\n\n // IDL-backed creator refund V2\n async creatorRefundV2(accounts: AccountsMap) {\n const ix = buildCreatorRefundV2Ix(accounts);\n const res = await buildAndSendV0(this.client, this.signer, [ix], {\n computeUnitLimit: 800000,\n });\n return { signature: res.signature };\n }\n \n /**\n * Redeem a winning position from a resolved market\n * @param accounts - Account mapping for the redemption instruction\n * @returns Transaction signature\n */\n async redeemPositionV2(accounts: AccountsMap) {\n const ix = buildRedeemPositionV2Ix(accounts);\n const res = await buildAndSendV0(this.client, this.signer, [ix], {\n computeUnitLimit: 800000,\n });\n return { signature: res.signature };\n }\n}\n","import { PublicKey, TransactionInstruction } from \"@solana/web3.js\";\nimport { PNP_PROGRAM_ID } from \"../idl\";\n\n// Placeholder instruction builder. Replace data layout with IDL/Borsh encoding.\nexport function buildRedeemIx(params: {\n holder: PublicKey;\n market: PublicKey;\n position: PublicKey;\n amount: bigint;\n}) {\n const { holder, market, position } = params;\n const disc = 2; // discriminator placeholder\n const data = Buffer.from([disc]);\n const keys = [\n { pubkey: holder, isSigner: true, isWritable: true },\n { pubkey: market, isSigner: false, isWritable: true },\n { pubkey: position, isSigner: false, isWritable: true },\n ];\n return new TransactionInstruction({ keys, programId: PNP_PROGRAM_ID, data });\n}\n","import { PublicKey, Keypair, SystemProgram } from \"@solana/web3.js\";\nimport bs58 from \"bs58\";\nimport { Client } from \"./platform/client\";\nimport type { SdkConfig } from \"./types\";\nimport type { SignerLike } from \"./platform/wallet\";\nimport { NodeKeypairSigner } from \"./platform/wallet\";\nimport { MarketModule } from \"./modules/market\";\nimport { TradingModule } from \"./modules/trading\";\nimport { RedemptionModule } from \"./modules/redemption\";\nimport { AnchorClient } from \"./lib/anchor-client\";\nimport { AnchorMarketModule } from \"./modules/anchor-market\";\nimport { decodeAccount } from \"./idl\";\nimport type {\n MarketsResponse,\n MarketType,\n SettlementCriteria,\n SettlementData,\n} from \"./types\";\nimport {\n ASSOCIATED_TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID,\n TOKEN_PROGRAM_ID,\n getAssociatedTokenAddressSync,\n} from \"@solana/spl-token\";\nimport type { GlobalConfigType } from \"./types\";\n\nexport class PNPClient {\n readonly client: Client;\n readonly signer?: SignerLike;\n\n readonly market?: MarketModule;\n readonly trading?: TradingModule;\n readonly redemption?: RedemptionModule;\n readonly anchorMarket?: AnchorMarketModule;\n readonly anchorClient?: AnchorClient;\n\n constructor(\n rpcUrl: string,\n privateKey?: Uint8Array | string | { secretKey: Uint8Array }\n ) {\n // Initialize low-level client (always available)\n const cfg: SdkConfig = { rpcUrl };\n this.client = new Client(cfg);\n\n // Optional signer (enables write interactions)\n if (privateKey) {\n let secretKey: Uint8Array | undefined;\n if (typeof privateKey === \"string\") {\n try {\n // Assume base58 string\n secretKey = Uint8Array.from(bs58.decode(privateKey));\n } catch {\n throw new Error(\n \"Invalid private key string; expected base58-encoded secret key\"\n );\n }\n } else if (privateKey instanceof Uint8Array) {\n secretKey = privateKey;\n } else if (privateKey && privateKey.secretKey instanceof Uint8Array) {\n secretKey = privateKey.secretKey;\n }\n\n if (!secretKey) throw new Error(\"Unsupported privateKey format\");\n const keypair = Keypair.fromSecretKey(secretKey);\n this.signer = new NodeKeypairSigner(keypair);\n\n // Write-capable modules\n this.market = new MarketModule(this.client, this.signer);\n this.trading = new TradingModule(this.client, this.signer);\n this.redemption = new RedemptionModule(this.client, this.signer);\n\n // Anchor-based helpers\n try {\n this.anchorClient = new AnchorClient(this.client.connection, keypair);\n this.anchorMarket = new AnchorMarketModule(this.anchorClient);\n } catch (err) {\n console.warn(\"Could not initialize Anchor client:\", err);\n }\n }\n }\n\n /**\n * Redeems a winning position in a resolved market\n * @param market - The public key of the market where the position was created\n * @param options - Optional parameters for customizing the redemption\n * @returns Transaction signature\n */\n async redeemPosition(market: PublicKey, options?: {\n admin?: PublicKey;\n marketCreator?: PublicKey;\n creatorFeeTreasury?: PublicKey;\n }) {\n if (!this.redemption || !this.signer) {\n throw new Error(\"Redemption module not available. Make sure you initialized the client with a valid private key.\");\n }\n\n if (!this.anchorClient) {\n throw new Error(\"Anchor client is not initialized. Cannot perform redemption.\");\n }\n\n // Fetch the market info to get required token accounts\n const marketData = await this.fetchMarket(market);\n const { account: marketAccount } = marketData;\n\n // Fetch the global config\n const { publicKey: globalConfigPDA } = await this.fetchGlobalConfig();\n\n // Get token accounts from market account\n const yesTokenMint = new PublicKey(marketAccount.yes_token_mint);\n const noTokenMint = new PublicKey(marketAccount.no_token_mint);\n const collateralTokenMint = new PublicKey(marketAccount.collateral_token);\n const marketCreator = new PublicKey(marketAccount.creator);\n\n // Get admin from global config or use provided value\n const { account: globalConfigAccount } = await this.fetchGlobalConfig();\n const admin = options?.admin || new PublicKey(globalConfigAccount.admin);\n\n // Determine token program IDs\n const [yesAi, noAi, colAi] = await Promise.all([\n this.client.connection.getAccountInfo(yesTokenMint),\n this.client.connection.getAccountInfo(noTokenMint),\n this.client.connection.getAccountInfo(collateralTokenMint),\n ]);\n if (!yesAi || !noAi || !colAi) {\n throw new Error(\"One or more token mints are invalid\");\n }\n\n const yesTokenProgram = yesAi.owner.equals(TOKEN_2022_PROGRAM_ID) ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID;\n const noTokenProgram = noAi.owner.equals(TOKEN_2022_PROGRAM_ID) ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID;\n const collateralTokenProgram = colAi.owner.equals(TOKEN_2022_PROGRAM_ID) ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID;\n\n // Derive ATAs\n const buyer = this.signer.publicKey;\n const buyerYesTokenAccount = getAssociatedTokenAddressSync(\n yesTokenMint,\n buyer,\n false,\n yesTokenProgram\n );\n\n const buyerNoTokenAccount = getAssociatedTokenAddressSync(\n noTokenMint,\n buyer,\n false,\n noTokenProgram\n );\n\n const buyerCollateralTokenAccount = getAssociatedTokenAddressSync(\n collateralTokenMint,\n buyer,\n false,\n collateralTokenProgram\n );\n\n // Derive market reserve vault\n const marketReserveVault = getAssociatedTokenAddressSync(\n collateralTokenMint,\n market,\n true,\n collateralTokenProgram\n );\n\n // Find or get creator fee treasury\n const creatorFeeTreasury = options?.creatorFeeTreasury ? new PublicKey(options.creatorFeeTreasury) : \n getAssociatedTokenAddressSync(\n collateralTokenMint,\n marketCreator,\n false,\n collateralTokenProgram\n );\n\n // Get or derive admin collateral token account\n const adminCollateralTokenAccount = getAssociatedTokenAddressSync(\n collateralTokenMint,\n admin,\n false,\n collateralTokenProgram\n );\n\n // Execute the redemption instruction\n try {\n const result = await this.redemption.redeemPositionV2({\n buyer,\n market,\n admin,\n marketCreator,\n creatorFeeTreasury,\n adminCollateralTokenAccount,\n globalConfig: globalConfigPDA,\n yesTokenMint,\n noTokenMint,\n buyerYesTokenAccount,\n buyerNoTokenAccount,\n marketReserveVault,\n collateralTokenMint,\n buyerCollateralTokenAccount,\n tokenProgram: collateralTokenProgram,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n });\n \n return result;\n } catch (error: unknown) {\n const errorMessage = error instanceof Error ? error.message : String(error); \n throw new Error(`Error redeeming position: ${errorMessage}`);\n }\n }\n\n // ===== Read-only helpers (no signer required) =====\n async fetchGlobalConfig(): Promise<{\n publicKey: PublicKey;\n account: GlobalConfigType;\n }> {\n const [pk] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"global_config\")],\n this.client.programId\n );\n const ai = await this.client.connection.getAccountInfo(\n pk,\n this.client.commitment\n );\n if (!ai) throw new Error(\"global_config not found\");\n const acc = decodeAccount<GlobalConfigType>(\"GlobalConfig\", ai.data);\n return { publicKey: pk, account: acc };\n }\n\n async fetchMarket(\n market: PublicKey\n ): Promise<{ publicKey: PublicKey; account: MarketType }> {\n const ai = await this.client.connection.getAccountInfo(\n market,\n this.client.commitment\n );\n if (!ai) throw new Error(\"market account not found\");\n const acc = decodeAccount<MarketType>(\"Market\", ai.data);\n return { publicKey: market, account: acc };\n }\n\n async fetchMarkets(): Promise<MarketsResponse> {\n // Derive discriminator via sha256(\"account:Market\") and take first 8 bytes\n const { createHash } = await import(\"crypto\");\n const discriminator = createHash(\"sha256\")\n .update(\"account:Market\")\n .digest()\n .subarray(0, 8);\n\n // Solana RPC expects memcmp.bytes as a base58 string\n const filters = [\n { memcmp: { offset: 0, bytes: bs58.encode(Buffer.from(discriminator)) } },\n ];\n const ras = await this.client.connection.getProgramAccounts(\n this.client.programId,\n {\n commitment: this.client.commitment,\n filters,\n }\n );\n\n const data = ras.map(({ pubkey, account }) => ({\n publicKey: pubkey.toBase58(),\n account: decodeAccount<MarketType>(\"Market\", account.data as Buffer),\n }));\n return { count: data.length, data };\n }\n\n // ===== Proxy server integration =====\n\n /**\n * Fetch settlement criteria for a market from the proxy server\n * @param market - Market public key (as string or PublicKey)\n * @param baseUrl - Optional base URL for the proxy server\n * @returns Settlement criteria data\n */\n async fetchSettlementCriteria(\n market: string | PublicKey,\n baseUrl?: string\n ): Promise<SettlementCriteria> {\n const marketStr = typeof market === \"string\" ? market : market.toBase58();\n if (!marketStr || typeof marketStr !== \"string\") {\n throw new Error(\"A valid market address string is required.\");\n }\n\n const proxyBaseUrl =\n baseUrl ||\n process.env.PROXY_BASE_URL ||\n \"https://proxyserver-production-f61b.up.railway.app\";\n const trimmed = proxyBaseUrl.replace(/\\/+$/, \"\");\n const url = `${trimmed}/market-oracle/market/${encodeURIComponent(marketStr)}`;\n\n const res = await fetch(url, {\n method: \"GET\",\n headers: { \"Content-Type\": \"application/json\" },\n });\n\n if (!res.ok) {\n const text = await res.text().catch(() => \"\");\n throw new Error(\n `Proxy request failed (${res.status} ${res.statusText}): ${text}`\n );\n }\n\n const data = await res.json().catch(() => {\n throw new Error(\"Failed to parse JSON from proxy response\");\n });\n\n // Handle different response formats\n if (\n data &&\n typeof data === \"object\" &&\n Object.prototype.hasOwnProperty.call(data, \"data\")\n ) {\n return data.data as SettlementCriteria;\n }\n\n return data as SettlementCriteria;\n }\n\n /**\n * Get settlement criteria for a market from the proxy server (alias for fetchSettlementCriteria)\n * @param market - Market public key (as string or PublicKey)\n * @param baseUrl - Optional base URL for the proxy server\n * @returns Settlement criteria data\n */\n async getSettlementCriteria(\n market: string | PublicKey,\n baseUrl?: string,\n options?: { retryDelayMs?: number; maxRetryTimeMs?: number }\n ): Promise<SettlementCriteria> {\n // Default retry configuration: retry every 2s for up to 15 minutes\n const RETRY_DELAY_MS = options?.retryDelayMs ?? 2000;\n const MAX_RETRY_TIME_MS = options?.maxRetryTimeMs ?? 15 * 60 * 1000;\n\n const startTime = Date.now();\n\n // simple sleep helper\n const sleep = (ms: number) =>\n new Promise((resolve) => setTimeout(resolve, ms));\n\n let attempt = 1;\n while (Date.now() - startTime < MAX_RETRY_TIME_MS) {\n try {\n const result = await this.fetchSettlementCriteria(market, baseUrl);\n if (result !== null && typeof result !== \"undefined\") {\n return result;\n }\n await sleep(RETRY_DELAY_MS);\n attempt++;\n } catch (_err) {\n // Swallow transient errors and retry until timeout\n await sleep(RETRY_DELAY_MS);\n attempt++;\n }\n }\n\n throw new Error(\n `Timed out after ${Math.floor(MAX_RETRY_TIME_MS / 1000)}s waiting for settlement criteria from proxy`\n );\n }\n\n /**\n * Fetch settlement data for a market from the proxy server\n * @param market - Market public key (as string or PublicKey)\n * @param baseUrl - Optional base URL for the proxy server\n * @returns Settlement data\n */\n async fetchSettlementData(\n market: string | PublicKey,\n baseUrl?: string\n ): Promise<SettlementData> {\n const marketStr = typeof market === \"string\" ? market : market.toBase58();\n if (!marketStr || typeof marketStr !== \"string\") {\n throw new Error(\"A valid market address string is required.\");\n }\n\n const proxyBaseUrl =\n baseUrl ||\n process.env.PROXY_BASE_URL ||\n \"https://proxyserver-production-f61b.up.railway.app\";\n const trimmed = proxyBaseUrl.replace(/\\/+$/, \"\");\n const url = `${trimmed}/market-oracle/market/${encodeURIComponent(marketStr)}/settlement-data`;\n\n const res = await fetch(url, {\n method: \"GET\",\n headers: { \"Content-Type\": \"application/json\" },\n });\n\n if (!res.ok) {\n const text = await res.text().catch(() => \"\");\n throw new Error(\n `Proxy request failed (${res.status} ${res.statusText}): ${text}`\n );\n }\n\n const data = await res.json().catch(() => {\n throw new Error(\"Failed to parse JSON from proxy response\");\n });\n\n // Handle different response formats\n const responseData =\n data &&\n typeof data === \"object\" &&\n Object.prototype.hasOwnProperty.call(data, \"data\")\n ? data.data\n : data;\n\n // Ensure the response has answer and reasoning fields\n const result: SettlementData = {\n answer: \"\",\n reasoning: \"\",\n ...responseData,\n };\n\n // Map fields from different response formats if needed\n if (!result.answer && responseData) {\n // Try to derive answer from winning_token_id or other fields\n if (responseData.winning_token_id === \"yes\") {\n result.answer = \"YES\";\n } else if (responseData.winning_token_id === \"no\") {\n result.answer = \"NO\";\n } else if (responseData.winning_token_id) {\n result.answer = responseData.winning_token_id.toUpperCase();\n }\n }\n\n // Use settlement_description as reasoning if reasoning is not provided\n if (\n !result.reasoning &&\n responseData &&\n responseData.settlement_description\n ) {\n result.reasoning = responseData.settlement_description;\n }\n\n return result;\n }\n\n /**\n * Get settlement data for a market from the proxy server (alias for fetchSettlementData)\n * @param market - Market public key (as string or PublicKey)\n * @param baseUrl - Optional base URL for the proxy server\n * @returns Settlement data\n */\n async getSettlementData(\n market: string | PublicKey,\n baseUrl?: string\n ): Promise<SettlementData> {\n return this.fetchSettlementData(market, baseUrl);\n }\n\n /**\n * Fetch market addresses from the proxy server\n * @param baseUrl - Optional base URL for the proxy server\n * @returns Array of market addresses\n */\n async fetchMarketAddresses(baseUrl?: string): Promise<string[]> {\n const proxyBaseUrl =\n baseUrl ||\n process.env.PROXY_BASE_URL ||\n \"https://proxyserver-production-f61b.up.railway.app\";\n const trimmed = proxyBaseUrl.replace(/\\/+$/, \"\");\n const url = `${trimmed}/market-oracle/market-addresses`;\n\n const res = await fetch(url, {\n method: \"GET\",\n headers: { \"Content-Type\": \"application/json\" },\n });\n\n if (!res.ok) {\n const text = await res.text().catch(() => \"\");\n throw new Error(\n `Proxy request failed (${res.status} ${res.statusText}): ${text}`\n );\n }\n\n const data = await res.json().catch(() => {\n throw new Error(\"Failed to parse JSON from proxy response\");\n });\n\n // Handle different response formats\n if (Array.isArray(data)) return data.map(String);\n if (data && Array.isArray(data.addresses))\n return data.addresses.map(String);\n if (\n data &&\n typeof data.success !== \"undefined\" &&\n data.data &&\n Array.isArray(data.data.addresses)\n ) {\n return data.data.addresses.map(String);\n }\n if (data && Array.isArray(data.data)) return data.data.map(String);\n\n throw new Error(\n \"Unexpected proxy response shape. Expected array, {addresses: string[]}, {data: string[]}, or { success, data: { addresses: string[] } }.\"\n );\n }\n\n /**\n * Claim creator refund for a market.\n * Behavior parity with scripts/claimCreatorRefund.ts:\n * - Eligible if market is not resolvable (proxy or on-chain flag) AND signer is the creator\n * - Mixed token programs => use creator_refund_v2 with accountsPartial (yes/no token mints null)\n * - Uniform token programs => try creator_refund_v2 then fallback to v1\n */\n async claimMarketRefund(market: PublicKey): Promise<{ signature: string }> {\n if (!this.redemption || !this.trading) {\n throw new Error(\n \"Required modules (redemption and trading) are undefined. Ensure your wallet secret is valid.\"\n );\n }\n\n // Fetch market info\n const info: any = await this.trading.getMarketInfo(market);\n\n // Determine eligibility: not resolvable and signer is the creator\n let isNotResolvable = false;\n if (info && typeof info.resolvable === \"boolean\") {\n isNotResolvable = !info.resolvable;\n } else {\n try {\n const criteria: any = await this.fetchSettlementCriteria(\n market.toBase58()\n );\n if (criteria && typeof criteria.resolvable === \"boolean\") {\n isNotResolvable = !criteria.resolvable;\n }\n } catch {\n // ignore proxy errors; assume not resolvable remains false unless on-chain said otherwise\n }\n }\n\n const walletPk = (this.signer as any)?.publicKey;\n const isCreator = walletPk ? walletPk.equals(info.creator) : false;\n if (!(isNotResolvable && isCreator)) {\n throw new Error(\n \"This market is not eligible for creator refund. Must be not resolvable and you must be the creator.\"\n );\n }\n\n // Extract\n const yesMint = info.yesTokenMint;\n const noMint = info.noTokenMint;\n const collateralMint = info.collateralToken;\n const creator = info.creator;\n if (!collateralMint || !creator) {\n throw new Error(\n \"Market is missing required collateral token or creator info\"\n );\n }\n\n // Determine token program owners\n const [yesAi, noAi, colAi] = await Promise.all([\n this.client.connection.getAccountInfo(yesMint),\n this.client.connection.getAccountInfo(noMint),\n this.client.connection.getAccountInfo(collateralMint),\n ]);\n if (!yesAi || !noAi || !colAi)\n throw new Error(\"One or more market mint accounts are missing\");\n\n const hasUniformTokenProgram =\n yesAi.owner.equals(noAi.owner) && yesAi.owner.equals(colAi.owner);\n const collateralTokenProgram = colAi.owner.equals(TOKEN_2022_PROGRAM_ID)\n ? TOKEN_2022_PROGRAM_ID\n : TOKEN_PROGRAM_ID;\n\n // PDAs and ATAs\n const [globalConfig] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"global_config\")],\n this.client.programId\n );\n const marketReserveVault = getAssociatedTokenAddressSync(\n collateralMint,\n market,\n true,\n collateralTokenProgram\n );\n const creatorCollateralTokenAccount = getAssociatedTokenAddressSync(\n collateralMint,\n creator,\n false,\n collateralTokenProgram\n );\n\n if (!hasUniformTokenProgram) {\n // Mixed token programs => V2 with accountsPartial\n if (!this.anchorClient) {\n throw new Error(\n \"Anchor client is not initialized. Cannot perform creator refund.\"\n );\n }\n const tx = await (this.anchorClient as any).program.methods\n .creatorRefundV2()\n .accountsPartial({\n creator,\n globalConfig,\n market,\n yesTokenMint: null as any,\n noTokenMint: null as any,\n marketReserveVault,\n collateralTokenMint: collateralMint,\n creatorCollateralTokenAccount,\n tokenProgram: collateralTokenProgram,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n } as any)\n .rpc();\n return { signature: tx };\n }\n\n // Uniform programs => try V2 then fallback to V1\n try {\n const res = await this.redemption.creatorRefundV2({\n creator,\n global_config: globalConfig,\n market,\n yes_token_mint: yesMint,\n no_token_mint: noMint,\n market_reserve_vault: marketReserveVault,\n collateral_token_mint: collateralMint,\n creator_collateral_token_account: creatorCollateralTokenAccount,\n token_program: collateralTokenProgram,\n associated_token_program: ASSOCIATED_TOKEN_PROGRAM_ID,\n system_program: SystemProgram.programId,\n });\n return { signature: (res as any).signature ?? res };\n } catch (e) {\n const res = await this.redemption.creatorRefund({\n creator,\n global_config: globalConfig,\n market,\n yes_token_mint: yesMint,\n no_token_mint: noMint,\n market_reserve_vault: marketReserveVault,\n collateral_token_mint: collateralMint,\n creator_collateral_token_account: creatorCollateralTokenAccount,\n token_program: collateralTokenProgram,\n associated_token_program: ASSOCIATED_TOKEN_PROGRAM_ID,\n system_program: SystemProgram.programId,\n });\n return { signature: (res as any).signature ?? res };\n }\n }\n}\n","import { Keypair, PublicKey, Transaction, VersionedTransaction } from \"@solana/web3.js\";\n\nexport interface SignerLike {\n publicKey: PublicKey;\n signTransaction(tx: Transaction | VersionedTransaction): Promise<Transaction | VersionedTransaction>;\n signAllTransactions?(txs: (Transaction | VersionedTransaction)[]): Promise<(Transaction | VersionedTransaction)[]>;\n}\n\nexport class NodeKeypairSigner implements SignerLike {\n constructor(public readonly keypair: Keypair) {}\n get publicKey() { return this.keypair.publicKey; }\n async signTransaction(tx: Transaction | VersionedTransaction) {\n if (tx instanceof VersionedTransaction) {\n tx.sign([this.keypair]);\n return tx;\n }\n tx.partialSign(this.keypair);\n return tx;\n }\n}\n","import { Connection, Keypair, PublicKey } from '@solana/web3.js';\nimport { Program, AnchorProvider, Wallet, Idl } from '@coral-xyz/anchor';\nimport { BN } from 'bn.js';\nimport * as anchor from '@coral-xyz/anchor';\nimport { PNP_IDL } from '../idl';\n\n/**\n * Provides a wrapper for Anchor program interactions\n * Following the same pattern as the JavaScript example\n */\nexport class AnchorClient {\n readonly provider: anchor.AnchorProvider;\n readonly wallet: anchor.Wallet;\n readonly program: anchor.Program;\n\n constructor(\n readonly connection: Connection,\n readonly signer: Keypair,\n readonly idlOverride?: Idl\n ) {\n // Set up the wallet and provider exactly like in the working example\n this.wallet = new anchor.Wallet(signer);\n this.provider = new anchor.AnchorProvider(connection, this.wallet, { commitment: \"confirmed\" });\n \n // Set the provider globally for Anchor\n anchor.setProvider(this.provider);\n \n try {\n console.log(\"Initializing Anchor program with IDL\");\n const idlToUse: Idl = this.idlOverride ?? (PNP_IDL as unknown as Idl);\n // Mirror the working JS script: do not pass programId explicitly so Anchor\n // uses the address embedded in the IDL. This avoids namespace build issues\n // and ensures exact parity with the script.\n // @ts-ignore - Anchor types across versions\n this.program = new anchor.Program(idlToUse, this.provider);\n console.log(\"Program loaded successfully\");\n console.log(`Program ID: ${this.program.programId.toString()}`);\n } catch (err) {\n console.error(\"Failed to initialize Anchor program:\", err);\n throw err;\n }\n }\n\n /**\n * Convert a JavaScript BigInt or number to Anchor BN\n */\n static toBN(value: bigint | number): typeof BN.prototype {\n return new BN(value.toString());\n }\n \n /**\n * Returns the IDL for the PNP program\n */\n static async getIdl(): Promise<Idl> {\n return PNP_IDL as unknown as Idl;\n }\n\n static fromIdl(connection: Connection, signer: Keypair, idl: Idl) {\n return new AnchorClient(connection, signer, idl);\n }\n\n /**\n * Get the wallet's public key\n */\n get walletPublicKey(): PublicKey {\n return this.wallet.publicKey;\n }\n}\n","import { PublicKey, SystemProgram, ComputeBudgetProgram } from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n getAssociatedTokenAddress,\n} from \"@solana/spl-token\";\nimport { BN } from \"bn.js\";\nimport * as anchor from \"@coral-xyz/anchor\";\nimport { AnchorClient } from \"../lib/anchor-client\";\n\n/**\n * Market module that uses direct Anchor program calls\n */\nexport class AnchorMarketModule {\n constructor(private anchorClient: AnchorClient) {}\n\n /**\n * Create a new prediction market using direct Anchor program calls\n * Following the same structure as the working JavaScript example\n */\n async createMarket(params: {\n question: string;\n initialLiquidity: bigint;\n endTime: bigint;\n collateralTokenMint: PublicKey;\n creator?: PublicKey; // New: explicit creator (can be different from payer)\n }) {\n const { question, initialLiquidity, endTime, collateralTokenMint } = params;\n const creatorOverride: PublicKey = params.creator ?? this.anchorClient.walletPublicKey; // default to payer\n\n // Convert bigint to BN just like in the JavaScript example\n const initialLiquidityBN = AnchorClient.toBN(initialLiquidity);\n const endTimeBN = AnchorClient.toBN(endTime);\n\n console.log(\"🚀 Creating market with parameters:\");\n console.log(\" Question:\", question);\n console.log(\" Initial Liquidity:\", initialLiquidityBN.toString());\n console.log(\" End Time:\", new Date(Number(endTime) * 1000).toISOString());\n console.log(\" Collateral Token Mint:\", collateralTokenMint.toString());\n console.log(\" Creator (for fees/ownership):\", creatorOverride.toBase58());\n\n // 1. Get global config and ID\n const [globalConfig] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"global_config\")],\n this.anchorClient.program.programId\n );\n console.log(\"Global Config:\", globalConfig.toBase58());\n\n // Fetch global config to get the current global_id (BN)\n const globalConfigAccount = await (this.anchorClient.program.account as any).globalConfig.fetch(globalConfig);\n const currentGlobalId = globalConfigAccount.globalId;\n console.log(\"Current Global ID:\", currentGlobalId.toString());\n\n // 2. Derive V2 market PDA: [\"market-v2\", global_id (le u64)]\n const [market] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"market-v2\"), currentGlobalId.toArrayLike(Buffer, \"le\", 8)],\n this.anchorClient.program.programId\n );\n console.log(\"Market PDA:\", market.toBase58());\n\n // 3. ATAs required for V2\n // IDL now expects payer_collateral_token_account (owned by payer)\n const payerCollateralTokenAccount = await getAssociatedTokenAddress(\n collateralTokenMint,\n this.anchorClient.walletPublicKey\n );\n\n const marketReserveVault = await getAssociatedTokenAddress(\n collateralTokenMint,\n market,\n true // allowOwnerOffCurve\n );\n\n // 4. Derive creator fee treasury: seeds [\"creator_fee_treasury\", creator]\n const [creatorFeeTreasury] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"creator_fee_treasury\"), creatorOverride.toBuffer()],\n this.anchorClient.program.programId\n );\n\n try {\n // Add compute budget instruction to handle complex transaction\n const computeBudgetIx = ComputeBudgetProgram.setComputeUnitLimit({\n units: 400_000,\n });\n\n // 5. Direct program method call for V2\n const txSignature = await (this.anchorClient.program.methods as any)\n .createMarketV2(question, initialLiquidityBN, endTimeBN, creatorOverride)\n .accounts({\n payer: this.anchorClient.walletPublicKey,\n creator: creatorOverride,\n market: market,\n globalConfig: globalConfig,\n collateralTokenMint: collateralTokenMint,\n payerCollateralTokenAccount: payerCollateralTokenAccount,\n marketReserveVault: marketReserveVault,\n creatorFeeTreasury: creatorFeeTreasury,\n tokenProgram: TOKEN_PROGRAM_ID,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n })\n .preInstructions([computeBudgetIx])\n .signers([this.anchorClient.signer])\n .rpc();\n\n console.log(\"✅ Market created successfully!\");\n console.log(\"Transaction signature:\", txSignature);\n\n // 6. Fetch and display the created market (optional)\n try {\n const marketAccount = await (this.anchorClient.program.account as any).market.fetch(market);\n console.log(\"\\n📊 Market Details:\");\n console.log(\"------------------------\");\n console.log(\"Market ID:\", marketAccount.id.toString());\n console.log(\"Question:\", marketAccount.question);\n console.log(\"Creator:\", marketAccount.creator.toBase58());\n console.log(\"Initial Liquidity:\", marketAccount.initialLiquidity.toString());\n console.log(\"Market Reserves:\", marketAccount.marketReserves.toString());\n console.log(\"End Time:\", new Date(marketAccount.endTime.toNumber() * 1000).toISOString());\n console.log(\"Resolved:\", marketAccount.resolved);\n console.log(\"------------------------\");\n\n return {\n signature: txSignature,\n market,\n marketDetails: marketAccount\n };\n } catch (err) {\n // Return basic info even if we can't fetch market details\n return {\n signature: txSignature,\n market,\n };\n }\n } catch (error: any) {\n console.error(\"💥 Error creating market:\", error);\n \n if (error.logs) {\n console.error(\"Program logs:\");\n error.logs.forEach((log: string) => console.error(\" \", log));\n }\n \n throw error;\n }\n }\n}\n"],"mappings":"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","names":["PublicKey","PublicKey","SystemProgram","DEBUG","TOKEN_PROGRAM_ID","ASSOCIATED_TOKEN_PROGRAM_ID","DEBUG","PublicKey","SystemProgram","PublicKey","SystemProgram","z","TransactionInstruction","TransactionInstruction","TOKEN_PROGRAM_ID","ASSOCIATED_TOKEN_PROGRAM_ID","z","PublicKey","SystemProgram","PublicKey","z","TransactionInstruction","TransactionInstruction","z","PublicKey","PublicKey","Keypair","SystemProgram","VersionedTransaction","BN","BN","PublicKey","SystemProgram","ComputeBudgetProgram","TOKEN_PROGRAM_ID","ASSOCIATED_TOKEN_PROGRAM_ID","PublicKey","ComputeBudgetProgram","TOKEN_PROGRAM_ID","ASSOCIATED_TOKEN_PROGRAM_ID","SystemProgram","ASSOCIATED_TOKEN_PROGRAM_ID","TOKEN_2022_PROGRAM_ID","TOKEN_PROGRAM_ID","getAssociatedTokenAddressSync","Keypair","PublicKey","SystemProgram"]}