@gabox-labs/sdk 0.7.1 → 0.9.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,"file":"gabox-CuyJYmrS.js","names":[],"sources":["../src/generated/types/tier.ts","../src/generated/accounts/draw.ts","../src/generated/accounts/pool.ts","../src/generated/accounts/walletActivity.ts","../src/generated/pdas/activity.ts","../src/generated/pdas/draw.ts","../src/generated/pdas/identity.ts","../src/generated/pdas/pool.ts","../src/generated/instructions/buyPacks.ts","../src/generated/instructions/claimPrize.ts","../src/generated/instructions/claimPrizeTo.ts","../src/generated/instructions/deliverDraw.ts","../src/generated/instructions/expireDraw.ts","../src/generated/instructions/fundPrizes.ts","../src/generated/instructions/initializePool.ts","../src/generated/instructions/retryDraw.ts","../src/generated/instructions/sellTokens.ts","../src/generated/programs/gabox.ts"],"sourcesContent":["/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { combineCodec, getStructDecoder, getStructEncoder, getU32Decoder, getU32Encoder, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder } from '@solana/kit';\n\n/** Counts, not cumulative thresholds. Zero-ticket entries must be all zero. */\nexport type Tier = { multiplierBps: number; tickets: number; };\n\nexport type TierArgs = Tier;\n\nexport function getTierEncoder(): FixedSizeEncoder<TierArgs> {\n return getStructEncoder([['multiplierBps', getU32Encoder()], ['tickets', getU32Encoder()]]);\n}\n\nexport function getTierDecoder(): FixedSizeDecoder<Tier> {\n return getStructDecoder([['multiplierBps', getU32Decoder()], ['tickets', getU32Decoder()]]);\n}\n\nexport function getTierCodec(): FixedSizeCodec<TierArgs, Tier> {\n return combineCodec(getTierEncoder(), getTierDecoder());\n}","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { assertAccountExists, assertAccountsExist, combineCodec, decodeAccount, fetchEncodedAccount, fetchEncodedAccounts, fixDecoderSize, fixEncoderSize, getAddressDecoder, getAddressEncoder, getArrayDecoder, getArrayEncoder, getBooleanDecoder, getBooleanEncoder, getBytesDecoder, getBytesEncoder, getStructDecoder, getStructEncoder, getU64Decoder, getU64Encoder, getU8Decoder, getU8Encoder, transformEncoder, type Account, type Address, type EncodedAccount, type FetchAccountConfig, type FetchAccountsConfig, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type MaybeAccount, type MaybeEncodedAccount, type ReadonlyUint8Array } from '@solana/kit';\nimport { getTierDecoder, getTierEncoder, type Tier, type TierArgs } from '../types';\n\nexport const DRAW_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([27, 129, 22, 20, 6, 20, 18, 20]);\n\nexport function getDrawDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(DRAW_DISCRIMINATOR); }\n\nexport type Draw = { discriminator: ReadonlyUint8Array; pool: Address; purchaser: Address;\n/**\n * Chosen by the buyer's client and part of the seeds, so two buyers, or\n * two transactions of one buyer, never name the same account.\n */\nnonce: bigint; bump: number;\n/**\n * Sequence number of the first pack; pack k has `seq_start + k`. Unique\n * per pool for ever. Every randomness request of this draw carries it\n * as the callback argument, and `deliver_draw` requires a match, so a\n * request can only ever settle the purchase that made it.\n */\nseqStart: bigint;\n/** 1 to `MAX_BATCH_SIZE`. */\ncount: number; requestSlot: bigint; lastAttemptSlot: bigint; attempts: number;\n/**\n * The pool's tier table and pack size at purchase. Settlement reads\n * these, never the pool, so a pending draw keeps the terms it was bought\n * under whatever a later program version does.\n */\ntiers: Array<Tier>; packTokens: bigint;\n/** `vault - reserved` at purchase, before this batch's own tokens. */\nfreeSnapshot: bigint;\n/**\n * What this draw holds in `pool.reserved`. While pending, the purchase\n * reservation `min(count * uncapped_maximum, free_snapshot + count *\n * pack_tokens)`, which settlement never exceeds. Once settled as owed,\n * the owed amount, until a claim pays it.\n */\nreserved: bigint;\n/** True once the callback or expiry fixed the outcome. */\nsettled: boolean;\n/** Written at settlement. All zero when `timed_out`. */\nrandomness: ReadonlyUint8Array; timedOut: boolean;\n/**\n * Tokens a claim still has to pay, when the callback could not pay the\n * purchaser directly. Zero on the normal path. A claim pays this number\n * as written.\n */\nowed: bigint; };\n\nexport type DrawArgs = { pool: Address; purchaser: Address;\n/**\n * Chosen by the buyer's client and part of the seeds, so two buyers, or\n * two transactions of one buyer, never name the same account.\n */\nnonce: number | bigint; bump: number;\n/**\n * Sequence number of the first pack; pack k has `seq_start + k`. Unique\n * per pool for ever. Every randomness request of this draw carries it\n * as the callback argument, and `deliver_draw` requires a match, so a\n * request can only ever settle the purchase that made it.\n */\nseqStart: number | bigint;\n/** 1 to `MAX_BATCH_SIZE`. */\ncount: number; requestSlot: number | bigint; lastAttemptSlot: number | bigint; attempts: number;\n/**\n * The pool's tier table and pack size at purchase. Settlement reads\n * these, never the pool, so a pending draw keeps the terms it was bought\n * under whatever a later program version does.\n */\ntiers: Array<TierArgs>; packTokens: number | bigint;\n/** `vault - reserved` at purchase, before this batch's own tokens. */\nfreeSnapshot: number | bigint;\n/**\n * What this draw holds in `pool.reserved`. While pending, the purchase\n * reservation `min(count * uncapped_maximum, free_snapshot + count *\n * pack_tokens)`, which settlement never exceeds. Once settled as owed,\n * the owed amount, until a claim pays it.\n */\nreserved: number | bigint;\n/** True once the callback or expiry fixed the outcome. */\nsettled: boolean;\n/** Written at settlement. All zero when `timed_out`. */\nrandomness: ReadonlyUint8Array; timedOut: boolean;\n/**\n * Tokens a claim still has to pay, when the callback could not pay the\n * purchaser directly. Zero on the normal path. A claim pays this number\n * as written.\n */\nowed: number | bigint; };\n\n/** Gets the encoder for {@link DrawArgs} account data. */\nexport function getDrawEncoder(): FixedSizeEncoder<DrawArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['pool', getAddressEncoder()], ['purchaser', getAddressEncoder()], ['nonce', getU64Encoder()], ['bump', getU8Encoder()], ['seqStart', getU64Encoder()], ['count', getU8Encoder()], ['requestSlot', getU64Encoder()], ['lastAttemptSlot', getU64Encoder()], ['attempts', getU8Encoder()], ['tiers', getArrayEncoder(getTierEncoder(), { size: 8 })], ['packTokens', getU64Encoder()], ['freeSnapshot', getU64Encoder()], ['reserved', getU64Encoder()], ['settled', getBooleanEncoder()], ['randomness', fixEncoderSize(getBytesEncoder(), 32)], ['timedOut', getBooleanEncoder()], ['owed', getU64Encoder()]]), (value) => ({ ...value, discriminator: DRAW_DISCRIMINATOR }));\n}\n\n/** Gets the decoder for {@link Draw} account data. */\nexport function getDrawDecoder(): FixedSizeDecoder<Draw> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['pool', getAddressDecoder()], ['purchaser', getAddressDecoder()], ['nonce', getU64Decoder()], ['bump', getU8Decoder()], ['seqStart', getU64Decoder()], ['count', getU8Decoder()], ['requestSlot', getU64Decoder()], ['lastAttemptSlot', getU64Decoder()], ['attempts', getU8Decoder()], ['tiers', getArrayDecoder(getTierDecoder(), { size: 8 })], ['packTokens', getU64Decoder()], ['freeSnapshot', getU64Decoder()], ['reserved', getU64Decoder()], ['settled', getBooleanDecoder()], ['randomness', fixDecoderSize(getBytesDecoder(), 32)], ['timedOut', getBooleanDecoder()], ['owed', getU64Decoder()]]);\n}\n\n/** Gets the codec for {@link Draw} account data. */\nexport function getDrawCodec(): FixedSizeCodec<DrawArgs, Draw> {\n return combineCodec(getDrawEncoder(), getDrawDecoder());\n}\n\nexport function decodeDraw<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress>): Account<Draw, TAddress>;\nexport function decodeDraw<TAddress extends string = string>(encodedAccount: MaybeEncodedAccount<TAddress>): MaybeAccount<Draw, TAddress>;\nexport function decodeDraw<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>): Account<Draw, TAddress> | MaybeAccount<Draw, TAddress> {\n return decodeAccount(encodedAccount as MaybeEncodedAccount<TAddress>, getDrawDecoder());\n}\n\nexport async function fetchDraw<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<Draw, TAddress>> {\n const maybeAccount = await fetchMaybeDraw(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeDraw<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<Draw, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeDraw(maybeAccount);\n}\n\nexport async function fetchAllDraw(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<Draw>[]> {\n const maybeAccounts = await fetchAllMaybeDraw(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeDraw(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Draw>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeDraw(maybeAccount));\n}\n\nexport function getDrawSize(): number {\n return 237;\n}","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { assertAccountExists, assertAccountsExist, combineCodec, decodeAccount, fetchEncodedAccount, fetchEncodedAccounts, fixDecoderSize, fixEncoderSize, getAddressDecoder, getAddressEncoder, getArrayDecoder, getArrayEncoder, getBytesDecoder, getBytesEncoder, getStructDecoder, getStructEncoder, getU64Decoder, getU64Encoder, getU8Decoder, getU8Encoder, transformEncoder, type Account, type Address, type EncodedAccount, type FetchAccountConfig, type FetchAccountsConfig, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type MaybeAccount, type MaybeEncodedAccount, type ReadonlyUint8Array } from '@solana/kit';\nimport { getTierDecoder, getTierEncoder, type Tier, type TierArgs } from '../types';\n\nexport const POOL_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([48, 150, 170, 25, 50, 211, 226, 239]);\n\nexport function getPoolDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(POOL_DISCRIMINATOR); }\n\nexport type Pool = { discriminator: ReadonlyUint8Array;\n/**\n * The coin creator. LaunchLab pays its creator fee to this wallet, and\n * the CPMM pool created at graduation names the same wallet.\n */\ncreator: Address; mint: Address; vault: Address;\n/** The quote asset of both venues: any mint Raydium enabled on LaunchLab. */\nquoteMint: Address; bump: number;\n/**\n * Fixed token count of one pack, in base units. Always `PACK_TOKENS`.\n * The venue decides what that costs in the quote asset.\n */\npackTokens: bigint;\n/** Raw quote token spent in the seed purchase. */\nseedQuoteAmount: bigint; tiers: Array<Tier>; nextSeq: bigint;\n/**\n * Tokens the vault must keep for pending draws: every pending batch's\n * `Draw::reserved`, plus every settled but unclaimed draw's `owed`.\n * Never creator revenue.\n */\nreserved: bigint;\n/**\n * The LaunchLab global config for this pool's quote mint. Raydium's\n * admin is the only wallet that can create one, so a launch that names\n * it proves Raydium enabled that quote. Both venues check the trade\n * against this stored value.\n */\nquoteConfig: Address;\n/**\n * The token program that owns the quote mint: classic SPL Token, or\n * Token-2022 with the profile `tokens::validate_quote_mint` accepts.\n * The base coin is always classic SPL Token, so it needs no field.\n */\nquoteTokenProgram: Address; };\n\nexport type PoolArgs = {\n/**\n * The coin creator. LaunchLab pays its creator fee to this wallet, and\n * the CPMM pool created at graduation names the same wallet.\n */\ncreator: Address; mint: Address; vault: Address;\n/** The quote asset of both venues: any mint Raydium enabled on LaunchLab. */\nquoteMint: Address; bump: number;\n/**\n * Fixed token count of one pack, in base units. Always `PACK_TOKENS`.\n * The venue decides what that costs in the quote asset.\n */\npackTokens: number | bigint;\n/** Raw quote token spent in the seed purchase. */\nseedQuoteAmount: number | bigint; tiers: Array<TierArgs>; nextSeq: number | bigint;\n/**\n * Tokens the vault must keep for pending draws: every pending batch's\n * `Draw::reserved`, plus every settled but unclaimed draw's `owed`.\n * Never creator revenue.\n */\nreserved: number | bigint;\n/**\n * The LaunchLab global config for this pool's quote mint. Raydium's\n * admin is the only wallet that can create one, so a launch that names\n * it proves Raydium enabled that quote. Both venues check the trade\n * against this stored value.\n */\nquoteConfig: Address;\n/**\n * The token program that owns the quote mint: classic SPL Token, or\n * Token-2022 with the profile `tokens::validate_quote_mint` accepts.\n * The base coin is always classic SPL Token, so it needs no field.\n */\nquoteTokenProgram: Address; };\n\n/** Gets the encoder for {@link PoolArgs} account data. */\nexport function getPoolEncoder(): FixedSizeEncoder<PoolArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['creator', getAddressEncoder()], ['mint', getAddressEncoder()], ['vault', getAddressEncoder()], ['quoteMint', getAddressEncoder()], ['bump', getU8Encoder()], ['packTokens', getU64Encoder()], ['seedQuoteAmount', getU64Encoder()], ['tiers', getArrayEncoder(getTierEncoder(), { size: 8 })], ['nextSeq', getU64Encoder()], ['reserved', getU64Encoder()], ['quoteConfig', getAddressEncoder()], ['quoteTokenProgram', getAddressEncoder()]]), (value) => ({ ...value, discriminator: POOL_DISCRIMINATOR }));\n}\n\n/** Gets the decoder for {@link Pool} account data. */\nexport function getPoolDecoder(): FixedSizeDecoder<Pool> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['creator', getAddressDecoder()], ['mint', getAddressDecoder()], ['vault', getAddressDecoder()], ['quoteMint', getAddressDecoder()], ['bump', getU8Decoder()], ['packTokens', getU64Decoder()], ['seedQuoteAmount', getU64Decoder()], ['tiers', getArrayDecoder(getTierDecoder(), { size: 8 })], ['nextSeq', getU64Decoder()], ['reserved', getU64Decoder()], ['quoteConfig', getAddressDecoder()], ['quoteTokenProgram', getAddressDecoder()]]);\n}\n\n/** Gets the codec for {@link Pool} account data. */\nexport function getPoolCodec(): FixedSizeCodec<PoolArgs, Pool> {\n return combineCodec(getPoolEncoder(), getPoolDecoder());\n}\n\nexport function decodePool<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress>): Account<Pool, TAddress>;\nexport function decodePool<TAddress extends string = string>(encodedAccount: MaybeEncodedAccount<TAddress>): MaybeAccount<Pool, TAddress>;\nexport function decodePool<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>): Account<Pool, TAddress> | MaybeAccount<Pool, TAddress> {\n return decodeAccount(encodedAccount as MaybeEncodedAccount<TAddress>, getPoolDecoder());\n}\n\nexport async function fetchPool<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<Pool, TAddress>> {\n const maybeAccount = await fetchMaybePool(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybePool<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<Pool, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodePool(maybeAccount);\n}\n\nexport async function fetchAllPool(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<Pool>[]> {\n const maybeAccounts = await fetchAllMaybePool(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybePool(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Pool>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodePool(maybeAccount));\n}\n\nexport function getPoolSize(): number {\n return 297;\n}","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { assertAccountExists, assertAccountsExist, combineCodec, decodeAccount, fetchEncodedAccount, fetchEncodedAccounts, fixDecoderSize, fixEncoderSize, getAddressDecoder, getAddressEncoder, getBytesDecoder, getBytesEncoder, getStructDecoder, getStructEncoder, getU64Decoder, getU64Encoder, getU8Decoder, getU8Encoder, transformEncoder, type Account, type Address, type EncodedAccount, type FetchAccountConfig, type FetchAccountsConfig, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type MaybeAccount, type MaybeEncodedAccount, type ReadonlyUint8Array } from '@solana/kit';\n\nexport const WALLET_ACTIVITY_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([212, 80, 180, 131, 173, 1, 252, 141]);\n\nexport function getWalletActivityDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(WALLET_ACTIVITY_DISCRIMINATOR); }\n\nexport type WalletActivity = { discriminator: ReadonlyUint8Array; wallet: Address; bump: number;\n/** Packs this wallet bought, across every pool. */\npacksBought: bigint;\n/**\n * Lamports this wallet paid for packs in SOL-quoted pools: what the\n * venue charged in WSOL, which is SOL. Gabox charges no fee. Gabox's own\n * rent (draw, activity, the token ATA), VRF fees, and buys in a non-SOL\n * quote asset add nothing here.\n */\nnativeSpent: bigint;\n/**\n * Reserved for future fields. A layout change that needs more than\n * this still needs a new seed prefix, since this account has no\n * close instruction and old accounts cannot be dropped.\n */\nreserved: ReadonlyUint8Array; };\n\nexport type WalletActivityArgs = { wallet: Address; bump: number;\n/** Packs this wallet bought, across every pool. */\npacksBought: number | bigint;\n/**\n * Lamports this wallet paid for packs in SOL-quoted pools: what the\n * venue charged in WSOL, which is SOL. Gabox charges no fee. Gabox's own\n * rent (draw, activity, the token ATA), VRF fees, and buys in a non-SOL\n * quote asset add nothing here.\n */\nnativeSpent: number | bigint;\n/**\n * Reserved for future fields. A layout change that needs more than\n * this still needs a new seed prefix, since this account has no\n * close instruction and old accounts cannot be dropped.\n */\nreserved: ReadonlyUint8Array; };\n\n/** Gets the encoder for {@link WalletActivityArgs} account data. */\nexport function getWalletActivityEncoder(): FixedSizeEncoder<WalletActivityArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['wallet', getAddressEncoder()], ['bump', getU8Encoder()], ['packsBought', getU64Encoder()], ['nativeSpent', getU64Encoder()], ['reserved', fixEncoderSize(getBytesEncoder(), 64)]]), (value) => ({ ...value, discriminator: WALLET_ACTIVITY_DISCRIMINATOR }));\n}\n\n/** Gets the decoder for {@link WalletActivity} account data. */\nexport function getWalletActivityDecoder(): FixedSizeDecoder<WalletActivity> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['wallet', getAddressDecoder()], ['bump', getU8Decoder()], ['packsBought', getU64Decoder()], ['nativeSpent', getU64Decoder()], ['reserved', fixDecoderSize(getBytesDecoder(), 64)]]);\n}\n\n/** Gets the codec for {@link WalletActivity} account data. */\nexport function getWalletActivityCodec(): FixedSizeCodec<WalletActivityArgs, WalletActivity> {\n return combineCodec(getWalletActivityEncoder(), getWalletActivityDecoder());\n}\n\nexport function decodeWalletActivity<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress>): Account<WalletActivity, TAddress>;\nexport function decodeWalletActivity<TAddress extends string = string>(encodedAccount: MaybeEncodedAccount<TAddress>): MaybeAccount<WalletActivity, TAddress>;\nexport function decodeWalletActivity<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>): Account<WalletActivity, TAddress> | MaybeAccount<WalletActivity, TAddress> {\n return decodeAccount(encodedAccount as MaybeEncodedAccount<TAddress>, getWalletActivityDecoder());\n}\n\nexport async function fetchWalletActivity<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<WalletActivity, TAddress>> {\n const maybeAccount = await fetchMaybeWalletActivity(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeWalletActivity<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<WalletActivity, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeWalletActivity(maybeAccount);\n}\n\nexport async function fetchAllWalletActivity(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<WalletActivity>[]> {\n const maybeAccounts = await fetchAllMaybeWalletActivity(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeWalletActivity(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<WalletActivity>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeWalletActivity(maybeAccount));\n}\n\nexport function getWalletActivitySize(): number {\n return 121;\n}","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { getAddressEncoder, getBytesEncoder, getProgramDerivedAddress, type Address, type ProgramDerivedAddress } from '@solana/kit';\n\nexport type ActivitySeeds = {\npurchaser: Address;\n};\n\nexport async function findActivityPda(seeds: ActivitySeeds, config: { programAddress?: Address | undefined } = {}): Promise<ProgramDerivedAddress> {\n const { programAddress = 'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA' as Address<'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA'> } = config;\n return await getProgramDerivedAddress({ programAddress, seeds: [getBytesEncoder().encode(new Uint8Array([97, 99, 116, 105, 118, 105, 116, 121])), getAddressEncoder().encode(seeds.purchaser)]});\n}","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { getAddressEncoder, getBytesEncoder, getProgramDerivedAddress, getU64Encoder, type Address, type ProgramDerivedAddress } from '@solana/kit';\n\nexport type DrawSeeds = {\npool: Address;\npurchaser: Address;\nnonce: number | bigint;\n};\n\nexport async function findDrawPda(seeds: DrawSeeds, config: { programAddress?: Address | undefined } = {}): Promise<ProgramDerivedAddress> {\n const { programAddress = 'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA' as Address<'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA'> } = config;\n return await getProgramDerivedAddress({ programAddress, seeds: [getBytesEncoder().encode(new Uint8Array([100, 114, 97, 119])), getAddressEncoder().encode(seeds.pool), getAddressEncoder().encode(seeds.purchaser), getU64Encoder().encode(seeds.nonce)]});\n}","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { getBytesEncoder, getProgramDerivedAddress, type Address, type ProgramDerivedAddress } from '@solana/kit';\n\nexport async function findIdentityPda(config: { programAddress?: Address | undefined } = {}): Promise<ProgramDerivedAddress> {\n const { programAddress = 'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA' as Address<'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA'> } = config;\n return await getProgramDerivedAddress({ programAddress, seeds: [getBytesEncoder().encode(new Uint8Array([105, 100, 101, 110, 116, 105, 116, 121]))]});\n}","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { getAddressEncoder, getBytesEncoder, getProgramDerivedAddress, type Address, type ProgramDerivedAddress } from '@solana/kit';\n\nexport type PoolSeeds = {\nmint: Address;\n};\n\nexport async function findPoolPda(seeds: PoolSeeds, config: { programAddress?: Address | undefined } = {}): Promise<ProgramDerivedAddress> {\n const { programAddress = 'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA' as Address<'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA'> } = config;\n return await getProgramDerivedAddress({ programAddress, seeds: [getBytesEncoder().encode(new Uint8Array([112, 111, 111, 108])), getAddressEncoder().encode(seeds.mint)]});\n}","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { combineCodec, fixDecoderSize, fixEncoderSize, getAddressEncoder, getBytesDecoder, getBytesEncoder, getProgramDerivedAddress, getStructDecoder, getStructEncoder, getU64Decoder, getU64Encoder, getU8Decoder, getU8Encoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder, type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type WritableSignerAccount } from '@solana/kit';\nimport { getAccountMetaFactory, getAddressFromResolvedInstructionAccount, getNonNullResolvedInstructionInput, type ResolvedInstructionAccount } from '@solana/program-client-core';\nimport { findActivityPda, findDrawPda, findIdentityPda, findPoolPda } from '../pdas';\nimport { GABOX_PROGRAM_ADDRESS } from '../programs';\n\nexport const BUY_PACKS_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([136, 30, 10, 209, 228, 139, 105, 138]);\n\nexport function getBuyPacksDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(BUY_PACKS_DISCRIMINATOR); }\n\nexport type BuyPacksInstruction<TProgram extends string = typeof GABOX_PROGRAM_ADDRESS, TAccountPurchaser extends string | AccountMeta<string> = string, TAccountPool extends string | AccountMeta<string> = string, TAccountDraw extends string | AccountMeta<string> = string, TAccountActivity extends string | AccountMeta<string> = string, TAccountMint extends string | AccountMeta<string> = string, TAccountQuoteMint extends string | AccountMeta<string> = string, TAccountVault extends string | AccountMeta<string> = string, TAccountUserTokens extends string | AccountMeta<string> = string, TAccountVenue extends string | AccountMeta<string> = string, TAccountIdentity extends string | AccountMeta<string> = string, TAccountQueue extends string | AccountMeta<string> = \"Cuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh\", TAccountProgram extends string | AccountMeta<string> = \"Vrf1RNUjXmQGjmQrQLvJHs9SNkvDJEsRVFPkfSQUwGz\", TAccountSlotHashes extends string | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\", TAccountTokenProgram extends string | AccountMeta<string> = \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\", TAccountQuoteTokenProgram extends string | AccountMeta<string> = string, TAccountAssociatedTokenProgram extends string | AccountMeta<string> = \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\", TAccountSystemProgram extends string | AccountMeta<string> = \"11111111111111111111111111111111\", TRemainingAccounts extends readonly AccountMeta<string>[] = []> =\nInstruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountPurchaser extends string ? WritableSignerAccount<TAccountPurchaser> & AccountSignerMeta<TAccountPurchaser> : TAccountPurchaser, TAccountPool extends string ? WritableAccount<TAccountPool> : TAccountPool, TAccountDraw extends string ? WritableAccount<TAccountDraw> : TAccountDraw, TAccountActivity extends string ? WritableAccount<TAccountActivity> : TAccountActivity, TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint, TAccountQuoteMint extends string ? ReadonlyAccount<TAccountQuoteMint> : TAccountQuoteMint, TAccountVault extends string ? WritableAccount<TAccountVault> : TAccountVault, TAccountUserTokens extends string ? WritableAccount<TAccountUserTokens> : TAccountUserTokens, TAccountVenue extends string ? ReadonlyAccount<TAccountVenue> : TAccountVenue, TAccountIdentity extends string ? ReadonlyAccount<TAccountIdentity> : TAccountIdentity, TAccountQueue extends string ? WritableAccount<TAccountQueue> : TAccountQueue, TAccountProgram extends string ? ReadonlyAccount<TAccountProgram> : TAccountProgram, TAccountSlotHashes extends string ? ReadonlyAccount<TAccountSlotHashes> : TAccountSlotHashes, TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram, TAccountQuoteTokenProgram extends string ? ReadonlyAccount<TAccountQuoteTokenProgram> : TAccountQuoteTokenProgram, TAccountAssociatedTokenProgram extends string ? ReadonlyAccount<TAccountAssociatedTokenProgram> : TAccountAssociatedTokenProgram, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, ...TRemainingAccounts]>;\n\nexport type BuyPacksInstructionData = { discriminator: ReadonlyUint8Array; count: number; nonce: bigint; maxQuoteIn: bigint; minFirstMaximum: bigint; maxNativeDebit: bigint; };\n\nexport type BuyPacksInstructionDataArgs = { count: number; nonce: number | bigint; maxQuoteIn: number | bigint; minFirstMaximum: number | bigint; maxNativeDebit: number | bigint; };\n\nexport function getBuyPacksInstructionDataEncoder(): FixedSizeEncoder<BuyPacksInstructionDataArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['count', getU8Encoder()], ['nonce', getU64Encoder()], ['maxQuoteIn', getU64Encoder()], ['minFirstMaximum', getU64Encoder()], ['maxNativeDebit', getU64Encoder()]]), (value) => ({ ...value, discriminator: BUY_PACKS_DISCRIMINATOR }));\n}\n\nexport function getBuyPacksInstructionDataDecoder(): FixedSizeDecoder<BuyPacksInstructionData> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['count', getU8Decoder()], ['nonce', getU64Decoder()], ['maxQuoteIn', getU64Decoder()], ['minFirstMaximum', getU64Decoder()], ['maxNativeDebit', getU64Decoder()]]);\n}\n\nexport function getBuyPacksInstructionDataCodec(): FixedSizeCodec<BuyPacksInstructionDataArgs, BuyPacksInstructionData> {\n return combineCodec(getBuyPacksInstructionDataEncoder(), getBuyPacksInstructionDataDecoder());\n}\n\nexport type BuyPacksAsyncInput<TAccountPurchaser extends string = string, TAccountPool extends string = string, TAccountDraw extends string = string, TAccountActivity extends string = string, TAccountMint extends string = string, TAccountQuoteMint extends string = string, TAccountVault extends string = string, TAccountUserTokens extends string = string, TAccountVenue extends string = string, TAccountIdentity extends string = string, TAccountQueue extends string = string, TAccountProgram extends string = string, TAccountSlotHashes extends string = string, TAccountTokenProgram extends string = string, TAccountQuoteTokenProgram extends string = string, TAccountAssociatedTokenProgram extends string = string, TAccountSystemProgram extends string = string> = {\n purchaser: TransactionSigner<TAccountPurchaser>;\npool?: Address<TAccountPool>;\n/**\n * The nonce is the buyer's. Two buyers, or two transactions of one\n * buyer, never name the same draw, so concurrent purchases do not\n * collide. A nonce still in use fails here at `init`.\n */\ndraw?: Address<TAccountDraw>;\n/**\n * Rent for this account (when it is first created) is outside\n * `total_native_debit`, the same as `draw`'s rent: Anchor's `init_if_needed`\n * runs before the handler body executes, so `before_native` is already\n * sampled after this account exists.\n */\nactivity?: Address<TAccountActivity>;\nmint: Address<TAccountMint>;\nquoteMint: Address<TAccountQuoteMint>;\nvault: Address<TAccountVault>;\nuserTokens?: Address<TAccountUserTokens>;\n/** LaunchLab before graduation, CPMM after it. */\nvenue: Address<TAccountVenue>;\nidentity?: Address<TAccountIdentity>;\nqueue?: Address<TAccountQueue>;\nprogram?: Address<TAccountProgram>;\nslotHashes?: Address<TAccountSlotHashes>;\ntokenProgram?: Address<TAccountTokenProgram>;\nquoteTokenProgram: Address<TAccountQuoteTokenProgram>;\nassociatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\nsystemProgram?: Address<TAccountSystemProgram>;\ncount: BuyPacksInstructionDataArgs[\"count\"];\nnonce: BuyPacksInstructionDataArgs[\"nonce\"];\nmaxQuoteIn: BuyPacksInstructionDataArgs[\"maxQuoteIn\"];\nminFirstMaximum: BuyPacksInstructionDataArgs[\"minFirstMaximum\"];\nmaxNativeDebit: BuyPacksInstructionDataArgs[\"maxNativeDebit\"];\n}\n\nexport async function getBuyPacksInstructionAsync<TAccountPurchaser extends string, TAccountPool extends string, TAccountDraw extends string, TAccountActivity extends string, TAccountMint extends string, TAccountQuoteMint extends string, TAccountVault extends string, TAccountUserTokens extends string, TAccountVenue extends string, TAccountIdentity extends string, TAccountQueue extends string, TAccountProgram extends string, TAccountSlotHashes extends string, TAccountTokenProgram extends string, TAccountQuoteTokenProgram extends string, TAccountAssociatedTokenProgram extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof GABOX_PROGRAM_ADDRESS>(input: BuyPacksAsyncInput<TAccountPurchaser, TAccountPool, TAccountDraw, TAccountActivity, TAccountMint, TAccountQuoteMint, TAccountVault, TAccountUserTokens, TAccountVenue, TAccountIdentity, TAccountQueue, TAccountProgram, TAccountSlotHashes, TAccountTokenProgram, TAccountQuoteTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>, config?: { programAddress?: TProgramAddress } ): Promise<BuyPacksInstruction<TProgramAddress, TAccountPurchaser, TAccountPool, TAccountDraw, TAccountActivity, TAccountMint, TAccountQuoteMint, TAccountVault, TAccountUserTokens, TAccountVenue, TAccountIdentity, TAccountQueue, TAccountProgram, TAccountSlotHashes, TAccountTokenProgram, TAccountQuoteTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { purchaser: { value: input.purchaser ?? null, isWritable: true }, pool: { value: input.pool ?? null, isWritable: true }, draw: { value: input.draw ?? null, isWritable: true }, activity: { value: input.activity ?? null, isWritable: true }, mint: { value: input.mint ?? null, isWritable: false }, quoteMint: { value: input.quoteMint ?? null, isWritable: false }, vault: { value: input.vault ?? null, isWritable: true }, userTokens: { value: input.userTokens ?? null, isWritable: true }, venue: { value: input.venue ?? null, isWritable: false }, identity: { value: input.identity ?? null, isWritable: false }, queue: { value: input.queue ?? null, isWritable: true }, program: { value: input.program ?? null, isWritable: false }, slotHashes: { value: input.slotHashes ?? null, isWritable: false }, tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, quoteTokenProgram: { value: input.quoteTokenProgram ?? null, isWritable: false }, associatedTokenProgram: { value: input.associatedTokenProgram ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Original args.\nconst args = { ...input, };\n\n\n// Resolve default values.\nif (!accounts.pool.value) {\naccounts.pool.value = await findPoolPda({ mint: getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value) }, { programAddress });\n}\nif (!accounts.draw.value) {\naccounts.draw.value = await findDrawPda({ pool: getAddressFromResolvedInstructionAccount(\"pool\", accounts.pool.value), purchaser: getAddressFromResolvedInstructionAccount(\"purchaser\", accounts.purchaser.value), nonce: getNonNullResolvedInstructionInput(\"nonce\", args.nonce) }, { programAddress });\n}\nif (!accounts.activity.value) {\naccounts.activity.value = await findActivityPda({ purchaser: getAddressFromResolvedInstructionAccount(\"purchaser\", accounts.purchaser.value) }, { programAddress });\n}\nif (!accounts.userTokens.value) {\naccounts.userTokens.value = await getProgramDerivedAddress({ programAddress: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>, seeds: [getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"purchaser\", accounts.purchaser.value)), getBytesEncoder().encode(new Uint8Array([6, 221, 246, 225, 215, 101, 161, 147, 217, 203, 225, 70, 206, 235, 121, 172, 28, 180, 133, 237, 95, 91, 55, 145, 58, 140, 245, 133, 126, 255, 0, 169])), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value))] });\n}\nif (!accounts.identity.value) {\naccounts.identity.value = await findIdentityPda({ programAddress });\n}\nif (!accounts.queue.value) {\naccounts.queue.value = 'Cuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh' as Address<'Cuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh'>;\n}\nif (!accounts.program.value) {\naccounts.program.value = 'Vrf1RNUjXmQGjmQrQLvJHs9SNkvDJEsRVFPkfSQUwGz' as Address<'Vrf1RNUjXmQGjmQrQLvJHs9SNkvDJEsRVFPkfSQUwGz'>;\n}\nif (!accounts.slotHashes.value) {\naccounts.slotHashes.value = 'SysvarS1otHashes111111111111111111111111111' as Address<'SysvarS1otHashes111111111111111111111111111'>;\n}\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\nif (!accounts.associatedTokenProgram.value) {\naccounts.associatedTokenProgram.value = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n}\nif (!accounts.systemProgram.value) {\naccounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"purchaser\", accounts.purchaser), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"draw\", accounts.draw), getAccountMeta(\"activity\", accounts.activity), getAccountMeta(\"mint\", accounts.mint), getAccountMeta(\"quoteMint\", accounts.quoteMint), getAccountMeta(\"vault\", accounts.vault), getAccountMeta(\"userTokens\", accounts.userTokens), getAccountMeta(\"venue\", accounts.venue), getAccountMeta(\"identity\", accounts.identity), getAccountMeta(\"queue\", accounts.queue), getAccountMeta(\"program\", accounts.program), getAccountMeta(\"slotHashes\", accounts.slotHashes), getAccountMeta(\"tokenProgram\", accounts.tokenProgram), getAccountMeta(\"quoteTokenProgram\", accounts.quoteTokenProgram), getAccountMeta(\"associatedTokenProgram\", accounts.associatedTokenProgram), getAccountMeta(\"systemProgram\", accounts.systemProgram)], data: getBuyPacksInstructionDataEncoder().encode(args as BuyPacksInstructionDataArgs), programAddress } as BuyPacksInstruction<TProgramAddress, TAccountPurchaser, TAccountPool, TAccountDraw, TAccountActivity, TAccountMint, TAccountQuoteMint, TAccountVault, TAccountUserTokens, TAccountVenue, TAccountIdentity, TAccountQueue, TAccountProgram, TAccountSlotHashes, TAccountTokenProgram, TAccountQuoteTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>);\n}\n\nexport type BuyPacksInput<TAccountPurchaser extends string = string, TAccountPool extends string = string, TAccountDraw extends string = string, TAccountActivity extends string = string, TAccountMint extends string = string, TAccountQuoteMint extends string = string, TAccountVault extends string = string, TAccountUserTokens extends string = string, TAccountVenue extends string = string, TAccountIdentity extends string = string, TAccountQueue extends string = string, TAccountProgram extends string = string, TAccountSlotHashes extends string = string, TAccountTokenProgram extends string = string, TAccountQuoteTokenProgram extends string = string, TAccountAssociatedTokenProgram extends string = string, TAccountSystemProgram extends string = string> = {\n purchaser: TransactionSigner<TAccountPurchaser>;\npool: Address<TAccountPool>;\n/**\n * The nonce is the buyer's. Two buyers, or two transactions of one\n * buyer, never name the same draw, so concurrent purchases do not\n * collide. A nonce still in use fails here at `init`.\n */\ndraw: Address<TAccountDraw>;\n/**\n * Rent for this account (when it is first created) is outside\n * `total_native_debit`, the same as `draw`'s rent: Anchor's `init_if_needed`\n * runs before the handler body executes, so `before_native` is already\n * sampled after this account exists.\n */\nactivity: Address<TAccountActivity>;\nmint: Address<TAccountMint>;\nquoteMint: Address<TAccountQuoteMint>;\nvault: Address<TAccountVault>;\nuserTokens: Address<TAccountUserTokens>;\n/** LaunchLab before graduation, CPMM after it. */\nvenue: Address<TAccountVenue>;\nidentity: Address<TAccountIdentity>;\nqueue?: Address<TAccountQueue>;\nprogram?: Address<TAccountProgram>;\nslotHashes?: Address<TAccountSlotHashes>;\ntokenProgram?: Address<TAccountTokenProgram>;\nquoteTokenProgram: Address<TAccountQuoteTokenProgram>;\nassociatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\nsystemProgram?: Address<TAccountSystemProgram>;\ncount: BuyPacksInstructionDataArgs[\"count\"];\nnonce: BuyPacksInstructionDataArgs[\"nonce\"];\nmaxQuoteIn: BuyPacksInstructionDataArgs[\"maxQuoteIn\"];\nminFirstMaximum: BuyPacksInstructionDataArgs[\"minFirstMaximum\"];\nmaxNativeDebit: BuyPacksInstructionDataArgs[\"maxNativeDebit\"];\n}\n\nexport function getBuyPacksInstruction<TAccountPurchaser extends string, TAccountPool extends string, TAccountDraw extends string, TAccountActivity extends string, TAccountMint extends string, TAccountQuoteMint extends string, TAccountVault extends string, TAccountUserTokens extends string, TAccountVenue extends string, TAccountIdentity extends string, TAccountQueue extends string, TAccountProgram extends string, TAccountSlotHashes extends string, TAccountTokenProgram extends string, TAccountQuoteTokenProgram extends string, TAccountAssociatedTokenProgram extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof GABOX_PROGRAM_ADDRESS>(input: BuyPacksInput<TAccountPurchaser, TAccountPool, TAccountDraw, TAccountActivity, TAccountMint, TAccountQuoteMint, TAccountVault, TAccountUserTokens, TAccountVenue, TAccountIdentity, TAccountQueue, TAccountProgram, TAccountSlotHashes, TAccountTokenProgram, TAccountQuoteTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>, config?: { programAddress?: TProgramAddress } ): BuyPacksInstruction<TProgramAddress, TAccountPurchaser, TAccountPool, TAccountDraw, TAccountActivity, TAccountMint, TAccountQuoteMint, TAccountVault, TAccountUserTokens, TAccountVenue, TAccountIdentity, TAccountQueue, TAccountProgram, TAccountSlotHashes, TAccountTokenProgram, TAccountQuoteTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { purchaser: { value: input.purchaser ?? null, isWritable: true }, pool: { value: input.pool ?? null, isWritable: true }, draw: { value: input.draw ?? null, isWritable: true }, activity: { value: input.activity ?? null, isWritable: true }, mint: { value: input.mint ?? null, isWritable: false }, quoteMint: { value: input.quoteMint ?? null, isWritable: false }, vault: { value: input.vault ?? null, isWritable: true }, userTokens: { value: input.userTokens ?? null, isWritable: true }, venue: { value: input.venue ?? null, isWritable: false }, identity: { value: input.identity ?? null, isWritable: false }, queue: { value: input.queue ?? null, isWritable: true }, program: { value: input.program ?? null, isWritable: false }, slotHashes: { value: input.slotHashes ?? null, isWritable: false }, tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, quoteTokenProgram: { value: input.quoteTokenProgram ?? null, isWritable: false }, associatedTokenProgram: { value: input.associatedTokenProgram ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Original args.\nconst args = { ...input, };\n\n\n// Resolve default values.\nif (!accounts.queue.value) {\naccounts.queue.value = 'Cuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh' as Address<'Cuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh'>;\n}\nif (!accounts.program.value) {\naccounts.program.value = 'Vrf1RNUjXmQGjmQrQLvJHs9SNkvDJEsRVFPkfSQUwGz' as Address<'Vrf1RNUjXmQGjmQrQLvJHs9SNkvDJEsRVFPkfSQUwGz'>;\n}\nif (!accounts.slotHashes.value) {\naccounts.slotHashes.value = 'SysvarS1otHashes111111111111111111111111111' as Address<'SysvarS1otHashes111111111111111111111111111'>;\n}\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\nif (!accounts.associatedTokenProgram.value) {\naccounts.associatedTokenProgram.value = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n}\nif (!accounts.systemProgram.value) {\naccounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"purchaser\", accounts.purchaser), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"draw\", accounts.draw), getAccountMeta(\"activity\", accounts.activity), getAccountMeta(\"mint\", accounts.mint), getAccountMeta(\"quoteMint\", accounts.quoteMint), getAccountMeta(\"vault\", accounts.vault), getAccountMeta(\"userTokens\", accounts.userTokens), getAccountMeta(\"venue\", accounts.venue), getAccountMeta(\"identity\", accounts.identity), getAccountMeta(\"queue\", accounts.queue), getAccountMeta(\"program\", accounts.program), getAccountMeta(\"slotHashes\", accounts.slotHashes), getAccountMeta(\"tokenProgram\", accounts.tokenProgram), getAccountMeta(\"quoteTokenProgram\", accounts.quoteTokenProgram), getAccountMeta(\"associatedTokenProgram\", accounts.associatedTokenProgram), getAccountMeta(\"systemProgram\", accounts.systemProgram)], data: getBuyPacksInstructionDataEncoder().encode(args as BuyPacksInstructionDataArgs), programAddress } as BuyPacksInstruction<TProgramAddress, TAccountPurchaser, TAccountPool, TAccountDraw, TAccountActivity, TAccountMint, TAccountQuoteMint, TAccountVault, TAccountUserTokens, TAccountVenue, TAccountIdentity, TAccountQueue, TAccountProgram, TAccountSlotHashes, TAccountTokenProgram, TAccountQuoteTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>);\n}\n\nexport type ParsedBuyPacksInstruction<TProgram extends string = typeof GABOX_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = { programAddress: Address<TProgram>;\naccounts: {\npurchaser: TAccountMetas[0];\npool: TAccountMetas[1];\n/**\n * The nonce is the buyer's. Two buyers, or two transactions of one\n * buyer, never name the same draw, so concurrent purchases do not\n * collide. A nonce still in use fails here at `init`.\n */\ndraw: TAccountMetas[2];\n/**\n * Rent for this account (when it is first created) is outside\n * `total_native_debit`, the same as `draw`'s rent: Anchor's `init_if_needed`\n * runs before the handler body executes, so `before_native` is already\n * sampled after this account exists.\n */\nactivity: TAccountMetas[3];\nmint: TAccountMetas[4];\nquoteMint: TAccountMetas[5];\nvault: TAccountMetas[6];\nuserTokens: TAccountMetas[7];\n/** LaunchLab before graduation, CPMM after it. */\nvenue: TAccountMetas[8];\nidentity: TAccountMetas[9];\nqueue: TAccountMetas[10];\nprogram: TAccountMetas[11];\nslotHashes: TAccountMetas[12];\ntokenProgram: TAccountMetas[13];\nquoteTokenProgram: TAccountMetas[14];\nassociatedTokenProgram: TAccountMetas[15];\nsystemProgram: TAccountMetas[16];\n};\ndata: BuyPacksInstructionData; };\n\nexport function parseBuyPacksInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedBuyPacksInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 17) {\n throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 17 });\n}\nlet accountIndex = 0;\nconst getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n}\n return { programAddress: instruction.programAddress, accounts: { purchaser: getNextAccount(), pool: getNextAccount(), draw: getNextAccount(), activity: getNextAccount(), mint: getNextAccount(), quoteMint: getNextAccount(), vault: getNextAccount(), userTokens: getNextAccount(), venue: getNextAccount(), identity: getNextAccount(), queue: getNextAccount(), program: getNextAccount(), slotHashes: getNextAccount(), tokenProgram: getNextAccount(), quoteTokenProgram: getNextAccount(), associatedTokenProgram: getNextAccount(), systemProgram: getNextAccount() }, data: getBuyPacksInstructionDataDecoder().decode(instruction.data) };\n}","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { combineCodec, fixDecoderSize, fixEncoderSize, getAddressEncoder, getBytesDecoder, getBytesEncoder, getProgramDerivedAddress, getStructDecoder, getStructEncoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder, type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type WritableSignerAccount } from '@solana/kit';\nimport { getAccountMetaFactory, getAddressFromResolvedInstructionAccount, type ResolvedInstructionAccount } from '@solana/program-client-core';\nimport { findPoolPda } from '../pdas';\nimport { GABOX_PROGRAM_ADDRESS } from '../programs';\n\nexport const CLAIM_PRIZE_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([157, 233, 139, 121, 246, 62, 234, 235]);\n\nexport function getClaimPrizeDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(CLAIM_PRIZE_DISCRIMINATOR); }\n\nexport type ClaimPrizeInstruction<TProgram extends string = typeof GABOX_PROGRAM_ADDRESS, TAccountPayer extends string | AccountMeta<string> = string, TAccountPool extends string | AccountMeta<string> = string, TAccountDraw extends string | AccountMeta<string> = string, TAccountPurchaser extends string | AccountMeta<string> = string, TAccountMint extends string | AccountMeta<string> = string, TAccountVault extends string | AccountMeta<string> = string, TAccountUserTokens extends string | AccountMeta<string> = string, TAccountTokenProgram extends string | AccountMeta<string> = \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\", TAccountAssociatedTokenProgram extends string | AccountMeta<string> = \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\", TAccountSystemProgram extends string | AccountMeta<string> = \"11111111111111111111111111111111\", TRemainingAccounts extends readonly AccountMeta<string>[] = []> =\nInstruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountPayer extends string ? WritableSignerAccount<TAccountPayer> & AccountSignerMeta<TAccountPayer> : TAccountPayer, TAccountPool extends string ? WritableAccount<TAccountPool> : TAccountPool, TAccountDraw extends string ? WritableAccount<TAccountDraw> : TAccountDraw, TAccountPurchaser extends string ? WritableAccount<TAccountPurchaser> : TAccountPurchaser, TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint, TAccountVault extends string ? WritableAccount<TAccountVault> : TAccountVault, TAccountUserTokens extends string ? WritableAccount<TAccountUserTokens> : TAccountUserTokens, TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram, TAccountAssociatedTokenProgram extends string ? ReadonlyAccount<TAccountAssociatedTokenProgram> : TAccountAssociatedTokenProgram, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, ...TRemainingAccounts]>;\n\nexport type ClaimPrizeInstructionData = { discriminator: ReadonlyUint8Array; };\n\nexport type ClaimPrizeInstructionDataArgs = { };\n\nexport function getClaimPrizeInstructionDataEncoder(): FixedSizeEncoder<ClaimPrizeInstructionDataArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), (value) => ({ ...value, discriminator: CLAIM_PRIZE_DISCRIMINATOR }));\n}\n\nexport function getClaimPrizeInstructionDataDecoder(): FixedSizeDecoder<ClaimPrizeInstructionData> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)]]);\n}\n\nexport function getClaimPrizeInstructionDataCodec(): FixedSizeCodec<ClaimPrizeInstructionDataArgs, ClaimPrizeInstructionData> {\n return combineCodec(getClaimPrizeInstructionDataEncoder(), getClaimPrizeInstructionDataDecoder());\n}\n\nexport type ClaimPrizeAsyncInput<TAccountPayer extends string = string, TAccountPool extends string = string, TAccountDraw extends string = string, TAccountPurchaser extends string = string, TAccountMint extends string = string, TAccountVault extends string = string, TAccountUserTokens extends string = string, TAccountTokenProgram extends string = string, TAccountAssociatedTokenProgram extends string = string, TAccountSystemProgram extends string = string> = {\n /** Any signer. Pays the ATA rent when the account is missing. */\npayer: TransactionSigner<TAccountPayer>;\npool?: Address<TAccountPool>;\ndraw: Address<TAccountDraw>;\npurchaser: Address<TAccountPurchaser>;\nmint: Address<TAccountMint>;\nvault: Address<TAccountVault>;\n/**\n * The purchaser's ATA. An existing account must still belong to the\n * purchaser; one whose owner was changed fails here, and only\n * `claim_prize_to` can pay that draw.\n */\nuserTokens?: Address<TAccountUserTokens>;\ntokenProgram?: Address<TAccountTokenProgram>;\nassociatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\nsystemProgram?: Address<TAccountSystemProgram>;\n}\n\nexport async function getClaimPrizeInstructionAsync<TAccountPayer extends string, TAccountPool extends string, TAccountDraw extends string, TAccountPurchaser extends string, TAccountMint extends string, TAccountVault extends string, TAccountUserTokens extends string, TAccountTokenProgram extends string, TAccountAssociatedTokenProgram extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof GABOX_PROGRAM_ADDRESS>(input: ClaimPrizeAsyncInput<TAccountPayer, TAccountPool, TAccountDraw, TAccountPurchaser, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>, config?: { programAddress?: TProgramAddress } ): Promise<ClaimPrizeInstruction<TProgramAddress, TAccountPayer, TAccountPool, TAccountDraw, TAccountPurchaser, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { payer: { value: input.payer ?? null, isWritable: true }, pool: { value: input.pool ?? null, isWritable: true }, draw: { value: input.draw ?? null, isWritable: true }, purchaser: { value: input.purchaser ?? null, isWritable: true }, mint: { value: input.mint ?? null, isWritable: false }, vault: { value: input.vault ?? null, isWritable: true }, userTokens: { value: input.userTokens ?? null, isWritable: true }, tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, associatedTokenProgram: { value: input.associatedTokenProgram ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Resolve default values.\nif (!accounts.pool.value) {\naccounts.pool.value = await findPoolPda({ mint: getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value) }, { programAddress });\n}\nif (!accounts.userTokens.value) {\naccounts.userTokens.value = await getProgramDerivedAddress({ programAddress: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>, seeds: [getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"purchaser\", accounts.purchaser.value)), getBytesEncoder().encode(new Uint8Array([6, 221, 246, 225, 215, 101, 161, 147, 217, 203, 225, 70, 206, 235, 121, 172, 28, 180, 133, 237, 95, 91, 55, 145, 58, 140, 245, 133, 126, 255, 0, 169])), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value))] });\n}\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\nif (!accounts.associatedTokenProgram.value) {\naccounts.associatedTokenProgram.value = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n}\nif (!accounts.systemProgram.value) {\naccounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"payer\", accounts.payer), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"draw\", accounts.draw), getAccountMeta(\"purchaser\", accounts.purchaser), getAccountMeta(\"mint\", accounts.mint), getAccountMeta(\"vault\", accounts.vault), getAccountMeta(\"userTokens\", accounts.userTokens), getAccountMeta(\"tokenProgram\", accounts.tokenProgram), getAccountMeta(\"associatedTokenProgram\", accounts.associatedTokenProgram), getAccountMeta(\"systemProgram\", accounts.systemProgram)], data: getClaimPrizeInstructionDataEncoder().encode({}), programAddress } as ClaimPrizeInstruction<TProgramAddress, TAccountPayer, TAccountPool, TAccountDraw, TAccountPurchaser, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>);\n}\n\nexport type ClaimPrizeInput<TAccountPayer extends string = string, TAccountPool extends string = string, TAccountDraw extends string = string, TAccountPurchaser extends string = string, TAccountMint extends string = string, TAccountVault extends string = string, TAccountUserTokens extends string = string, TAccountTokenProgram extends string = string, TAccountAssociatedTokenProgram extends string = string, TAccountSystemProgram extends string = string> = {\n /** Any signer. Pays the ATA rent when the account is missing. */\npayer: TransactionSigner<TAccountPayer>;\npool: Address<TAccountPool>;\ndraw: Address<TAccountDraw>;\npurchaser: Address<TAccountPurchaser>;\nmint: Address<TAccountMint>;\nvault: Address<TAccountVault>;\n/**\n * The purchaser's ATA. An existing account must still belong to the\n * purchaser; one whose owner was changed fails here, and only\n * `claim_prize_to` can pay that draw.\n */\nuserTokens: Address<TAccountUserTokens>;\ntokenProgram?: Address<TAccountTokenProgram>;\nassociatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\nsystemProgram?: Address<TAccountSystemProgram>;\n}\n\nexport function getClaimPrizeInstruction<TAccountPayer extends string, TAccountPool extends string, TAccountDraw extends string, TAccountPurchaser extends string, TAccountMint extends string, TAccountVault extends string, TAccountUserTokens extends string, TAccountTokenProgram extends string, TAccountAssociatedTokenProgram extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof GABOX_PROGRAM_ADDRESS>(input: ClaimPrizeInput<TAccountPayer, TAccountPool, TAccountDraw, TAccountPurchaser, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>, config?: { programAddress?: TProgramAddress } ): ClaimPrizeInstruction<TProgramAddress, TAccountPayer, TAccountPool, TAccountDraw, TAccountPurchaser, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { payer: { value: input.payer ?? null, isWritable: true }, pool: { value: input.pool ?? null, isWritable: true }, draw: { value: input.draw ?? null, isWritable: true }, purchaser: { value: input.purchaser ?? null, isWritable: true }, mint: { value: input.mint ?? null, isWritable: false }, vault: { value: input.vault ?? null, isWritable: true }, userTokens: { value: input.userTokens ?? null, isWritable: true }, tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, associatedTokenProgram: { value: input.associatedTokenProgram ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Resolve default values.\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\nif (!accounts.associatedTokenProgram.value) {\naccounts.associatedTokenProgram.value = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n}\nif (!accounts.systemProgram.value) {\naccounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"payer\", accounts.payer), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"draw\", accounts.draw), getAccountMeta(\"purchaser\", accounts.purchaser), getAccountMeta(\"mint\", accounts.mint), getAccountMeta(\"vault\", accounts.vault), getAccountMeta(\"userTokens\", accounts.userTokens), getAccountMeta(\"tokenProgram\", accounts.tokenProgram), getAccountMeta(\"associatedTokenProgram\", accounts.associatedTokenProgram), getAccountMeta(\"systemProgram\", accounts.systemProgram)], data: getClaimPrizeInstructionDataEncoder().encode({}), programAddress } as ClaimPrizeInstruction<TProgramAddress, TAccountPayer, TAccountPool, TAccountDraw, TAccountPurchaser, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>);\n}\n\nexport type ParsedClaimPrizeInstruction<TProgram extends string = typeof GABOX_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = { programAddress: Address<TProgram>;\naccounts: {\n/** Any signer. Pays the ATA rent when the account is missing. */\npayer: TAccountMetas[0];\npool: TAccountMetas[1];\ndraw: TAccountMetas[2];\npurchaser: TAccountMetas[3];\nmint: TAccountMetas[4];\nvault: TAccountMetas[5];\n/**\n * The purchaser's ATA. An existing account must still belong to the\n * purchaser; one whose owner was changed fails here, and only\n * `claim_prize_to` can pay that draw.\n */\nuserTokens: TAccountMetas[6];\ntokenProgram: TAccountMetas[7];\nassociatedTokenProgram: TAccountMetas[8];\nsystemProgram: TAccountMetas[9];\n};\ndata: ClaimPrizeInstructionData; };\n\nexport function parseClaimPrizeInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedClaimPrizeInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 10) {\n throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 10 });\n}\nlet accountIndex = 0;\nconst getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n}\n return { programAddress: instruction.programAddress, accounts: { payer: getNextAccount(), pool: getNextAccount(), draw: getNextAccount(), purchaser: getNextAccount(), mint: getNextAccount(), vault: getNextAccount(), userTokens: getNextAccount(), tokenProgram: getNextAccount(), associatedTokenProgram: getNextAccount(), systemProgram: getNextAccount() }, data: getClaimPrizeInstructionDataDecoder().decode(instruction.data) };\n}","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { combineCodec, fixDecoderSize, fixEncoderSize, getBytesDecoder, getBytesEncoder, getStructDecoder, getStructEncoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder, type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type WritableSignerAccount } from '@solana/kit';\nimport { getAccountMetaFactory, getAddressFromResolvedInstructionAccount, type ResolvedInstructionAccount } from '@solana/program-client-core';\nimport { findPoolPda } from '../pdas';\nimport { GABOX_PROGRAM_ADDRESS } from '../programs';\n\nexport const CLAIM_PRIZE_TO_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([247, 118, 231, 78, 81, 61, 176, 150]);\n\nexport function getClaimPrizeToDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(CLAIM_PRIZE_TO_DISCRIMINATOR); }\n\nexport type ClaimPrizeToInstruction<TProgram extends string = typeof GABOX_PROGRAM_ADDRESS, TAccountPurchaser extends string | AccountMeta<string> = string, TAccountPool extends string | AccountMeta<string> = string, TAccountDraw extends string | AccountMeta<string> = string, TAccountMint extends string | AccountMeta<string> = string, TAccountVault extends string | AccountMeta<string> = string, TAccountDestination extends string | AccountMeta<string> = string, TAccountTokenProgram extends string | AccountMeta<string> = \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\", TRemainingAccounts extends readonly AccountMeta<string>[] = []> =\nInstruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountPurchaser extends string ? WritableSignerAccount<TAccountPurchaser> & AccountSignerMeta<TAccountPurchaser> : TAccountPurchaser, TAccountPool extends string ? WritableAccount<TAccountPool> : TAccountPool, TAccountDraw extends string ? WritableAccount<TAccountDraw> : TAccountDraw, TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint, TAccountVault extends string ? WritableAccount<TAccountVault> : TAccountVault, TAccountDestination extends string ? WritableAccount<TAccountDestination> : TAccountDestination, TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram, ...TRemainingAccounts]>;\n\nexport type ClaimPrizeToInstructionData = { discriminator: ReadonlyUint8Array; };\n\nexport type ClaimPrizeToInstructionDataArgs = { };\n\nexport function getClaimPrizeToInstructionDataEncoder(): FixedSizeEncoder<ClaimPrizeToInstructionDataArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), (value) => ({ ...value, discriminator: CLAIM_PRIZE_TO_DISCRIMINATOR }));\n}\n\nexport function getClaimPrizeToInstructionDataDecoder(): FixedSizeDecoder<ClaimPrizeToInstructionData> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)]]);\n}\n\nexport function getClaimPrizeToInstructionDataCodec(): FixedSizeCodec<ClaimPrizeToInstructionDataArgs, ClaimPrizeToInstructionData> {\n return combineCodec(getClaimPrizeToInstructionDataEncoder(), getClaimPrizeToInstructionDataDecoder());\n}\n\nexport type ClaimPrizeToAsyncInput<TAccountPurchaser extends string = string, TAccountPool extends string = string, TAccountDraw extends string = string, TAccountMint extends string = string, TAccountVault extends string = string, TAccountDestination extends string = string, TAccountTokenProgram extends string = string> = {\n purchaser: TransactionSigner<TAccountPurchaser>;\npool?: Address<TAccountPool>;\ndraw: Address<TAccountDraw>;\nmint: Address<TAccountMint>;\nvault: Address<TAccountVault>;\n/**\n * Any existing classic token account for this coin that the purchaser\n * owns. Nothing is created here.\n */\ndestination: Address<TAccountDestination>;\ntokenProgram?: Address<TAccountTokenProgram>;\n}\n\nexport async function getClaimPrizeToInstructionAsync<TAccountPurchaser extends string, TAccountPool extends string, TAccountDraw extends string, TAccountMint extends string, TAccountVault extends string, TAccountDestination extends string, TAccountTokenProgram extends string, TProgramAddress extends Address = typeof GABOX_PROGRAM_ADDRESS>(input: ClaimPrizeToAsyncInput<TAccountPurchaser, TAccountPool, TAccountDraw, TAccountMint, TAccountVault, TAccountDestination, TAccountTokenProgram>, config?: { programAddress?: TProgramAddress } ): Promise<ClaimPrizeToInstruction<TProgramAddress, TAccountPurchaser, TAccountPool, TAccountDraw, TAccountMint, TAccountVault, TAccountDestination, TAccountTokenProgram>> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { purchaser: { value: input.purchaser ?? null, isWritable: true }, pool: { value: input.pool ?? null, isWritable: true }, draw: { value: input.draw ?? null, isWritable: true }, mint: { value: input.mint ?? null, isWritable: false }, vault: { value: input.vault ?? null, isWritable: true }, destination: { value: input.destination ?? null, isWritable: true }, tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Resolve default values.\nif (!accounts.pool.value) {\naccounts.pool.value = await findPoolPda({ mint: getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value) }, { programAddress });\n}\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"purchaser\", accounts.purchaser), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"draw\", accounts.draw), getAccountMeta(\"mint\", accounts.mint), getAccountMeta(\"vault\", accounts.vault), getAccountMeta(\"destination\", accounts.destination), getAccountMeta(\"tokenProgram\", accounts.tokenProgram)], data: getClaimPrizeToInstructionDataEncoder().encode({}), programAddress } as ClaimPrizeToInstruction<TProgramAddress, TAccountPurchaser, TAccountPool, TAccountDraw, TAccountMint, TAccountVault, TAccountDestination, TAccountTokenProgram>);\n}\n\nexport type ClaimPrizeToInput<TAccountPurchaser extends string = string, TAccountPool extends string = string, TAccountDraw extends string = string, TAccountMint extends string = string, TAccountVault extends string = string, TAccountDestination extends string = string, TAccountTokenProgram extends string = string> = {\n purchaser: TransactionSigner<TAccountPurchaser>;\npool: Address<TAccountPool>;\ndraw: Address<TAccountDraw>;\nmint: Address<TAccountMint>;\nvault: Address<TAccountVault>;\n/**\n * Any existing classic token account for this coin that the purchaser\n * owns. Nothing is created here.\n */\ndestination: Address<TAccountDestination>;\ntokenProgram?: Address<TAccountTokenProgram>;\n}\n\nexport function getClaimPrizeToInstruction<TAccountPurchaser extends string, TAccountPool extends string, TAccountDraw extends string, TAccountMint extends string, TAccountVault extends string, TAccountDestination extends string, TAccountTokenProgram extends string, TProgramAddress extends Address = typeof GABOX_PROGRAM_ADDRESS>(input: ClaimPrizeToInput<TAccountPurchaser, TAccountPool, TAccountDraw, TAccountMint, TAccountVault, TAccountDestination, TAccountTokenProgram>, config?: { programAddress?: TProgramAddress } ): ClaimPrizeToInstruction<TProgramAddress, TAccountPurchaser, TAccountPool, TAccountDraw, TAccountMint, TAccountVault, TAccountDestination, TAccountTokenProgram> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { purchaser: { value: input.purchaser ?? null, isWritable: true }, pool: { value: input.pool ?? null, isWritable: true }, draw: { value: input.draw ?? null, isWritable: true }, mint: { value: input.mint ?? null, isWritable: false }, vault: { value: input.vault ?? null, isWritable: true }, destination: { value: input.destination ?? null, isWritable: true }, tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Resolve default values.\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"purchaser\", accounts.purchaser), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"draw\", accounts.draw), getAccountMeta(\"mint\", accounts.mint), getAccountMeta(\"vault\", accounts.vault), getAccountMeta(\"destination\", accounts.destination), getAccountMeta(\"tokenProgram\", accounts.tokenProgram)], data: getClaimPrizeToInstructionDataEncoder().encode({}), programAddress } as ClaimPrizeToInstruction<TProgramAddress, TAccountPurchaser, TAccountPool, TAccountDraw, TAccountMint, TAccountVault, TAccountDestination, TAccountTokenProgram>);\n}\n\nexport type ParsedClaimPrizeToInstruction<TProgram extends string = typeof GABOX_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = { programAddress: Address<TProgram>;\naccounts: {\npurchaser: TAccountMetas[0];\npool: TAccountMetas[1];\ndraw: TAccountMetas[2];\nmint: TAccountMetas[3];\nvault: TAccountMetas[4];\n/**\n * Any existing classic token account for this coin that the purchaser\n * owns. Nothing is created here.\n */\ndestination: TAccountMetas[5];\ntokenProgram: TAccountMetas[6];\n};\ndata: ClaimPrizeToInstructionData; };\n\nexport function parseClaimPrizeToInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedClaimPrizeToInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 7 });\n}\nlet accountIndex = 0;\nconst getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n}\n return { programAddress: instruction.programAddress, accounts: { purchaser: getNextAccount(), pool: getNextAccount(), draw: getNextAccount(), mint: getNextAccount(), vault: getNextAccount(), destination: getNextAccount(), tokenProgram: getNextAccount() }, data: getClaimPrizeToInstructionDataDecoder().decode(instruction.data) };\n}","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { combineCodec, fixDecoderSize, fixEncoderSize, getBytesDecoder, getBytesEncoder, getProgramDerivedAddress, getStructDecoder, getStructEncoder, getU64Decoder, getU64Encoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder, type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlySignerAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount } from '@solana/kit';\nimport { getAccountMetaFactory, getAddressFromResolvedInstructionAccount, type ResolvedInstructionAccount } from '@solana/program-client-core';\nimport { findPoolPda } from '../pdas';\nimport { GABOX_PROGRAM_ADDRESS } from '../programs';\n\nexport const DELIVER_DRAW_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([113, 181, 226, 173, 237, 138, 199, 51]);\n\nexport function getDeliverDrawDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(DELIVER_DRAW_DISCRIMINATOR); }\n\nexport type DeliverDrawInstruction<TProgram extends string = typeof GABOX_PROGRAM_ADDRESS, TAccountOracleIdentity extends string | AccountMeta<string> = string, TAccountPool extends string | AccountMeta<string> = string, TAccountDraw extends string | AccountMeta<string> = string, TAccountPurchaser extends string | AccountMeta<string> = string, TAccountMint extends string | AccountMeta<string> = string, TAccountVault extends string | AccountMeta<string> = string, TAccountUserTokens extends string | AccountMeta<string> = string, TAccountTokenProgram extends string | AccountMeta<string> = \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\", TRemainingAccounts extends readonly AccountMeta<string>[] = []> =\nInstruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountOracleIdentity extends string ? ReadonlySignerAccount<TAccountOracleIdentity> & AccountSignerMeta<TAccountOracleIdentity> : TAccountOracleIdentity, TAccountPool extends string ? WritableAccount<TAccountPool> : TAccountPool, TAccountDraw extends string ? WritableAccount<TAccountDraw> : TAccountDraw, TAccountPurchaser extends string ? WritableAccount<TAccountPurchaser> : TAccountPurchaser, TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint, TAccountVault extends string ? WritableAccount<TAccountVault> : TAccountVault, TAccountUserTokens extends string ? WritableAccount<TAccountUserTokens> : TAccountUserTokens, TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram, ...TRemainingAccounts]>;\n\nexport type DeliverDrawInstructionData = { discriminator: ReadonlyUint8Array; randomness: ReadonlyUint8Array; seqStart: bigint; };\n\nexport type DeliverDrawInstructionDataArgs = { randomness: ReadonlyUint8Array; seqStart: number | bigint; };\n\nexport function getDeliverDrawInstructionDataEncoder(): FixedSizeEncoder<DeliverDrawInstructionDataArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['randomness', fixEncoderSize(getBytesEncoder(), 32)], ['seqStart', getU64Encoder()]]), (value) => ({ ...value, discriminator: DELIVER_DRAW_DISCRIMINATOR }));\n}\n\nexport function getDeliverDrawInstructionDataDecoder(): FixedSizeDecoder<DeliverDrawInstructionData> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['randomness', fixDecoderSize(getBytesDecoder(), 32)], ['seqStart', getU64Decoder()]]);\n}\n\nexport function getDeliverDrawInstructionDataCodec(): FixedSizeCodec<DeliverDrawInstructionDataArgs, DeliverDrawInstructionData> {\n return combineCodec(getDeliverDrawInstructionDataEncoder(), getDeliverDrawInstructionDataDecoder());\n}\n\nexport type DeliverDrawAsyncInput<TAccountOracleIdentity extends string = string, TAccountPool extends string = string, TAccountDraw extends string = string, TAccountPurchaser extends string = string, TAccountMint extends string = string, TAccountVault extends string = string, TAccountUserTokens extends string = string, TAccountTokenProgram extends string = string> = {\n oracleIdentity?: TransactionSigner<TAccountOracleIdentity>;\npool?: Address<TAccountPool>;\ndraw: Address<TAccountDraw>;\npurchaser: Address<TAccountPurchaser>;\nmint: Address<TAccountMint>;\nvault: Address<TAccountVault>;\n/**\n * account may be missing or unusable; the handler then owes the prize\n * instead of failing.\n */\nuserTokens: Address<TAccountUserTokens>;\ntokenProgram?: Address<TAccountTokenProgram>;\nrandomness: DeliverDrawInstructionDataArgs[\"randomness\"];\nseqStart: DeliverDrawInstructionDataArgs[\"seqStart\"];\n}\n\nexport async function getDeliverDrawInstructionAsync<TAccountOracleIdentity extends string, TAccountPool extends string, TAccountDraw extends string, TAccountPurchaser extends string, TAccountMint extends string, TAccountVault extends string, TAccountUserTokens extends string, TAccountTokenProgram extends string, TProgramAddress extends Address = typeof GABOX_PROGRAM_ADDRESS>(input: DeliverDrawAsyncInput<TAccountOracleIdentity, TAccountPool, TAccountDraw, TAccountPurchaser, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram>, config?: { programAddress?: TProgramAddress } ): Promise<DeliverDrawInstruction<TProgramAddress, TAccountOracleIdentity, TAccountPool, TAccountDraw, TAccountPurchaser, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram>> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { oracleIdentity: { value: input.oracleIdentity ?? null, isWritable: false }, pool: { value: input.pool ?? null, isWritable: true }, draw: { value: input.draw ?? null, isWritable: true }, purchaser: { value: input.purchaser ?? null, isWritable: true }, mint: { value: input.mint ?? null, isWritable: false }, vault: { value: input.vault ?? null, isWritable: true }, userTokens: { value: input.userTokens ?? null, isWritable: true }, tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Original args.\nconst args = { ...input, };\n\n\n// Resolve default values.\nif (!accounts.oracleIdentity.value) {\naccounts.oracleIdentity.value = await getProgramDerivedAddress({ programAddress: 'Vrf1RNUjXmQGjmQrQLvJHs9SNkvDJEsRVFPkfSQUwGz' as Address<'Vrf1RNUjXmQGjmQrQLvJHs9SNkvDJEsRVFPkfSQUwGz'>, seeds: [getBytesEncoder().encode(new Uint8Array([105, 100, 101, 110, 116, 105, 116, 121])), getBytesEncoder().encode(new Uint8Array([231, 95, 177, 105, 231, 174, 80, 36, 228, 6, 241, 195, 89, 243, 52, 57, 128, 219, 206, 84, 115, 45, 3, 217, 77, 35, 38, 40, 214, 248, 69, 83]))] });\n}\nif (!accounts.pool.value) {\naccounts.pool.value = await findPoolPda({ mint: getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value) }, { programAddress });\n}\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"oracleIdentity\", accounts.oracleIdentity), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"draw\", accounts.draw), getAccountMeta(\"purchaser\", accounts.purchaser), getAccountMeta(\"mint\", accounts.mint), getAccountMeta(\"vault\", accounts.vault), getAccountMeta(\"userTokens\", accounts.userTokens), getAccountMeta(\"tokenProgram\", accounts.tokenProgram)], data: getDeliverDrawInstructionDataEncoder().encode(args as DeliverDrawInstructionDataArgs), programAddress } as DeliverDrawInstruction<TProgramAddress, TAccountOracleIdentity, TAccountPool, TAccountDraw, TAccountPurchaser, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram>);\n}\n\nexport type DeliverDrawInput<TAccountOracleIdentity extends string = string, TAccountPool extends string = string, TAccountDraw extends string = string, TAccountPurchaser extends string = string, TAccountMint extends string = string, TAccountVault extends string = string, TAccountUserTokens extends string = string, TAccountTokenProgram extends string = string> = {\n oracleIdentity: TransactionSigner<TAccountOracleIdentity>;\npool: Address<TAccountPool>;\ndraw: Address<TAccountDraw>;\npurchaser: Address<TAccountPurchaser>;\nmint: Address<TAccountMint>;\nvault: Address<TAccountVault>;\n/**\n * account may be missing or unusable; the handler then owes the prize\n * instead of failing.\n */\nuserTokens: Address<TAccountUserTokens>;\ntokenProgram?: Address<TAccountTokenProgram>;\nrandomness: DeliverDrawInstructionDataArgs[\"randomness\"];\nseqStart: DeliverDrawInstructionDataArgs[\"seqStart\"];\n}\n\nexport function getDeliverDrawInstruction<TAccountOracleIdentity extends string, TAccountPool extends string, TAccountDraw extends string, TAccountPurchaser extends string, TAccountMint extends string, TAccountVault extends string, TAccountUserTokens extends string, TAccountTokenProgram extends string, TProgramAddress extends Address = typeof GABOX_PROGRAM_ADDRESS>(input: DeliverDrawInput<TAccountOracleIdentity, TAccountPool, TAccountDraw, TAccountPurchaser, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram>, config?: { programAddress?: TProgramAddress } ): DeliverDrawInstruction<TProgramAddress, TAccountOracleIdentity, TAccountPool, TAccountDraw, TAccountPurchaser, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { oracleIdentity: { value: input.oracleIdentity ?? null, isWritable: false }, pool: { value: input.pool ?? null, isWritable: true }, draw: { value: input.draw ?? null, isWritable: true }, purchaser: { value: input.purchaser ?? null, isWritable: true }, mint: { value: input.mint ?? null, isWritable: false }, vault: { value: input.vault ?? null, isWritable: true }, userTokens: { value: input.userTokens ?? null, isWritable: true }, tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Original args.\nconst args = { ...input, };\n\n\n// Resolve default values.\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"oracleIdentity\", accounts.oracleIdentity), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"draw\", accounts.draw), getAccountMeta(\"purchaser\", accounts.purchaser), getAccountMeta(\"mint\", accounts.mint), getAccountMeta(\"vault\", accounts.vault), getAccountMeta(\"userTokens\", accounts.userTokens), getAccountMeta(\"tokenProgram\", accounts.tokenProgram)], data: getDeliverDrawInstructionDataEncoder().encode(args as DeliverDrawInstructionDataArgs), programAddress } as DeliverDrawInstruction<TProgramAddress, TAccountOracleIdentity, TAccountPool, TAccountDraw, TAccountPurchaser, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram>);\n}\n\nexport type ParsedDeliverDrawInstruction<TProgram extends string = typeof GABOX_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = { programAddress: Address<TProgram>;\naccounts: {\noracleIdentity: TAccountMetas[0];\npool: TAccountMetas[1];\ndraw: TAccountMetas[2];\npurchaser: TAccountMetas[3];\nmint: TAccountMetas[4];\nvault: TAccountMetas[5];\n/**\n * account may be missing or unusable; the handler then owes the prize\n * instead of failing.\n */\nuserTokens: TAccountMetas[6];\ntokenProgram: TAccountMetas[7];\n};\ndata: DeliverDrawInstructionData; };\n\nexport function parseDeliverDrawInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedDeliverDrawInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 8) {\n throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 8 });\n}\nlet accountIndex = 0;\nconst getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n}\n return { programAddress: instruction.programAddress, accounts: { oracleIdentity: getNextAccount(), pool: getNextAccount(), draw: getNextAccount(), purchaser: getNextAccount(), mint: getNextAccount(), vault: getNextAccount(), userTokens: getNextAccount(), tokenProgram: getNextAccount() }, data: getDeliverDrawInstructionDataDecoder().decode(instruction.data) };\n}","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { combineCodec, fixDecoderSize, fixEncoderSize, getBytesDecoder, getBytesEncoder, getStructDecoder, getStructEncoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder, type AccountMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type WritableAccount } from '@solana/kit';\nimport { getAccountMetaFactory, getAddressFromResolvedInstructionAccount, type ResolvedInstructionAccount } from '@solana/program-client-core';\nimport { findPoolPda } from '../pdas';\nimport { GABOX_PROGRAM_ADDRESS } from '../programs';\n\nexport const EXPIRE_DRAW_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([100, 119, 235, 75, 8, 25, 252, 255]);\n\nexport function getExpireDrawDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(EXPIRE_DRAW_DISCRIMINATOR); }\n\nexport type ExpireDrawInstruction<TProgram extends string = typeof GABOX_PROGRAM_ADDRESS, TAccountPool extends string | AccountMeta<string> = string, TAccountDraw extends string | AccountMeta<string> = string, TAccountPurchaser extends string | AccountMeta<string> = string, TAccountMint extends string | AccountMeta<string> = string, TAccountVault extends string | AccountMeta<string> = string, TAccountUserTokens extends string | AccountMeta<string> = string, TAccountTokenProgram extends string | AccountMeta<string> = \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\", TRemainingAccounts extends readonly AccountMeta<string>[] = []> =\nInstruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountPool extends string ? WritableAccount<TAccountPool> : TAccountPool, TAccountDraw extends string ? WritableAccount<TAccountDraw> : TAccountDraw, TAccountPurchaser extends string ? WritableAccount<TAccountPurchaser> : TAccountPurchaser, TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint, TAccountVault extends string ? WritableAccount<TAccountVault> : TAccountVault, TAccountUserTokens extends string ? WritableAccount<TAccountUserTokens> : TAccountUserTokens, TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram, ...TRemainingAccounts]>;\n\nexport type ExpireDrawInstructionData = { discriminator: ReadonlyUint8Array; };\n\nexport type ExpireDrawInstructionDataArgs = { };\n\nexport function getExpireDrawInstructionDataEncoder(): FixedSizeEncoder<ExpireDrawInstructionDataArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), (value) => ({ ...value, discriminator: EXPIRE_DRAW_DISCRIMINATOR }));\n}\n\nexport function getExpireDrawInstructionDataDecoder(): FixedSizeDecoder<ExpireDrawInstructionData> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)]]);\n}\n\nexport function getExpireDrawInstructionDataCodec(): FixedSizeCodec<ExpireDrawInstructionDataArgs, ExpireDrawInstructionData> {\n return combineCodec(getExpireDrawInstructionDataEncoder(), getExpireDrawInstructionDataDecoder());\n}\n\nexport type ExpireDrawAsyncInput<TAccountPool extends string = string, TAccountDraw extends string = string, TAccountPurchaser extends string = string, TAccountMint extends string = string, TAccountVault extends string = string, TAccountUserTokens extends string = string, TAccountTokenProgram extends string = string> = {\n pool?: Address<TAccountPool>;\ndraw: Address<TAccountDraw>;\npurchaser: Address<TAccountPurchaser>;\nmint: Address<TAccountMint>;\nvault: Address<TAccountVault>;\n/** same as in `deliver_draw`. */\nuserTokens: Address<TAccountUserTokens>;\ntokenProgram?: Address<TAccountTokenProgram>;\n}\n\nexport async function getExpireDrawInstructionAsync<TAccountPool extends string, TAccountDraw extends string, TAccountPurchaser extends string, TAccountMint extends string, TAccountVault extends string, TAccountUserTokens extends string, TAccountTokenProgram extends string, TProgramAddress extends Address = typeof GABOX_PROGRAM_ADDRESS>(input: ExpireDrawAsyncInput<TAccountPool, TAccountDraw, TAccountPurchaser, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram>, config?: { programAddress?: TProgramAddress } ): Promise<ExpireDrawInstruction<TProgramAddress, TAccountPool, TAccountDraw, TAccountPurchaser, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram>> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { pool: { value: input.pool ?? null, isWritable: true }, draw: { value: input.draw ?? null, isWritable: true }, purchaser: { value: input.purchaser ?? null, isWritable: true }, mint: { value: input.mint ?? null, isWritable: false }, vault: { value: input.vault ?? null, isWritable: true }, userTokens: { value: input.userTokens ?? null, isWritable: true }, tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Resolve default values.\nif (!accounts.pool.value) {\naccounts.pool.value = await findPoolPda({ mint: getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value) }, { programAddress });\n}\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"draw\", accounts.draw), getAccountMeta(\"purchaser\", accounts.purchaser), getAccountMeta(\"mint\", accounts.mint), getAccountMeta(\"vault\", accounts.vault), getAccountMeta(\"userTokens\", accounts.userTokens), getAccountMeta(\"tokenProgram\", accounts.tokenProgram)], data: getExpireDrawInstructionDataEncoder().encode({}), programAddress } as ExpireDrawInstruction<TProgramAddress, TAccountPool, TAccountDraw, TAccountPurchaser, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram>);\n}\n\nexport type ExpireDrawInput<TAccountPool extends string = string, TAccountDraw extends string = string, TAccountPurchaser extends string = string, TAccountMint extends string = string, TAccountVault extends string = string, TAccountUserTokens extends string = string, TAccountTokenProgram extends string = string> = {\n pool: Address<TAccountPool>;\ndraw: Address<TAccountDraw>;\npurchaser: Address<TAccountPurchaser>;\nmint: Address<TAccountMint>;\nvault: Address<TAccountVault>;\n/** same as in `deliver_draw`. */\nuserTokens: Address<TAccountUserTokens>;\ntokenProgram?: Address<TAccountTokenProgram>;\n}\n\nexport function getExpireDrawInstruction<TAccountPool extends string, TAccountDraw extends string, TAccountPurchaser extends string, TAccountMint extends string, TAccountVault extends string, TAccountUserTokens extends string, TAccountTokenProgram extends string, TProgramAddress extends Address = typeof GABOX_PROGRAM_ADDRESS>(input: ExpireDrawInput<TAccountPool, TAccountDraw, TAccountPurchaser, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram>, config?: { programAddress?: TProgramAddress } ): ExpireDrawInstruction<TProgramAddress, TAccountPool, TAccountDraw, TAccountPurchaser, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { pool: { value: input.pool ?? null, isWritable: true }, draw: { value: input.draw ?? null, isWritable: true }, purchaser: { value: input.purchaser ?? null, isWritable: true }, mint: { value: input.mint ?? null, isWritable: false }, vault: { value: input.vault ?? null, isWritable: true }, userTokens: { value: input.userTokens ?? null, isWritable: true }, tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Resolve default values.\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"draw\", accounts.draw), getAccountMeta(\"purchaser\", accounts.purchaser), getAccountMeta(\"mint\", accounts.mint), getAccountMeta(\"vault\", accounts.vault), getAccountMeta(\"userTokens\", accounts.userTokens), getAccountMeta(\"tokenProgram\", accounts.tokenProgram)], data: getExpireDrawInstructionDataEncoder().encode({}), programAddress } as ExpireDrawInstruction<TProgramAddress, TAccountPool, TAccountDraw, TAccountPurchaser, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram>);\n}\n\nexport type ParsedExpireDrawInstruction<TProgram extends string = typeof GABOX_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = { programAddress: Address<TProgram>;\naccounts: {\npool: TAccountMetas[0];\ndraw: TAccountMetas[1];\npurchaser: TAccountMetas[2];\nmint: TAccountMetas[3];\nvault: TAccountMetas[4];\n/** same as in `deliver_draw`. */\nuserTokens: TAccountMetas[5];\ntokenProgram: TAccountMetas[6];\n};\ndata: ExpireDrawInstructionData; };\n\nexport function parseExpireDrawInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedExpireDrawInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 7 });\n}\nlet accountIndex = 0;\nconst getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n}\n return { programAddress: instruction.programAddress, accounts: { pool: getNextAccount(), draw: getNextAccount(), purchaser: getNextAccount(), mint: getNextAccount(), vault: getNextAccount(), userTokens: getNextAccount(), tokenProgram: getNextAccount() }, data: getExpireDrawInstructionDataDecoder().decode(instruction.data) };\n}","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { combineCodec, fixDecoderSize, fixEncoderSize, getBytesDecoder, getBytesEncoder, getStructDecoder, getStructEncoder, getU64Decoder, getU64Encoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder, type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlySignerAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount } from '@solana/kit';\nimport { getAccountMetaFactory, getAddressFromResolvedInstructionAccount, type ResolvedInstructionAccount } from '@solana/program-client-core';\nimport { findPoolPda } from '../pdas';\nimport { GABOX_PROGRAM_ADDRESS } from '../programs';\n\nexport const FUND_PRIZES_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([163, 225, 193, 125, 144, 171, 29, 241]);\n\nexport function getFundPrizesDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(FUND_PRIZES_DISCRIMINATOR); }\n\nexport type FundPrizesInstruction<TProgram extends string = typeof GABOX_PROGRAM_ADDRESS, TAccountFunder extends string | AccountMeta<string> = string, TAccountPool extends string | AccountMeta<string> = string, TAccountMint extends string | AccountMeta<string> = string, TAccountSource extends string | AccountMeta<string> = string, TAccountVault extends string | AccountMeta<string> = string, TAccountTokenProgram extends string | AccountMeta<string> = \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\", TRemainingAccounts extends readonly AccountMeta<string>[] = []> =\nInstruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountFunder extends string ? ReadonlySignerAccount<TAccountFunder> & AccountSignerMeta<TAccountFunder> : TAccountFunder, TAccountPool extends string ? ReadonlyAccount<TAccountPool> : TAccountPool, TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint, TAccountSource extends string ? WritableAccount<TAccountSource> : TAccountSource, TAccountVault extends string ? WritableAccount<TAccountVault> : TAccountVault, TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram, ...TRemainingAccounts]>;\n\nexport type FundPrizesInstructionData = { discriminator: ReadonlyUint8Array; amount: bigint; };\n\nexport type FundPrizesInstructionDataArgs = { amount: number | bigint; };\n\nexport function getFundPrizesInstructionDataEncoder(): FixedSizeEncoder<FundPrizesInstructionDataArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['amount', getU64Encoder()]]), (value) => ({ ...value, discriminator: FUND_PRIZES_DISCRIMINATOR }));\n}\n\nexport function getFundPrizesInstructionDataDecoder(): FixedSizeDecoder<FundPrizesInstructionData> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['amount', getU64Decoder()]]);\n}\n\nexport function getFundPrizesInstructionDataCodec(): FixedSizeCodec<FundPrizesInstructionDataArgs, FundPrizesInstructionData> {\n return combineCodec(getFundPrizesInstructionDataEncoder(), getFundPrizesInstructionDataDecoder());\n}\n\nexport type FundPrizesAsyncInput<TAccountFunder extends string = string, TAccountPool extends string = string, TAccountMint extends string = string, TAccountSource extends string = string, TAccountVault extends string = string, TAccountTokenProgram extends string = string> = {\n funder: TransactionSigner<TAccountFunder>;\npool?: Address<TAccountPool>;\nmint: Address<TAccountMint>;\nsource: Address<TAccountSource>;\nvault: Address<TAccountVault>;\ntokenProgram?: Address<TAccountTokenProgram>;\namount: FundPrizesInstructionDataArgs[\"amount\"];\n}\n\nexport async function getFundPrizesInstructionAsync<TAccountFunder extends string, TAccountPool extends string, TAccountMint extends string, TAccountSource extends string, TAccountVault extends string, TAccountTokenProgram extends string, TProgramAddress extends Address = typeof GABOX_PROGRAM_ADDRESS>(input: FundPrizesAsyncInput<TAccountFunder, TAccountPool, TAccountMint, TAccountSource, TAccountVault, TAccountTokenProgram>, config?: { programAddress?: TProgramAddress } ): Promise<FundPrizesInstruction<TProgramAddress, TAccountFunder, TAccountPool, TAccountMint, TAccountSource, TAccountVault, TAccountTokenProgram>> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { funder: { value: input.funder ?? null, isWritable: false }, pool: { value: input.pool ?? null, isWritable: false }, mint: { value: input.mint ?? null, isWritable: false }, source: { value: input.source ?? null, isWritable: true }, vault: { value: input.vault ?? null, isWritable: true }, tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Original args.\nconst args = { ...input, };\n\n\n// Resolve default values.\nif (!accounts.pool.value) {\naccounts.pool.value = await findPoolPda({ mint: getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value) }, { programAddress });\n}\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"funder\", accounts.funder), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"mint\", accounts.mint), getAccountMeta(\"source\", accounts.source), getAccountMeta(\"vault\", accounts.vault), getAccountMeta(\"tokenProgram\", accounts.tokenProgram)], data: getFundPrizesInstructionDataEncoder().encode(args as FundPrizesInstructionDataArgs), programAddress } as FundPrizesInstruction<TProgramAddress, TAccountFunder, TAccountPool, TAccountMint, TAccountSource, TAccountVault, TAccountTokenProgram>);\n}\n\nexport type FundPrizesInput<TAccountFunder extends string = string, TAccountPool extends string = string, TAccountMint extends string = string, TAccountSource extends string = string, TAccountVault extends string = string, TAccountTokenProgram extends string = string> = {\n funder: TransactionSigner<TAccountFunder>;\npool: Address<TAccountPool>;\nmint: Address<TAccountMint>;\nsource: Address<TAccountSource>;\nvault: Address<TAccountVault>;\ntokenProgram?: Address<TAccountTokenProgram>;\namount: FundPrizesInstructionDataArgs[\"amount\"];\n}\n\nexport function getFundPrizesInstruction<TAccountFunder extends string, TAccountPool extends string, TAccountMint extends string, TAccountSource extends string, TAccountVault extends string, TAccountTokenProgram extends string, TProgramAddress extends Address = typeof GABOX_PROGRAM_ADDRESS>(input: FundPrizesInput<TAccountFunder, TAccountPool, TAccountMint, TAccountSource, TAccountVault, TAccountTokenProgram>, config?: { programAddress?: TProgramAddress } ): FundPrizesInstruction<TProgramAddress, TAccountFunder, TAccountPool, TAccountMint, TAccountSource, TAccountVault, TAccountTokenProgram> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { funder: { value: input.funder ?? null, isWritable: false }, pool: { value: input.pool ?? null, isWritable: false }, mint: { value: input.mint ?? null, isWritable: false }, source: { value: input.source ?? null, isWritable: true }, vault: { value: input.vault ?? null, isWritable: true }, tokenProgram: { value: input.tokenProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Original args.\nconst args = { ...input, };\n\n\n// Resolve default values.\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"funder\", accounts.funder), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"mint\", accounts.mint), getAccountMeta(\"source\", accounts.source), getAccountMeta(\"vault\", accounts.vault), getAccountMeta(\"tokenProgram\", accounts.tokenProgram)], data: getFundPrizesInstructionDataEncoder().encode(args as FundPrizesInstructionDataArgs), programAddress } as FundPrizesInstruction<TProgramAddress, TAccountFunder, TAccountPool, TAccountMint, TAccountSource, TAccountVault, TAccountTokenProgram>);\n}\n\nexport type ParsedFundPrizesInstruction<TProgram extends string = typeof GABOX_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = { programAddress: Address<TProgram>;\naccounts: {\nfunder: TAccountMetas[0];\npool: TAccountMetas[1];\nmint: TAccountMetas[2];\nsource: TAccountMetas[3];\nvault: TAccountMetas[4];\ntokenProgram: TAccountMetas[5];\n};\ndata: FundPrizesInstructionData; };\n\nexport function parseFundPrizesInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedFundPrizesInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 6) {\n throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 6 });\n}\nlet accountIndex = 0;\nconst getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n}\n return { programAddress: instruction.programAddress, accounts: { funder: getNextAccount(), pool: getNextAccount(), mint: getNextAccount(), source: getNextAccount(), vault: getNextAccount(), tokenProgram: getNextAccount() }, data: getFundPrizesInstructionDataDecoder().decode(instruction.data) };\n}","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { combineCodec, fixDecoderSize, fixEncoderSize, getAddressEncoder, getArrayDecoder, getArrayEncoder, getBytesDecoder, getBytesEncoder, getProgramDerivedAddress, getStructDecoder, getStructEncoder, getU64Decoder, getU64Encoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder, type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type WritableSignerAccount } from '@solana/kit';\nimport { getAccountMetaFactory, getAddressFromResolvedInstructionAccount, type ResolvedInstructionAccount } from '@solana/program-client-core';\nimport { findPoolPda } from '../pdas';\nimport { GABOX_PROGRAM_ADDRESS } from '../programs';\nimport { getTierDecoder, getTierEncoder, type Tier, type TierArgs } from '../types';\n\nexport const INITIALIZE_POOL_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([95, 180, 10, 172, 84, 174, 232, 40]);\n\nexport function getInitializePoolDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(INITIALIZE_POOL_DISCRIMINATOR); }\n\nexport type InitializePoolInstruction<TProgram extends string = typeof GABOX_PROGRAM_ADDRESS, TAccountCreator extends string | AccountMeta<string> = string, TAccountPool extends string | AccountMeta<string> = string, TAccountMint extends string | AccountMeta<string> = string, TAccountQuoteMint extends string | AccountMeta<string> = string, TAccountQuoteConfig extends string | AccountMeta<string> = string, TAccountCreatorTokens extends string | AccountMeta<string> = string, TAccountVault extends string | AccountMeta<string> = string, TAccountVenue extends string | AccountMeta<string> = string, TAccountInstructions extends string | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\", TAccountTokenProgram extends string | AccountMeta<string> = \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\", TAccountQuoteTokenProgram extends string | AccountMeta<string> = string, TAccountAssociatedTokenProgram extends string | AccountMeta<string> = \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\", TAccountSystemProgram extends string | AccountMeta<string> = \"11111111111111111111111111111111\", TRemainingAccounts extends readonly AccountMeta<string>[] = []> =\nInstruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountCreator extends string ? WritableSignerAccount<TAccountCreator> & AccountSignerMeta<TAccountCreator> : TAccountCreator, TAccountPool extends string ? WritableAccount<TAccountPool> : TAccountPool, TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint, TAccountQuoteMint extends string ? ReadonlyAccount<TAccountQuoteMint> : TAccountQuoteMint, TAccountQuoteConfig extends string ? ReadonlyAccount<TAccountQuoteConfig> : TAccountQuoteConfig, TAccountCreatorTokens extends string ? WritableAccount<TAccountCreatorTokens> : TAccountCreatorTokens, TAccountVault extends string ? WritableAccount<TAccountVault> : TAccountVault, TAccountVenue extends string ? ReadonlyAccount<TAccountVenue> : TAccountVenue, TAccountInstructions extends string ? ReadonlyAccount<TAccountInstructions> : TAccountInstructions, TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram, TAccountQuoteTokenProgram extends string ? ReadonlyAccount<TAccountQuoteTokenProgram> : TAccountQuoteTokenProgram, TAccountAssociatedTokenProgram extends string ? ReadonlyAccount<TAccountAssociatedTokenProgram> : TAccountAssociatedTokenProgram, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, ...TRemainingAccounts]>;\n\nexport type InitializePoolInstructionData = { discriminator: ReadonlyUint8Array; tiers: Array<Tier>; maxSeedQuoteIn: bigint; maxSeedNativeDebit: bigint; extraSeedTokens: bigint; };\n\nexport type InitializePoolInstructionDataArgs = { tiers: Array<TierArgs>; maxSeedQuoteIn: number | bigint; maxSeedNativeDebit: number | bigint; extraSeedTokens: number | bigint; };\n\nexport function getInitializePoolInstructionDataEncoder(): FixedSizeEncoder<InitializePoolInstructionDataArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['tiers', getArrayEncoder(getTierEncoder(), { size: 8 })], ['maxSeedQuoteIn', getU64Encoder()], ['maxSeedNativeDebit', getU64Encoder()], ['extraSeedTokens', getU64Encoder()]]), (value) => ({ ...value, discriminator: INITIALIZE_POOL_DISCRIMINATOR }));\n}\n\nexport function getInitializePoolInstructionDataDecoder(): FixedSizeDecoder<InitializePoolInstructionData> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['tiers', getArrayDecoder(getTierDecoder(), { size: 8 })], ['maxSeedQuoteIn', getU64Decoder()], ['maxSeedNativeDebit', getU64Decoder()], ['extraSeedTokens', getU64Decoder()]]);\n}\n\nexport function getInitializePoolInstructionDataCodec(): FixedSizeCodec<InitializePoolInstructionDataArgs, InitializePoolInstructionData> {\n return combineCodec(getInitializePoolInstructionDataEncoder(), getInitializePoolInstructionDataDecoder());\n}\n\nexport type InitializePoolAsyncInput<TAccountCreator extends string = string, TAccountPool extends string = string, TAccountMint extends string = string, TAccountQuoteMint extends string = string, TAccountQuoteConfig extends string = string, TAccountCreatorTokens extends string = string, TAccountVault extends string = string, TAccountVenue extends string = string, TAccountInstructions extends string = string, TAccountTokenProgram extends string = string, TAccountQuoteTokenProgram extends string = string, TAccountAssociatedTokenProgram extends string = string, TAccountSystemProgram extends string = string> = {\n creator: TransactionSigner<TAccountCreator>;\npool?: Address<TAccountPool>;\nmint: Address<TAccountMint>;\n/**\n * The quote mint. Classic SPL Token, or Token-2022 with the bounded\n * profile `tokens::validate_quote_mint` accepts.\n */\nquoteMint: Address<TAccountQuoteMint>;\n/** quote mint, by its owner, discriminator, curve type and quote field. */\nquoteConfig: Address<TAccountQuoteConfig>;\ncreatorTokens?: Address<TAccountCreatorTokens>;\nvault?: Address<TAccountVault>;\n/** introspected. A new coin is always on the curve, so CPMM is refused. */\nvenue: Address<TAccountVenue>;\ninstructions?: Address<TAccountInstructions>;\ntokenProgram?: Address<TAccountTokenProgram>;\nquoteTokenProgram: Address<TAccountQuoteTokenProgram>;\nassociatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\nsystemProgram?: Address<TAccountSystemProgram>;\ntiers: InitializePoolInstructionDataArgs[\"tiers\"];\nmaxSeedQuoteIn: InitializePoolInstructionDataArgs[\"maxSeedQuoteIn\"];\nmaxSeedNativeDebit: InitializePoolInstructionDataArgs[\"maxSeedNativeDebit\"];\nextraSeedTokens: InitializePoolInstructionDataArgs[\"extraSeedTokens\"];\n}\n\nexport async function getInitializePoolInstructionAsync<TAccountCreator extends string, TAccountPool extends string, TAccountMint extends string, TAccountQuoteMint extends string, TAccountQuoteConfig extends string, TAccountCreatorTokens extends string, TAccountVault extends string, TAccountVenue extends string, TAccountInstructions extends string, TAccountTokenProgram extends string, TAccountQuoteTokenProgram extends string, TAccountAssociatedTokenProgram extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof GABOX_PROGRAM_ADDRESS>(input: InitializePoolAsyncInput<TAccountCreator, TAccountPool, TAccountMint, TAccountQuoteMint, TAccountQuoteConfig, TAccountCreatorTokens, TAccountVault, TAccountVenue, TAccountInstructions, TAccountTokenProgram, TAccountQuoteTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>, config?: { programAddress?: TProgramAddress } ): Promise<InitializePoolInstruction<TProgramAddress, TAccountCreator, TAccountPool, TAccountMint, TAccountQuoteMint, TAccountQuoteConfig, TAccountCreatorTokens, TAccountVault, TAccountVenue, TAccountInstructions, TAccountTokenProgram, TAccountQuoteTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { creator: { value: input.creator ?? null, isWritable: true }, pool: { value: input.pool ?? null, isWritable: true }, mint: { value: input.mint ?? null, isWritable: false }, quoteMint: { value: input.quoteMint ?? null, isWritable: false }, quoteConfig: { value: input.quoteConfig ?? null, isWritable: false }, creatorTokens: { value: input.creatorTokens ?? null, isWritable: true }, vault: { value: input.vault ?? null, isWritable: true }, venue: { value: input.venue ?? null, isWritable: false }, instructions: { value: input.instructions ?? null, isWritable: false }, tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, quoteTokenProgram: { value: input.quoteTokenProgram ?? null, isWritable: false }, associatedTokenProgram: { value: input.associatedTokenProgram ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Original args.\nconst args = { ...input, };\n\n\n// Resolve default values.\nif (!accounts.pool.value) {\naccounts.pool.value = await findPoolPda({ mint: getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value) }, { programAddress });\n}\nif (!accounts.creatorTokens.value) {\naccounts.creatorTokens.value = await getProgramDerivedAddress({ programAddress: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>, seeds: [getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"creator\", accounts.creator.value)), getBytesEncoder().encode(new Uint8Array([6, 221, 246, 225, 215, 101, 161, 147, 217, 203, 225, 70, 206, 235, 121, 172, 28, 180, 133, 237, 95, 91, 55, 145, 58, 140, 245, 133, 126, 255, 0, 169])), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value))] });\n}\nif (!accounts.vault.value) {\naccounts.vault.value = await getProgramDerivedAddress({ programAddress: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>, seeds: [getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"pool\", accounts.pool.value)), getBytesEncoder().encode(new Uint8Array([6, 221, 246, 225, 215, 101, 161, 147, 217, 203, 225, 70, 206, 235, 121, 172, 28, 180, 133, 237, 95, 91, 55, 145, 58, 140, 245, 133, 126, 255, 0, 169])), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value))] });\n}\nif (!accounts.instructions.value) {\naccounts.instructions.value = 'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;\n}\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\nif (!accounts.associatedTokenProgram.value) {\naccounts.associatedTokenProgram.value = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n}\nif (!accounts.systemProgram.value) {\naccounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"creator\", accounts.creator), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"mint\", accounts.mint), getAccountMeta(\"quoteMint\", accounts.quoteMint), getAccountMeta(\"quoteConfig\", accounts.quoteConfig), getAccountMeta(\"creatorTokens\", accounts.creatorTokens), getAccountMeta(\"vault\", accounts.vault), getAccountMeta(\"venue\", accounts.venue), getAccountMeta(\"instructions\", accounts.instructions), getAccountMeta(\"tokenProgram\", accounts.tokenProgram), getAccountMeta(\"quoteTokenProgram\", accounts.quoteTokenProgram), getAccountMeta(\"associatedTokenProgram\", accounts.associatedTokenProgram), getAccountMeta(\"systemProgram\", accounts.systemProgram)], data: getInitializePoolInstructionDataEncoder().encode(args as InitializePoolInstructionDataArgs), programAddress } as InitializePoolInstruction<TProgramAddress, TAccountCreator, TAccountPool, TAccountMint, TAccountQuoteMint, TAccountQuoteConfig, TAccountCreatorTokens, TAccountVault, TAccountVenue, TAccountInstructions, TAccountTokenProgram, TAccountQuoteTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>);\n}\n\nexport type InitializePoolInput<TAccountCreator extends string = string, TAccountPool extends string = string, TAccountMint extends string = string, TAccountQuoteMint extends string = string, TAccountQuoteConfig extends string = string, TAccountCreatorTokens extends string = string, TAccountVault extends string = string, TAccountVenue extends string = string, TAccountInstructions extends string = string, TAccountTokenProgram extends string = string, TAccountQuoteTokenProgram extends string = string, TAccountAssociatedTokenProgram extends string = string, TAccountSystemProgram extends string = string> = {\n creator: TransactionSigner<TAccountCreator>;\npool: Address<TAccountPool>;\nmint: Address<TAccountMint>;\n/**\n * The quote mint. Classic SPL Token, or Token-2022 with the bounded\n * profile `tokens::validate_quote_mint` accepts.\n */\nquoteMint: Address<TAccountQuoteMint>;\n/** quote mint, by its owner, discriminator, curve type and quote field. */\nquoteConfig: Address<TAccountQuoteConfig>;\ncreatorTokens: Address<TAccountCreatorTokens>;\nvault: Address<TAccountVault>;\n/** introspected. A new coin is always on the curve, so CPMM is refused. */\nvenue: Address<TAccountVenue>;\ninstructions?: Address<TAccountInstructions>;\ntokenProgram?: Address<TAccountTokenProgram>;\nquoteTokenProgram: Address<TAccountQuoteTokenProgram>;\nassociatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\nsystemProgram?: Address<TAccountSystemProgram>;\ntiers: InitializePoolInstructionDataArgs[\"tiers\"];\nmaxSeedQuoteIn: InitializePoolInstructionDataArgs[\"maxSeedQuoteIn\"];\nmaxSeedNativeDebit: InitializePoolInstructionDataArgs[\"maxSeedNativeDebit\"];\nextraSeedTokens: InitializePoolInstructionDataArgs[\"extraSeedTokens\"];\n}\n\nexport function getInitializePoolInstruction<TAccountCreator extends string, TAccountPool extends string, TAccountMint extends string, TAccountQuoteMint extends string, TAccountQuoteConfig extends string, TAccountCreatorTokens extends string, TAccountVault extends string, TAccountVenue extends string, TAccountInstructions extends string, TAccountTokenProgram extends string, TAccountQuoteTokenProgram extends string, TAccountAssociatedTokenProgram extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof GABOX_PROGRAM_ADDRESS>(input: InitializePoolInput<TAccountCreator, TAccountPool, TAccountMint, TAccountQuoteMint, TAccountQuoteConfig, TAccountCreatorTokens, TAccountVault, TAccountVenue, TAccountInstructions, TAccountTokenProgram, TAccountQuoteTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>, config?: { programAddress?: TProgramAddress } ): InitializePoolInstruction<TProgramAddress, TAccountCreator, TAccountPool, TAccountMint, TAccountQuoteMint, TAccountQuoteConfig, TAccountCreatorTokens, TAccountVault, TAccountVenue, TAccountInstructions, TAccountTokenProgram, TAccountQuoteTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { creator: { value: input.creator ?? null, isWritable: true }, pool: { value: input.pool ?? null, isWritable: true }, mint: { value: input.mint ?? null, isWritable: false }, quoteMint: { value: input.quoteMint ?? null, isWritable: false }, quoteConfig: { value: input.quoteConfig ?? null, isWritable: false }, creatorTokens: { value: input.creatorTokens ?? null, isWritable: true }, vault: { value: input.vault ?? null, isWritable: true }, venue: { value: input.venue ?? null, isWritable: false }, instructions: { value: input.instructions ?? null, isWritable: false }, tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, quoteTokenProgram: { value: input.quoteTokenProgram ?? null, isWritable: false }, associatedTokenProgram: { value: input.associatedTokenProgram ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Original args.\nconst args = { ...input, };\n\n\n// Resolve default values.\nif (!accounts.instructions.value) {\naccounts.instructions.value = 'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;\n}\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\nif (!accounts.associatedTokenProgram.value) {\naccounts.associatedTokenProgram.value = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n}\nif (!accounts.systemProgram.value) {\naccounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"creator\", accounts.creator), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"mint\", accounts.mint), getAccountMeta(\"quoteMint\", accounts.quoteMint), getAccountMeta(\"quoteConfig\", accounts.quoteConfig), getAccountMeta(\"creatorTokens\", accounts.creatorTokens), getAccountMeta(\"vault\", accounts.vault), getAccountMeta(\"venue\", accounts.venue), getAccountMeta(\"instructions\", accounts.instructions), getAccountMeta(\"tokenProgram\", accounts.tokenProgram), getAccountMeta(\"quoteTokenProgram\", accounts.quoteTokenProgram), getAccountMeta(\"associatedTokenProgram\", accounts.associatedTokenProgram), getAccountMeta(\"systemProgram\", accounts.systemProgram)], data: getInitializePoolInstructionDataEncoder().encode(args as InitializePoolInstructionDataArgs), programAddress } as InitializePoolInstruction<TProgramAddress, TAccountCreator, TAccountPool, TAccountMint, TAccountQuoteMint, TAccountQuoteConfig, TAccountCreatorTokens, TAccountVault, TAccountVenue, TAccountInstructions, TAccountTokenProgram, TAccountQuoteTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>);\n}\n\nexport type ParsedInitializePoolInstruction<TProgram extends string = typeof GABOX_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = { programAddress: Address<TProgram>;\naccounts: {\ncreator: TAccountMetas[0];\npool: TAccountMetas[1];\nmint: TAccountMetas[2];\n/**\n * The quote mint. Classic SPL Token, or Token-2022 with the bounded\n * profile `tokens::validate_quote_mint` accepts.\n */\nquoteMint: TAccountMetas[3];\n/** quote mint, by its owner, discriminator, curve type and quote field. */\nquoteConfig: TAccountMetas[4];\ncreatorTokens: TAccountMetas[5];\nvault: TAccountMetas[6];\n/** introspected. A new coin is always on the curve, so CPMM is refused. */\nvenue: TAccountMetas[7];\ninstructions: TAccountMetas[8];\ntokenProgram: TAccountMetas[9];\nquoteTokenProgram: TAccountMetas[10];\nassociatedTokenProgram: TAccountMetas[11];\nsystemProgram: TAccountMetas[12];\n};\ndata: InitializePoolInstructionData; };\n\nexport function parseInitializePoolInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedInitializePoolInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 13) {\n throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 13 });\n}\nlet accountIndex = 0;\nconst getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n}\n return { programAddress: instruction.programAddress, accounts: { creator: getNextAccount(), pool: getNextAccount(), mint: getNextAccount(), quoteMint: getNextAccount(), quoteConfig: getNextAccount(), creatorTokens: getNextAccount(), vault: getNextAccount(), venue: getNextAccount(), instructions: getNextAccount(), tokenProgram: getNextAccount(), quoteTokenProgram: getNextAccount(), associatedTokenProgram: getNextAccount(), systemProgram: getNextAccount() }, data: getInitializePoolInstructionDataDecoder().decode(instruction.data) };\n}","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { combineCodec, fixDecoderSize, fixEncoderSize, getBytesDecoder, getBytesEncoder, getStructDecoder, getStructEncoder, getU64Decoder, getU64Encoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder, type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type WritableSignerAccount } from '@solana/kit';\nimport { getAccountMetaFactory, type ResolvedInstructionAccount } from '@solana/program-client-core';\nimport { findIdentityPda } from '../pdas';\nimport { GABOX_PROGRAM_ADDRESS } from '../programs';\n\nexport const RETRY_DRAW_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([112, 118, 137, 120, 211, 39, 196, 96]);\n\nexport function getRetryDrawDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(RETRY_DRAW_DISCRIMINATOR); }\n\nexport type RetryDrawInstruction<TProgram extends string = typeof GABOX_PROGRAM_ADDRESS, TAccountPayer extends string | AccountMeta<string> = string, TAccountPool extends string | AccountMeta<string> = string, TAccountDraw extends string | AccountMeta<string> = string, TAccountIdentity extends string | AccountMeta<string> = string, TAccountQueue extends string | AccountMeta<string> = \"Cuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh\", TAccountProgram extends string | AccountMeta<string> = \"Vrf1RNUjXmQGjmQrQLvJHs9SNkvDJEsRVFPkfSQUwGz\", TAccountSlotHashes extends string | AccountMeta<string> = \"SysvarS1otHashes111111111111111111111111111\", TAccountSystemProgram extends string | AccountMeta<string> = \"11111111111111111111111111111111\", TRemainingAccounts extends readonly AccountMeta<string>[] = []> =\nInstruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountPayer extends string ? WritableSignerAccount<TAccountPayer> & AccountSignerMeta<TAccountPayer> : TAccountPayer, TAccountPool extends string ? ReadonlyAccount<TAccountPool> : TAccountPool, TAccountDraw extends string ? WritableAccount<TAccountDraw> : TAccountDraw, TAccountIdentity extends string ? ReadonlyAccount<TAccountIdentity> : TAccountIdentity, TAccountQueue extends string ? WritableAccount<TAccountQueue> : TAccountQueue, TAccountProgram extends string ? ReadonlyAccount<TAccountProgram> : TAccountProgram, TAccountSlotHashes extends string ? ReadonlyAccount<TAccountSlotHashes> : TAccountSlotHashes, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, ...TRemainingAccounts]>;\n\nexport type RetryDrawInstructionData = { discriminator: ReadonlyUint8Array; maxVrfDebit: bigint; };\n\nexport type RetryDrawInstructionDataArgs = { maxVrfDebit: number | bigint; };\n\nexport function getRetryDrawInstructionDataEncoder(): FixedSizeEncoder<RetryDrawInstructionDataArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['maxVrfDebit', getU64Encoder()]]), (value) => ({ ...value, discriminator: RETRY_DRAW_DISCRIMINATOR }));\n}\n\nexport function getRetryDrawInstructionDataDecoder(): FixedSizeDecoder<RetryDrawInstructionData> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['maxVrfDebit', getU64Decoder()]]);\n}\n\nexport function getRetryDrawInstructionDataCodec(): FixedSizeCodec<RetryDrawInstructionDataArgs, RetryDrawInstructionData> {\n return combineCodec(getRetryDrawInstructionDataEncoder(), getRetryDrawInstructionDataDecoder());\n}\n\nexport type RetryDrawAsyncInput<TAccountPayer extends string = string, TAccountPool extends string = string, TAccountDraw extends string = string, TAccountIdentity extends string = string, TAccountQueue extends string = string, TAccountProgram extends string = string, TAccountSlotHashes extends string = string, TAccountSystemProgram extends string = string> = {\n payer: TransactionSigner<TAccountPayer>;\n/**\n * This account carries no `seeds` constraint, unlike every other\n * instruction. There is no `mint` account here to build the seed from,\n * and none is needed: `draw` names this pool with `has_one`, so the draw\n * always belongs to it, and the account type already proves the Gabox\n * program owns it. A retry only pays for another randomness request. The\n * callback lands in `deliver_draw`, which checks the full pool seeds\n * before any tokens move.\n */\npool: Address<TAccountPool>;\ndraw: Address<TAccountDraw>;\nidentity?: Address<TAccountIdentity>;\nqueue?: Address<TAccountQueue>;\nprogram?: Address<TAccountProgram>;\nslotHashes?: Address<TAccountSlotHashes>;\nsystemProgram?: Address<TAccountSystemProgram>;\nmaxVrfDebit: RetryDrawInstructionDataArgs[\"maxVrfDebit\"];\n}\n\nexport async function getRetryDrawInstructionAsync<TAccountPayer extends string, TAccountPool extends string, TAccountDraw extends string, TAccountIdentity extends string, TAccountQueue extends string, TAccountProgram extends string, TAccountSlotHashes extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof GABOX_PROGRAM_ADDRESS>(input: RetryDrawAsyncInput<TAccountPayer, TAccountPool, TAccountDraw, TAccountIdentity, TAccountQueue, TAccountProgram, TAccountSlotHashes, TAccountSystemProgram>, config?: { programAddress?: TProgramAddress } ): Promise<RetryDrawInstruction<TProgramAddress, TAccountPayer, TAccountPool, TAccountDraw, TAccountIdentity, TAccountQueue, TAccountProgram, TAccountSlotHashes, TAccountSystemProgram>> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { payer: { value: input.payer ?? null, isWritable: true }, pool: { value: input.pool ?? null, isWritable: false }, draw: { value: input.draw ?? null, isWritable: true }, identity: { value: input.identity ?? null, isWritable: false }, queue: { value: input.queue ?? null, isWritable: true }, program: { value: input.program ?? null, isWritable: false }, slotHashes: { value: input.slotHashes ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Original args.\nconst args = { ...input, };\n\n\n// Resolve default values.\nif (!accounts.identity.value) {\naccounts.identity.value = await findIdentityPda({ programAddress });\n}\nif (!accounts.queue.value) {\naccounts.queue.value = 'Cuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh' as Address<'Cuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh'>;\n}\nif (!accounts.program.value) {\naccounts.program.value = 'Vrf1RNUjXmQGjmQrQLvJHs9SNkvDJEsRVFPkfSQUwGz' as Address<'Vrf1RNUjXmQGjmQrQLvJHs9SNkvDJEsRVFPkfSQUwGz'>;\n}\nif (!accounts.slotHashes.value) {\naccounts.slotHashes.value = 'SysvarS1otHashes111111111111111111111111111' as Address<'SysvarS1otHashes111111111111111111111111111'>;\n}\nif (!accounts.systemProgram.value) {\naccounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"payer\", accounts.payer), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"draw\", accounts.draw), getAccountMeta(\"identity\", accounts.identity), getAccountMeta(\"queue\", accounts.queue), getAccountMeta(\"program\", accounts.program), getAccountMeta(\"slotHashes\", accounts.slotHashes), getAccountMeta(\"systemProgram\", accounts.systemProgram)], data: getRetryDrawInstructionDataEncoder().encode(args as RetryDrawInstructionDataArgs), programAddress } as RetryDrawInstruction<TProgramAddress, TAccountPayer, TAccountPool, TAccountDraw, TAccountIdentity, TAccountQueue, TAccountProgram, TAccountSlotHashes, TAccountSystemProgram>);\n}\n\nexport type RetryDrawInput<TAccountPayer extends string = string, TAccountPool extends string = string, TAccountDraw extends string = string, TAccountIdentity extends string = string, TAccountQueue extends string = string, TAccountProgram extends string = string, TAccountSlotHashes extends string = string, TAccountSystemProgram extends string = string> = {\n payer: TransactionSigner<TAccountPayer>;\n/**\n * This account carries no `seeds` constraint, unlike every other\n * instruction. There is no `mint` account here to build the seed from,\n * and none is needed: `draw` names this pool with `has_one`, so the draw\n * always belongs to it, and the account type already proves the Gabox\n * program owns it. A retry only pays for another randomness request. The\n * callback lands in `deliver_draw`, which checks the full pool seeds\n * before any tokens move.\n */\npool: Address<TAccountPool>;\ndraw: Address<TAccountDraw>;\nidentity: Address<TAccountIdentity>;\nqueue?: Address<TAccountQueue>;\nprogram?: Address<TAccountProgram>;\nslotHashes?: Address<TAccountSlotHashes>;\nsystemProgram?: Address<TAccountSystemProgram>;\nmaxVrfDebit: RetryDrawInstructionDataArgs[\"maxVrfDebit\"];\n}\n\nexport function getRetryDrawInstruction<TAccountPayer extends string, TAccountPool extends string, TAccountDraw extends string, TAccountIdentity extends string, TAccountQueue extends string, TAccountProgram extends string, TAccountSlotHashes extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof GABOX_PROGRAM_ADDRESS>(input: RetryDrawInput<TAccountPayer, TAccountPool, TAccountDraw, TAccountIdentity, TAccountQueue, TAccountProgram, TAccountSlotHashes, TAccountSystemProgram>, config?: { programAddress?: TProgramAddress } ): RetryDrawInstruction<TProgramAddress, TAccountPayer, TAccountPool, TAccountDraw, TAccountIdentity, TAccountQueue, TAccountProgram, TAccountSlotHashes, TAccountSystemProgram> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { payer: { value: input.payer ?? null, isWritable: true }, pool: { value: input.pool ?? null, isWritable: false }, draw: { value: input.draw ?? null, isWritable: true }, identity: { value: input.identity ?? null, isWritable: false }, queue: { value: input.queue ?? null, isWritable: true }, program: { value: input.program ?? null, isWritable: false }, slotHashes: { value: input.slotHashes ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Original args.\nconst args = { ...input, };\n\n\n// Resolve default values.\nif (!accounts.queue.value) {\naccounts.queue.value = 'Cuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh' as Address<'Cuj97ggrhhidhbu39TijNVqE74xvKJ69gDervRUXAxGh'>;\n}\nif (!accounts.program.value) {\naccounts.program.value = 'Vrf1RNUjXmQGjmQrQLvJHs9SNkvDJEsRVFPkfSQUwGz' as Address<'Vrf1RNUjXmQGjmQrQLvJHs9SNkvDJEsRVFPkfSQUwGz'>;\n}\nif (!accounts.slotHashes.value) {\naccounts.slotHashes.value = 'SysvarS1otHashes111111111111111111111111111' as Address<'SysvarS1otHashes111111111111111111111111111'>;\n}\nif (!accounts.systemProgram.value) {\naccounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"payer\", accounts.payer), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"draw\", accounts.draw), getAccountMeta(\"identity\", accounts.identity), getAccountMeta(\"queue\", accounts.queue), getAccountMeta(\"program\", accounts.program), getAccountMeta(\"slotHashes\", accounts.slotHashes), getAccountMeta(\"systemProgram\", accounts.systemProgram)], data: getRetryDrawInstructionDataEncoder().encode(args as RetryDrawInstructionDataArgs), programAddress } as RetryDrawInstruction<TProgramAddress, TAccountPayer, TAccountPool, TAccountDraw, TAccountIdentity, TAccountQueue, TAccountProgram, TAccountSlotHashes, TAccountSystemProgram>);\n}\n\nexport type ParsedRetryDrawInstruction<TProgram extends string = typeof GABOX_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = { programAddress: Address<TProgram>;\naccounts: {\npayer: TAccountMetas[0];\n/**\n * This account carries no `seeds` constraint, unlike every other\n * instruction. There is no `mint` account here to build the seed from,\n * and none is needed: `draw` names this pool with `has_one`, so the draw\n * always belongs to it, and the account type already proves the Gabox\n * program owns it. A retry only pays for another randomness request. The\n * callback lands in `deliver_draw`, which checks the full pool seeds\n * before any tokens move.\n */\npool: TAccountMetas[1];\ndraw: TAccountMetas[2];\nidentity: TAccountMetas[3];\nqueue: TAccountMetas[4];\nprogram: TAccountMetas[5];\nslotHashes: TAccountMetas[6];\nsystemProgram: TAccountMetas[7];\n};\ndata: RetryDrawInstructionData; };\n\nexport function parseRetryDrawInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedRetryDrawInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 8) {\n throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 8 });\n}\nlet accountIndex = 0;\nconst getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n}\n return { programAddress: instruction.programAddress, accounts: { payer: getNextAccount(), pool: getNextAccount(), draw: getNextAccount(), identity: getNextAccount(), queue: getNextAccount(), program: getNextAccount(), slotHashes: getNextAccount(), systemProgram: getNextAccount() }, data: getRetryDrawInstructionDataDecoder().decode(instruction.data) };\n}","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { combineCodec, fixDecoderSize, fixEncoderSize, getAddressEncoder, getBytesDecoder, getBytesEncoder, getProgramDerivedAddress, getStructDecoder, getStructEncoder, getU64Decoder, getU64Encoder, SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, SolanaError, transformEncoder, type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type WritableSignerAccount } from '@solana/kit';\nimport { getAccountMetaFactory, getAddressFromResolvedInstructionAccount, type ResolvedInstructionAccount } from '@solana/program-client-core';\nimport { findPoolPda } from '../pdas';\nimport { GABOX_PROGRAM_ADDRESS } from '../programs';\n\nexport const SELL_TOKENS_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([114, 242, 25, 12, 62, 126, 92, 2]);\n\nexport function getSellTokensDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(SELL_TOKENS_DISCRIMINATOR); }\n\nexport type SellTokensInstruction<TProgram extends string = typeof GABOX_PROGRAM_ADDRESS, TAccountSeller extends string | AccountMeta<string> = string, TAccountPool extends string | AccountMeta<string> = string, TAccountMint extends string | AccountMeta<string> = string, TAccountQuoteMint extends string | AccountMeta<string> = string, TAccountUserTokens extends string | AccountMeta<string> = string, TAccountVenue extends string | AccountMeta<string> = string, TAccountTokenProgram extends string | AccountMeta<string> = \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\", TAccountQuoteTokenProgram extends string | AccountMeta<string> = string, TRemainingAccounts extends readonly AccountMeta<string>[] = []> =\nInstruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountSeller extends string ? WritableSignerAccount<TAccountSeller> & AccountSignerMeta<TAccountSeller> : TAccountSeller, TAccountPool extends string ? ReadonlyAccount<TAccountPool> : TAccountPool, TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint, TAccountQuoteMint extends string ? ReadonlyAccount<TAccountQuoteMint> : TAccountQuoteMint, TAccountUserTokens extends string ? WritableAccount<TAccountUserTokens> : TAccountUserTokens, TAccountVenue extends string ? ReadonlyAccount<TAccountVenue> : TAccountVenue, TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram, TAccountQuoteTokenProgram extends string ? ReadonlyAccount<TAccountQuoteTokenProgram> : TAccountQuoteTokenProgram, ...TRemainingAccounts]>;\n\nexport type SellTokensInstructionData = { discriminator: ReadonlyUint8Array; amount: bigint; minQuoteOutput: bigint; maxNativeDebit: bigint; };\n\nexport type SellTokensInstructionDataArgs = { amount: number | bigint; minQuoteOutput: number | bigint; maxNativeDebit: number | bigint; };\n\nexport function getSellTokensInstructionDataEncoder(): FixedSizeEncoder<SellTokensInstructionDataArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['amount', getU64Encoder()], ['minQuoteOutput', getU64Encoder()], ['maxNativeDebit', getU64Encoder()]]), (value) => ({ ...value, discriminator: SELL_TOKENS_DISCRIMINATOR }));\n}\n\nexport function getSellTokensInstructionDataDecoder(): FixedSizeDecoder<SellTokensInstructionData> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['amount', getU64Decoder()], ['minQuoteOutput', getU64Decoder()], ['maxNativeDebit', getU64Decoder()]]);\n}\n\nexport function getSellTokensInstructionDataCodec(): FixedSizeCodec<SellTokensInstructionDataArgs, SellTokensInstructionData> {\n return combineCodec(getSellTokensInstructionDataEncoder(), getSellTokensInstructionDataDecoder());\n}\n\nexport type SellTokensAsyncInput<TAccountSeller extends string = string, TAccountPool extends string = string, TAccountMint extends string = string, TAccountQuoteMint extends string = string, TAccountUserTokens extends string = string, TAccountVenue extends string = string, TAccountTokenProgram extends string = string, TAccountQuoteTokenProgram extends string = string> = {\n seller: TransactionSigner<TAccountSeller>;\npool?: Address<TAccountPool>;\nmint: Address<TAccountMint>;\nquoteMint: Address<TAccountQuoteMint>;\nuserTokens?: Address<TAccountUserTokens>;\n/** LaunchLab before graduation, CPMM after it. */\nvenue: Address<TAccountVenue>;\ntokenProgram?: Address<TAccountTokenProgram>;\nquoteTokenProgram: Address<TAccountQuoteTokenProgram>;\namount: SellTokensInstructionDataArgs[\"amount\"];\nminQuoteOutput: SellTokensInstructionDataArgs[\"minQuoteOutput\"];\nmaxNativeDebit: SellTokensInstructionDataArgs[\"maxNativeDebit\"];\n}\n\nexport async function getSellTokensInstructionAsync<TAccountSeller extends string, TAccountPool extends string, TAccountMint extends string, TAccountQuoteMint extends string, TAccountUserTokens extends string, TAccountVenue extends string, TAccountTokenProgram extends string, TAccountQuoteTokenProgram extends string, TProgramAddress extends Address = typeof GABOX_PROGRAM_ADDRESS>(input: SellTokensAsyncInput<TAccountSeller, TAccountPool, TAccountMint, TAccountQuoteMint, TAccountUserTokens, TAccountVenue, TAccountTokenProgram, TAccountQuoteTokenProgram>, config?: { programAddress?: TProgramAddress } ): Promise<SellTokensInstruction<TProgramAddress, TAccountSeller, TAccountPool, TAccountMint, TAccountQuoteMint, TAccountUserTokens, TAccountVenue, TAccountTokenProgram, TAccountQuoteTokenProgram>> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { seller: { value: input.seller ?? null, isWritable: true }, pool: { value: input.pool ?? null, isWritable: false }, mint: { value: input.mint ?? null, isWritable: false }, quoteMint: { value: input.quoteMint ?? null, isWritable: false }, userTokens: { value: input.userTokens ?? null, isWritable: true }, venue: { value: input.venue ?? null, isWritable: false }, tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, quoteTokenProgram: { value: input.quoteTokenProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Original args.\nconst args = { ...input, };\n\n\n// Resolve default values.\nif (!accounts.pool.value) {\naccounts.pool.value = await findPoolPda({ mint: getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value) }, { programAddress });\n}\nif (!accounts.userTokens.value) {\naccounts.userTokens.value = await getProgramDerivedAddress({ programAddress: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>, seeds: [getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"seller\", accounts.seller.value)), getBytesEncoder().encode(new Uint8Array([6, 221, 246, 225, 215, 101, 161, 147, 217, 203, 225, 70, 206, 235, 121, 172, 28, 180, 133, 237, 95, 91, 55, 145, 58, 140, 245, 133, 126, 255, 0, 169])), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value))] });\n}\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"seller\", accounts.seller), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"mint\", accounts.mint), getAccountMeta(\"quoteMint\", accounts.quoteMint), getAccountMeta(\"userTokens\", accounts.userTokens), getAccountMeta(\"venue\", accounts.venue), getAccountMeta(\"tokenProgram\", accounts.tokenProgram), getAccountMeta(\"quoteTokenProgram\", accounts.quoteTokenProgram)], data: getSellTokensInstructionDataEncoder().encode(args as SellTokensInstructionDataArgs), programAddress } as SellTokensInstruction<TProgramAddress, TAccountSeller, TAccountPool, TAccountMint, TAccountQuoteMint, TAccountUserTokens, TAccountVenue, TAccountTokenProgram, TAccountQuoteTokenProgram>);\n}\n\nexport type SellTokensInput<TAccountSeller extends string = string, TAccountPool extends string = string, TAccountMint extends string = string, TAccountQuoteMint extends string = string, TAccountUserTokens extends string = string, TAccountVenue extends string = string, TAccountTokenProgram extends string = string, TAccountQuoteTokenProgram extends string = string> = {\n seller: TransactionSigner<TAccountSeller>;\npool: Address<TAccountPool>;\nmint: Address<TAccountMint>;\nquoteMint: Address<TAccountQuoteMint>;\nuserTokens: Address<TAccountUserTokens>;\n/** LaunchLab before graduation, CPMM after it. */\nvenue: Address<TAccountVenue>;\ntokenProgram?: Address<TAccountTokenProgram>;\nquoteTokenProgram: Address<TAccountQuoteTokenProgram>;\namount: SellTokensInstructionDataArgs[\"amount\"];\nminQuoteOutput: SellTokensInstructionDataArgs[\"minQuoteOutput\"];\nmaxNativeDebit: SellTokensInstructionDataArgs[\"maxNativeDebit\"];\n}\n\nexport function getSellTokensInstruction<TAccountSeller extends string, TAccountPool extends string, TAccountMint extends string, TAccountQuoteMint extends string, TAccountUserTokens extends string, TAccountVenue extends string, TAccountTokenProgram extends string, TAccountQuoteTokenProgram extends string, TProgramAddress extends Address = typeof GABOX_PROGRAM_ADDRESS>(input: SellTokensInput<TAccountSeller, TAccountPool, TAccountMint, TAccountQuoteMint, TAccountUserTokens, TAccountVenue, TAccountTokenProgram, TAccountQuoteTokenProgram>, config?: { programAddress?: TProgramAddress } ): SellTokensInstruction<TProgramAddress, TAccountSeller, TAccountPool, TAccountMint, TAccountQuoteMint, TAccountUserTokens, TAccountVenue, TAccountTokenProgram, TAccountQuoteTokenProgram> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { seller: { value: input.seller ?? null, isWritable: true }, pool: { value: input.pool ?? null, isWritable: false }, mint: { value: input.mint ?? null, isWritable: false }, quoteMint: { value: input.quoteMint ?? null, isWritable: false }, userTokens: { value: input.userTokens ?? null, isWritable: true }, venue: { value: input.venue ?? null, isWritable: false }, tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, quoteTokenProgram: { value: input.quoteTokenProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Original args.\nconst args = { ...input, };\n\n\n// Resolve default values.\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"seller\", accounts.seller), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"mint\", accounts.mint), getAccountMeta(\"quoteMint\", accounts.quoteMint), getAccountMeta(\"userTokens\", accounts.userTokens), getAccountMeta(\"venue\", accounts.venue), getAccountMeta(\"tokenProgram\", accounts.tokenProgram), getAccountMeta(\"quoteTokenProgram\", accounts.quoteTokenProgram)], data: getSellTokensInstructionDataEncoder().encode(args as SellTokensInstructionDataArgs), programAddress } as SellTokensInstruction<TProgramAddress, TAccountSeller, TAccountPool, TAccountMint, TAccountQuoteMint, TAccountUserTokens, TAccountVenue, TAccountTokenProgram, TAccountQuoteTokenProgram>);\n}\n\nexport type ParsedSellTokensInstruction<TProgram extends string = typeof GABOX_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = { programAddress: Address<TProgram>;\naccounts: {\nseller: TAccountMetas[0];\npool: TAccountMetas[1];\nmint: TAccountMetas[2];\nquoteMint: TAccountMetas[3];\nuserTokens: TAccountMetas[4];\n/** LaunchLab before graduation, CPMM after it. */\nvenue: TAccountMetas[5];\ntokenProgram: TAccountMetas[6];\nquoteTokenProgram: TAccountMetas[7];\n};\ndata: SellTokensInstructionData; };\n\nexport function parseSellTokensInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedSellTokensInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 8) {\n throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 8 });\n}\nlet accountIndex = 0;\nconst getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n}\n return { programAddress: instruction.programAddress, accounts: { seller: getNextAccount(), pool: getNextAccount(), mint: getNextAccount(), quoteMint: getNextAccount(), userTokens: getNextAccount(), venue: getNextAccount(), tokenProgram: getNextAccount(), quoteTokenProgram: getNextAccount() }, data: getSellTokensInstructionDataDecoder().decode(instruction.data) };\n}","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport { assertIsInstructionWithAccounts, containsBytes, extendClient, fixEncoderSize, getBytesEncoder, SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT, SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION, SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE, SolanaError, type Address, type ClientWithPayer, type ClientWithRpc, type ClientWithTransactionPlanning, type ClientWithTransactionSending, type ExtendedClient, type GetAccountInfoApi, type GetMultipleAccountsApi, type Instruction, type InstructionWithData, type ReadonlyUint8Array } from '@solana/kit';\nimport { addSelfFetchFunctions, addSelfPlanAndSendFunctions, type SelfFetchFunctions, type SelfPlanAndSendFunctions } from '@solana/program-client-core';\nimport { getDrawCodec, getPoolCodec, getWalletActivityCodec, type Draw, type DrawArgs, type Pool, type PoolArgs, type WalletActivity, type WalletActivityArgs } from '../accounts';\nimport { getBuyPacksInstructionAsync, getClaimPrizeInstructionAsync, getClaimPrizeToInstructionAsync, getDeliverDrawInstructionAsync, getExpireDrawInstructionAsync, getFundPrizesInstructionAsync, getInitializePoolInstructionAsync, getRetryDrawInstructionAsync, getSellTokensInstructionAsync, parseBuyPacksInstruction, parseClaimPrizeInstruction, parseClaimPrizeToInstruction, parseDeliverDrawInstruction, parseExpireDrawInstruction, parseFundPrizesInstruction, parseInitializePoolInstruction, parseRetryDrawInstruction, parseSellTokensInstruction, type BuyPacksAsyncInput, type ClaimPrizeAsyncInput, type ClaimPrizeToAsyncInput, type DeliverDrawAsyncInput, type ExpireDrawAsyncInput, type FundPrizesAsyncInput, type InitializePoolAsyncInput, type ParsedBuyPacksInstruction, type ParsedClaimPrizeInstruction, type ParsedClaimPrizeToInstruction, type ParsedDeliverDrawInstruction, type ParsedExpireDrawInstruction, type ParsedFundPrizesInstruction, type ParsedInitializePoolInstruction, type ParsedRetryDrawInstruction, type ParsedSellTokensInstruction, type RetryDrawAsyncInput, type SellTokensAsyncInput } from '../instructions';\nimport { findActivityPda, findDrawPda, findIdentityPda, findPoolPda } from '../pdas';\n\nexport const GABOX_PROGRAM_ADDRESS = 'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA' as Address<'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA'>;\n\nexport enum GaboxAccount { Draw, Pool, WalletActivity }\n\nexport function identifyGaboxAccount(account: { data: ReadonlyUint8Array } | ReadonlyUint8Array): GaboxAccount {\n const data = 'data' in account ? account.data : account;\n if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([27, 129, 22, 20, 6, 20, 18, 20])), 0)) { return GaboxAccount.Draw; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([48, 150, 170, 25, 50, 211, 226, 239])), 0)) { return GaboxAccount.Pool; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([212, 80, 180, 131, 173, 1, 252, 141])), 0)) { return GaboxAccount.WalletActivity; }\n throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT, { accountData: data, programName: \"gabox\" });\n}\n\nexport enum GaboxEvent { DrawResolved, PacksBought, PoolCreated, PrizeClaimed, PrizesFunded, RandomnessRetried, TokensSold }\n\nexport function identifyGaboxEvent(event: { data: ReadonlyUint8Array } | ReadonlyUint8Array): GaboxEvent {\n const data = 'data' in event ? event.data : event;\n if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([127, 177, 62, 146, 164, 90, 185, 218])), 0)) { return GaboxEvent.DrawResolved; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([44, 243, 223, 11, 90, 23, 184, 47])), 0)) { return GaboxEvent.PacksBought; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([202, 44, 41, 88, 104, 220, 157, 82])), 0)) { return GaboxEvent.PoolCreated; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([213, 150, 192, 76, 199, 33, 212, 38])), 0)) { return GaboxEvent.PrizeClaimed; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([188, 129, 185, 44, 234, 71, 53, 60])), 0)) { return GaboxEvent.PrizesFunded; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([243, 30, 148, 22, 14, 127, 52, 140])), 0)) { return GaboxEvent.RandomnessRetried; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([217, 83, 68, 137, 134, 225, 94, 45])), 0)) { return GaboxEvent.TokensSold; }\n throw new Error('The provided event could not be identified as a gabox event.');\n}\n\nexport enum GaboxInstruction { BuyPacks, ClaimPrize, ClaimPrizeTo, DeliverDraw, ExpireDraw, FundPrizes, InitializePool, RetryDraw, SellTokens }\n\nexport function identifyGaboxInstruction(instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array): GaboxInstruction {\n const data = 'data' in instruction ? instruction.data : instruction;\n if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([136, 30, 10, 209, 228, 139, 105, 138])), 0)) { return GaboxInstruction.BuyPacks; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([157, 233, 139, 121, 246, 62, 234, 235])), 0)) { return GaboxInstruction.ClaimPrize; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([247, 118, 231, 78, 81, 61, 176, 150])), 0)) { return GaboxInstruction.ClaimPrizeTo; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([113, 181, 226, 173, 237, 138, 199, 51])), 0)) { return GaboxInstruction.DeliverDraw; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([100, 119, 235, 75, 8, 25, 252, 255])), 0)) { return GaboxInstruction.ExpireDraw; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([163, 225, 193, 125, 144, 171, 29, 241])), 0)) { return GaboxInstruction.FundPrizes; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([95, 180, 10, 172, 84, 174, 232, 40])), 0)) { return GaboxInstruction.InitializePool; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([112, 118, 137, 120, 211, 39, 196, 96])), 0)) { return GaboxInstruction.RetryDraw; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([114, 242, 25, 12, 62, 126, 92, 2])), 0)) { return GaboxInstruction.SellTokens; }\n throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION, { instructionData: data, programName: \"gabox\" });\n}\n\nexport type ParsedGaboxInstruction<TProgram extends string = 'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA'> =\n| { instructionType: GaboxInstruction.BuyPacks } & ParsedBuyPacksInstruction<TProgram>\n| { instructionType: GaboxInstruction.ClaimPrize } & ParsedClaimPrizeInstruction<TProgram>\n| { instructionType: GaboxInstruction.ClaimPrizeTo } & ParsedClaimPrizeToInstruction<TProgram>\n| { instructionType: GaboxInstruction.DeliverDraw } & ParsedDeliverDrawInstruction<TProgram>\n| { instructionType: GaboxInstruction.ExpireDraw } & ParsedExpireDrawInstruction<TProgram>\n| { instructionType: GaboxInstruction.FundPrizes } & ParsedFundPrizesInstruction<TProgram>\n| { instructionType: GaboxInstruction.InitializePool } & ParsedInitializePoolInstruction<TProgram>\n| { instructionType: GaboxInstruction.RetryDraw } & ParsedRetryDrawInstruction<TProgram>\n| { instructionType: GaboxInstruction.SellTokens } & ParsedSellTokensInstruction<TProgram>\n\n\n export function parseGaboxInstruction<TProgram extends string>(\n instruction: Instruction<TProgram>\n & InstructionWithData<ReadonlyUint8Array>\n ): ParsedGaboxInstruction<TProgram> {\n const instructionType = identifyGaboxInstruction(instruction);\n switch (instructionType) {\n case GaboxInstruction.BuyPacks: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxInstruction.BuyPacks, ...parseBuyPacksInstruction(instruction) }; }\ncase GaboxInstruction.ClaimPrize: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxInstruction.ClaimPrize, ...parseClaimPrizeInstruction(instruction) }; }\ncase GaboxInstruction.ClaimPrizeTo: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxInstruction.ClaimPrizeTo, ...parseClaimPrizeToInstruction(instruction) }; }\ncase GaboxInstruction.DeliverDraw: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxInstruction.DeliverDraw, ...parseDeliverDrawInstruction(instruction) }; }\ncase GaboxInstruction.ExpireDraw: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxInstruction.ExpireDraw, ...parseExpireDrawInstruction(instruction) }; }\ncase GaboxInstruction.FundPrizes: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxInstruction.FundPrizes, ...parseFundPrizesInstruction(instruction) }; }\ncase GaboxInstruction.InitializePool: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxInstruction.InitializePool, ...parseInitializePoolInstruction(instruction) }; }\ncase GaboxInstruction.RetryDraw: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxInstruction.RetryDraw, ...parseRetryDrawInstruction(instruction) }; }\ncase GaboxInstruction.SellTokens: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxInstruction.SellTokens, ...parseSellTokensInstruction(instruction) }; }\n default: throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE, { instructionType: instructionType as string, programName: \"gabox\" });\n }\n }\n\nexport type GaboxPlugin = { accounts: GaboxPluginAccounts; instructions: GaboxPluginInstructions; pdas: GaboxPluginPdas; identifyAccount: typeof identifyGaboxAccount; identifyInstruction: typeof identifyGaboxInstruction; parseInstruction: typeof parseGaboxInstruction; }\n\nexport type GaboxPluginAccounts = { draw: ReturnType<typeof getDrawCodec> & SelfFetchFunctions<DrawArgs, Draw>; pool: ReturnType<typeof getPoolCodec> & SelfFetchFunctions<PoolArgs, Pool>; walletActivity: ReturnType<typeof getWalletActivityCodec> & SelfFetchFunctions<WalletActivityArgs, WalletActivity>; }\n\nexport type GaboxPluginInstructions = { buyPacks: (input: BuyPacksAsyncInput) => ReturnType<typeof getBuyPacksInstructionAsync> & SelfPlanAndSendFunctions; claimPrize: (input: MakeOptional<ClaimPrizeAsyncInput, \"payer\">) => ReturnType<typeof getClaimPrizeInstructionAsync> & SelfPlanAndSendFunctions; claimPrizeTo: (input: ClaimPrizeToAsyncInput) => ReturnType<typeof getClaimPrizeToInstructionAsync> & SelfPlanAndSendFunctions; deliverDraw: (input: DeliverDrawAsyncInput) => ReturnType<typeof getDeliverDrawInstructionAsync> & SelfPlanAndSendFunctions; expireDraw: (input: ExpireDrawAsyncInput) => ReturnType<typeof getExpireDrawInstructionAsync> & SelfPlanAndSendFunctions; fundPrizes: (input: FundPrizesAsyncInput) => ReturnType<typeof getFundPrizesInstructionAsync> & SelfPlanAndSendFunctions; initializePool: (input: InitializePoolAsyncInput) => ReturnType<typeof getInitializePoolInstructionAsync> & SelfPlanAndSendFunctions; retryDraw: (input: MakeOptional<RetryDrawAsyncInput, \"payer\">) => ReturnType<typeof getRetryDrawInstructionAsync> & SelfPlanAndSendFunctions; sellTokens: (input: SellTokensAsyncInput) => ReturnType<typeof getSellTokensInstructionAsync> & SelfPlanAndSendFunctions; }\n\nexport type GaboxPluginPdas = { pool: typeof findPoolPda; draw: typeof findDrawPda; activity: typeof findActivityPda; identity: typeof findIdentityPda; }\n\nexport type GaboxPluginRequirements = ClientWithRpc<GetAccountInfoApi & GetMultipleAccountsApi> & ClientWithPayer & ClientWithTransactionPlanning & ClientWithTransactionSending\n\nexport function gaboxProgram() {\n return <T extends GaboxPluginRequirements>(client: T): ExtendedClient<T, { gabox: GaboxPlugin }> => {\n return extendClient(client, { gabox: <GaboxPlugin>{ accounts: { draw: addSelfFetchFunctions(client, getDrawCodec()), pool: addSelfFetchFunctions(client, getPoolCodec()), walletActivity: addSelfFetchFunctions(client, getWalletActivityCodec()) }, instructions: { buyPacks: input => addSelfPlanAndSendFunctions(client, getBuyPacksInstructionAsync(input)), claimPrize: input => addSelfPlanAndSendFunctions(client, getClaimPrizeInstructionAsync({ ...input, payer: input.payer ?? client.payer })), claimPrizeTo: input => addSelfPlanAndSendFunctions(client, getClaimPrizeToInstructionAsync(input)), deliverDraw: input => addSelfPlanAndSendFunctions(client, getDeliverDrawInstructionAsync(input)), expireDraw: input => addSelfPlanAndSendFunctions(client, getExpireDrawInstructionAsync(input)), fundPrizes: input => addSelfPlanAndSendFunctions(client, getFundPrizesInstructionAsync(input)), initializePool: input => addSelfPlanAndSendFunctions(client, getInitializePoolInstructionAsync(input)), retryDraw: input => addSelfPlanAndSendFunctions(client, getRetryDrawInstructionAsync({ ...input, payer: input.payer ?? client.payer })), sellTokens: input => addSelfPlanAndSendFunctions(client, getSellTokensInstructionAsync(input)) }, pdas: { pool: findPoolPda, draw: findDrawPda, activity: findActivityPda, identity: findIdentityPda }, identifyAccount: identifyGaboxAccount, identifyInstruction: identifyGaboxInstruction, parseInstruction: parseGaboxInstruction } });\n };\n}\n\ntype MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;"],"mappings":"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"}