@gabox-labs/sdk 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaboxV2-CV2XltqC.js","names":[],"sources":["../src/generated/types/drawStatus.ts","../src/generated/types/prize.ts","../src/generated/types/tier.ts","../src/generated/accounts/draw.ts","../src/generated/accounts/pool.ts","../src/generated/accounts/referral.ts","../src/generated/accounts/referralLink.ts","../src/generated/pdas/claimReferralReferral.ts","../src/generated/pdas/draw.ts","../src/generated/pdas/identity.ts","../src/generated/pdas/link.ts","../src/generated/pdas/pool.ts","../src/generated/pdas/referral.ts","../src/generated/pdas/referralLink.ts","../src/generated/instructions/bindReferrer.ts","../src/generated/instructions/buyPack.ts","../src/generated/instructions/claimPrize.ts","../src/generated/instructions/claimReferral.ts","../src/generated/instructions/deliverDraw.ts","../src/generated/instructions/expireDraw.ts","../src/generated/instructions/fulfillDraw.ts","../src/generated/instructions/fundPrizes.ts","../src/generated/instructions/initializePool.ts","../src/generated/instructions/retryDraw.ts","../src/generated/instructions/sellPrize.ts","../src/generated/instructions/sellTokens.ts","../src/generated/programs/gaboxV2.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, getEnumDecoder, getEnumEncoder, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder } from '@solana/kit';\n\nexport enum DrawStatus { Pending, Ready }\n\nexport type DrawStatusArgs = DrawStatus;\n\nexport function getDrawStatusEncoder(): FixedSizeEncoder<DrawStatusArgs> {\n return getEnumEncoder(DrawStatus);\n}\n\nexport function getDrawStatusDecoder(): FixedSizeDecoder<DrawStatus> {\n return getEnumDecoder(DrawStatus);\n}\n\nexport function getDrawStatusCodec(): FixedSizeCodec<DrawStatusArgs, DrawStatus> {\n return combineCodec(getDrawStatusEncoder(), getDrawStatusDecoder());\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, getStructDecoder, getStructEncoder, getU32Decoder, getU32Encoder, getU64Decoder, getU64Encoder, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder } from '@solana/kit';\n\nexport type Prize = { amount: bigint; tickets: number; };\n\nexport type PrizeArgs = { amount: number | bigint; tickets: number; };\n\nexport function getPrizeEncoder(): FixedSizeEncoder<PrizeArgs> {\n return getStructEncoder([['amount', getU64Encoder()], ['tickets', getU32Encoder()]]);\n}\n\nexport function getPrizeDecoder(): FixedSizeDecoder<Prize> {\n return getStructDecoder([['amount', getU64Decoder()], ['tickets', getU32Decoder()]]);\n}\n\nexport function getPrizeCodec(): FixedSizeCodec<PrizeArgs, Prize> {\n return combineCodec(getPrizeEncoder(), getPrizeDecoder());\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, 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 { getDrawStatusDecoder, getDrawStatusEncoder, getPrizeDecoder, getPrizeEncoder, type DrawStatus, type DrawStatusArgs, type Prize, type PrizeArgs } from '../types';\n\nexport const DRAW_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([225, 131, 41, 222, 122, 20, 146, 202]);\n\nexport function getDrawDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(DRAW_DISCRIMINATOR); }\n\nexport type Draw = { discriminator: ReadonlyUint8Array; pool: Address; purchaser: Address; seq: bigint; bump: number; status: DrawStatus; requestSlot: bigint; lastAttemptSlot: bigint; attempts: number; maximum: bigint; minimum: bigint; prizes: Array<Prize>; amount: bigint; randomness: ReadonlyUint8Array; timedOut: boolean; };\n\nexport type DrawArgs = { pool: Address; purchaser: Address; seq: number | bigint; bump: number; status: DrawStatusArgs; requestSlot: number | bigint; lastAttemptSlot: number | bigint; attempts: number; maximum: number | bigint; minimum: number | bigint; prizes: Array<PrizeArgs>; amount: number | bigint; randomness: ReadonlyUint8Array; timedOut: boolean; };\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()], ['seq', getU64Encoder()], ['bump', getU8Encoder()], ['status', getDrawStatusEncoder()], ['requestSlot', getU64Encoder()], ['lastAttemptSlot', getU64Encoder()], ['attempts', getU8Encoder()], ['maximum', getU64Encoder()], ['minimum', getU64Encoder()], ['prizes', getArrayEncoder(getPrizeEncoder(), { size: 8 })], ['amount', getU64Encoder()], ['randomness', fixEncoderSize(getBytesEncoder(), 32)], ['timedOut', getBooleanEncoder()]]), (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()], ['seq', getU64Decoder()], ['bump', getU8Decoder()], ['status', getDrawStatusDecoder()], ['requestSlot', getU64Decoder()], ['lastAttemptSlot', getU64Decoder()], ['attempts', getU8Decoder()], ['maximum', getU64Decoder()], ['minimum', getU64Decoder()], ['prizes', getArrayDecoder(getPrizeDecoder(), { size: 8 })], ['amount', getU64Decoder()], ['randomness', fixDecoderSize(getBytesDecoder(), 32)], ['timedOut', getBooleanDecoder()]]);\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 252;\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, getU16Decoder, getU16Encoder, 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([241, 154, 109, 4, 17, 177, 109, 188]);\n\nexport function getPoolDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(POOL_DISCRIMINATOR); }\n\nexport type Pool = { discriminator: ReadonlyUint8Array; creator: Address; mint: Address; tokenProgram: Address; vault: Address; bump: number;\n/**\n * Fixed token count of one pack, in base units. Always `PACK_TOKENS` for\n * this program version. The venue decides what that costs in SOL.\n */\npackTokens: bigint;\n/**\n * The creator's fee per pack, in basis points of what the venue charged.\n * At most `MAX_FEE_BPS`. Immutable and disclosed.\n */\nfeeBps: number;\n/**\n * Lamports the seed buy cost the creator at creation. Recorded for\n * display; the jackpot is defined by `seed_tokens`, not by this.\n */\nseedLamports: bigint;\n/**\n * Tokens the seed buy deposited permanently in the vault. Exactly\n * `(max_multiplier - 1x) * pack_tokens`, so the first pack can pay the\n * largest tier in full.\n */\nseedTokens: bigint; tiers: Array<Tier>; nextSeq: bigint;\n/** Maximum awards reserved by pending draws. Never creator revenue. */\nreserved: bigint; };\n\nexport type PoolArgs = { creator: Address; mint: Address; tokenProgram: Address; vault: Address; bump: number;\n/**\n * Fixed token count of one pack, in base units. Always `PACK_TOKENS` for\n * this program version. The venue decides what that costs in SOL.\n */\npackTokens: number | bigint;\n/**\n * The creator's fee per pack, in basis points of what the venue charged.\n * At most `MAX_FEE_BPS`. Immutable and disclosed.\n */\nfeeBps: number;\n/**\n * Lamports the seed buy cost the creator at creation. Recorded for\n * display; the jackpot is defined by `seed_tokens`, not by this.\n */\nseedLamports: number | bigint;\n/**\n * Tokens the seed buy deposited permanently in the vault. Exactly\n * `(max_multiplier - 1x) * pack_tokens`, so the first pack can pay the\n * largest tier in full.\n */\nseedTokens: number | bigint; tiers: Array<TierArgs>; nextSeq: number | bigint;\n/** Maximum awards reserved by pending draws. Never creator revenue. */\nreserved: number | bigint; };\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()], ['tokenProgram', getAddressEncoder()], ['vault', getAddressEncoder()], ['bump', getU8Encoder()], ['packTokens', getU64Encoder()], ['feeBps', getU16Encoder()], ['seedLamports', getU64Encoder()], ['seedTokens', getU64Encoder()], ['tiers', getArrayEncoder(getTierEncoder(), { size: 8 })], ['nextSeq', getU64Encoder()], ['reserved', getU64Encoder()]]), (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()], ['tokenProgram', getAddressDecoder()], ['vault', getAddressDecoder()], ['bump', getU8Decoder()], ['packTokens', getU64Decoder()], ['feeBps', getU16Decoder()], ['seedLamports', getU64Decoder()], ['seedTokens', getU64Decoder()], ['tiers', getArrayDecoder(getTierDecoder(), { size: 8 })], ['nextSeq', getU64Decoder()], ['reserved', getU64Decoder()]]);\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 243;\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 REFERRAL_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([30, 235, 136, 224, 106, 107, 49, 64]);\n\nexport function getReferralDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(REFERRAL_DISCRIMINATOR); }\n\nexport type Referral = { discriminator: ReadonlyUint8Array; pool: Address; referrer: Address; owed: bigint; bump: number; };\n\nexport type ReferralArgs = { pool: Address; referrer: Address; owed: number | bigint; bump: number; };\n\n/** Gets the encoder for {@link ReferralArgs} account data. */\nexport function getReferralEncoder(): FixedSizeEncoder<ReferralArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['pool', getAddressEncoder()], ['referrer', getAddressEncoder()], ['owed', getU64Encoder()], ['bump', getU8Encoder()]]), (value) => ({ ...value, discriminator: REFERRAL_DISCRIMINATOR }));\n}\n\n/** Gets the decoder for {@link Referral} account data. */\nexport function getReferralDecoder(): FixedSizeDecoder<Referral> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['pool', getAddressDecoder()], ['referrer', getAddressDecoder()], ['owed', getU64Decoder()], ['bump', getU8Decoder()]]);\n}\n\n/** Gets the codec for {@link Referral} account data. */\nexport function getReferralCodec(): FixedSizeCodec<ReferralArgs, Referral> {\n return combineCodec(getReferralEncoder(), getReferralDecoder());\n}\n\nexport function decodeReferral<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress>): Account<Referral, TAddress>;\nexport function decodeReferral<TAddress extends string = string>(encodedAccount: MaybeEncodedAccount<TAddress>): MaybeAccount<Referral, TAddress>;\nexport function decodeReferral<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>): Account<Referral, TAddress> | MaybeAccount<Referral, TAddress> {\n return decodeAccount(encodedAccount as MaybeEncodedAccount<TAddress>, getReferralDecoder());\n}\n\nexport async function fetchReferral<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<Referral, TAddress>> {\n const maybeAccount = await fetchMaybeReferral(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeReferral<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<Referral, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeReferral(maybeAccount);\n}\n\nexport async function fetchAllReferral(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<Referral>[]> {\n const maybeAccounts = await fetchAllMaybeReferral(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeReferral(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Referral>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeReferral(maybeAccount));\n}\n\nexport function getReferralSize(): number {\n return 81;\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, 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 REFERRAL_LINK_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([30, 231, 159, 98, 189, 47, 48, 5]);\n\nexport function getReferralLinkDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(REFERRAL_LINK_DISCRIMINATOR); }\n\nexport type ReferralLink = { discriminator: ReadonlyUint8Array; referee: Address; referrer: Address; bump: number; };\n\nexport type ReferralLinkArgs = { referee: Address; referrer: Address; bump: number; };\n\n/** Gets the encoder for {@link ReferralLinkArgs} account data. */\nexport function getReferralLinkEncoder(): FixedSizeEncoder<ReferralLinkArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['referee', getAddressEncoder()], ['referrer', getAddressEncoder()], ['bump', getU8Encoder()]]), (value) => ({ ...value, discriminator: REFERRAL_LINK_DISCRIMINATOR }));\n}\n\n/** Gets the decoder for {@link ReferralLink} account data. */\nexport function getReferralLinkDecoder(): FixedSizeDecoder<ReferralLink> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['referee', getAddressDecoder()], ['referrer', getAddressDecoder()], ['bump', getU8Decoder()]]);\n}\n\n/** Gets the codec for {@link ReferralLink} account data. */\nexport function getReferralLinkCodec(): FixedSizeCodec<ReferralLinkArgs, ReferralLink> {\n return combineCodec(getReferralLinkEncoder(), getReferralLinkDecoder());\n}\n\nexport function decodeReferralLink<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress>): Account<ReferralLink, TAddress>;\nexport function decodeReferralLink<TAddress extends string = string>(encodedAccount: MaybeEncodedAccount<TAddress>): MaybeAccount<ReferralLink, TAddress>;\nexport function decodeReferralLink<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>): Account<ReferralLink, TAddress> | MaybeAccount<ReferralLink, TAddress> {\n return decodeAccount(encodedAccount as MaybeEncodedAccount<TAddress>, getReferralLinkDecoder());\n}\n\nexport async function fetchReferralLink<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<ReferralLink, TAddress>> {\n const maybeAccount = await fetchMaybeReferralLink(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeReferralLink<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<ReferralLink, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeReferralLink(maybeAccount);\n}\n\nexport async function fetchAllReferralLink(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<ReferralLink>[]> {\n const maybeAccounts = await fetchAllMaybeReferralLink(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeReferralLink(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<ReferralLink>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeReferralLink(maybeAccount));\n}\n\nexport function getReferralLinkSize(): number {\n return 73;\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 ClaimReferralReferralSeeds = {\npool: Address;\nreferrer: Address;\n};\n\nexport async function findClaimReferralReferralPda(seeds: ClaimReferralReferralSeeds, config: { programAddress?: Address | undefined } = {}): Promise<ProgramDerivedAddress> {\n const { programAddress = 'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA' as Address<'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA'> } = config;\n return await getProgramDerivedAddress({ programAddress, seeds: [getBytesEncoder().encode(new Uint8Array([114, 101, 102, 101, 114, 114, 97, 108])), getAddressEncoder().encode(seeds.pool), getAddressEncoder().encode(seeds.referrer)]});\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;\nseq: 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), getU64Encoder().encode(seeds.seq)]});\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 LinkSeeds = {\nreferee: Address;\n};\n\nexport async function findLinkPda(seeds: LinkSeeds, config: { programAddress?: Address | undefined } = {}): Promise<ProgramDerivedAddress> {\n const { programAddress = 'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA' as Address<'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA'> } = config;\n return await getProgramDerivedAddress({ programAddress, seeds: [getBytesEncoder().encode(new Uint8Array([114, 101, 102, 101, 114, 114, 97, 108])), getAddressEncoder().encode(seeds.referee)]});\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 { getAddressEncoder, getBytesEncoder, getProgramDerivedAddress, type Address, type ProgramDerivedAddress } from '@solana/kit';\n\nexport type ReferralSeeds = {\npool: Address;\nreferralLink: Address;\n};\n\nexport async function findReferralPda(seeds: ReferralSeeds, config: { programAddress?: Address | undefined } = {}): Promise<ProgramDerivedAddress> {\n const { programAddress = 'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA' as Address<'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA'> } = config;\n return await getProgramDerivedAddress({ programAddress, seeds: [getBytesEncoder().encode(new Uint8Array([114, 101, 102, 101, 114, 114, 97, 108])), getAddressEncoder().encode(seeds.pool), getAddressEncoder().encode(seeds.referralLink)]});\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 ReferralLinkSeeds = {\npurchaser: Address;\n};\n\nexport async function findReferralLinkPda(seeds: ReferralLinkSeeds, config: { programAddress?: Address | undefined } = {}): Promise<ProgramDerivedAddress> {\n const { programAddress = 'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA' as Address<'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA'> } = config;\n return await getProgramDerivedAddress({ programAddress, seeds: [getBytesEncoder().encode(new Uint8Array([114, 101, 102, 101, 114, 114, 97, 108])), 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 { combineCodec, fixDecoderSize, fixEncoderSize, getAddressDecoder, getAddressEncoder, 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 { findLinkPda } from '../pdas';\nimport { GABOX_V2_PROGRAM_ADDRESS } from '../programs';\n\nexport const BIND_REFERRER_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([45, 172, 18, 187, 3, 160, 196, 176]);\n\nexport function getBindReferrerDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(BIND_REFERRER_DISCRIMINATOR); }\n\nexport type BindReferrerInstruction<TProgram extends string = typeof GABOX_V2_PROGRAM_ADDRESS, TAccountReferee extends string | AccountMeta<string> = string, TAccountLink extends string | AccountMeta<string> = string, TAccountSystemProgram extends string | AccountMeta<string> = \"11111111111111111111111111111111\", TRemainingAccounts extends readonly AccountMeta<string>[] = []> =\nInstruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountReferee extends string ? WritableSignerAccount<TAccountReferee> & AccountSignerMeta<TAccountReferee> : TAccountReferee, TAccountLink extends string ? WritableAccount<TAccountLink> : TAccountLink, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, ...TRemainingAccounts]>;\n\nexport type BindReferrerInstructionData = { discriminator: ReadonlyUint8Array; referrer: Address; };\n\nexport type BindReferrerInstructionDataArgs = { referrer: Address; };\n\nexport function getBindReferrerInstructionDataEncoder(): FixedSizeEncoder<BindReferrerInstructionDataArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['referrer', getAddressEncoder()]]), (value) => ({ ...value, discriminator: BIND_REFERRER_DISCRIMINATOR }));\n}\n\nexport function getBindReferrerInstructionDataDecoder(): FixedSizeDecoder<BindReferrerInstructionData> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['referrer', getAddressDecoder()]]);\n}\n\nexport function getBindReferrerInstructionDataCodec(): FixedSizeCodec<BindReferrerInstructionDataArgs, BindReferrerInstructionData> {\n return combineCodec(getBindReferrerInstructionDataEncoder(), getBindReferrerInstructionDataDecoder());\n}\n\nexport type BindReferrerAsyncInput<TAccountReferee extends string = string, TAccountLink extends string = string, TAccountSystemProgram extends string = string> = {\n referee: TransactionSigner<TAccountReferee>;\nlink?: Address<TAccountLink>;\nsystemProgram?: Address<TAccountSystemProgram>;\nreferrer: BindReferrerInstructionDataArgs[\"referrer\"];\n}\n\nexport async function getBindReferrerInstructionAsync<TAccountReferee extends string, TAccountLink extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof GABOX_V2_PROGRAM_ADDRESS>(input: BindReferrerAsyncInput<TAccountReferee, TAccountLink, TAccountSystemProgram>, config?: { programAddress?: TProgramAddress } ): Promise<BindReferrerInstruction<TProgramAddress, TAccountReferee, TAccountLink, TAccountSystemProgram>> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_V2_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { referee: { value: input.referee ?? null, isWritable: true }, link: { value: input.link ?? null, isWritable: true }, 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.link.value) {\naccounts.link.value = await findLinkPda({ referee: getAddressFromResolvedInstructionAccount(\"referee\", accounts.referee.value) }, { programAddress });\n}\nif (!accounts.systemProgram.value) {\naccounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"referee\", accounts.referee), getAccountMeta(\"link\", accounts.link), getAccountMeta(\"systemProgram\", accounts.systemProgram)], data: getBindReferrerInstructionDataEncoder().encode(args as BindReferrerInstructionDataArgs), programAddress } as BindReferrerInstruction<TProgramAddress, TAccountReferee, TAccountLink, TAccountSystemProgram>);\n}\n\nexport type BindReferrerInput<TAccountReferee extends string = string, TAccountLink extends string = string, TAccountSystemProgram extends string = string> = {\n referee: TransactionSigner<TAccountReferee>;\nlink: Address<TAccountLink>;\nsystemProgram?: Address<TAccountSystemProgram>;\nreferrer: BindReferrerInstructionDataArgs[\"referrer\"];\n}\n\nexport function getBindReferrerInstruction<TAccountReferee extends string, TAccountLink extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof GABOX_V2_PROGRAM_ADDRESS>(input: BindReferrerInput<TAccountReferee, TAccountLink, TAccountSystemProgram>, config?: { programAddress?: TProgramAddress } ): BindReferrerInstruction<TProgramAddress, TAccountReferee, TAccountLink, TAccountSystemProgram> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_V2_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { referee: { value: input.referee ?? null, isWritable: true }, link: { value: input.link ?? null, isWritable: true }, 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.systemProgram.value) {\naccounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"referee\", accounts.referee), getAccountMeta(\"link\", accounts.link), getAccountMeta(\"systemProgram\", accounts.systemProgram)], data: getBindReferrerInstructionDataEncoder().encode(args as BindReferrerInstructionDataArgs), programAddress } as BindReferrerInstruction<TProgramAddress, TAccountReferee, TAccountLink, TAccountSystemProgram>);\n}\n\nexport type ParsedBindReferrerInstruction<TProgram extends string = typeof GABOX_V2_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = { programAddress: Address<TProgram>;\naccounts: {\nreferee: TAccountMetas[0];\nlink: TAccountMetas[1];\nsystemProgram: TAccountMetas[2];\n};\ndata: BindReferrerInstructionData; };\n\nexport function parseBindReferrerInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedBindReferrerInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 3 });\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: { referee: getNextAccount(), link: getNextAccount(), systemProgram: getNextAccount() }, data: getBindReferrerInstructionDataDecoder().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 { findIdentityPda, findReferralLinkPda, findReferralPda } from '../pdas';\nimport { GABOX_V2_PROGRAM_ADDRESS } from '../programs';\n\nexport const BUY_PACK_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([151, 46, 141, 93, 174, 5, 49, 173]);\n\nexport function getBuyPackDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(BUY_PACK_DISCRIMINATOR); }\n\nexport type BuyPackInstruction<TProgram extends string = typeof GABOX_V2_PROGRAM_ADDRESS, TAccountPurchaser extends string | AccountMeta<string> = string, TAccountPool extends string | AccountMeta<string> = string, TAccountCreator extends string | AccountMeta<string> = string, TAccountFeeCollector extends string | AccountMeta<string> = \"5WcPTEQ59UqpQzjZUPbU8QRGCbj7NeQNLDa7DbsLkLKT\", TAccountDraw extends string | AccountMeta<string> = string, TAccountMint 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\", TAccountAssociatedTokenProgram extends string | AccountMeta<string> = \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\", TAccountSystemProgram extends string | AccountMeta<string> = \"11111111111111111111111111111111\", TAccountReferralLink extends string | AccountMeta<string> = string, TAccountReferral extends string | AccountMeta<string> = string, TRemainingAccounts extends readonly AccountMeta<string>[] = []> =\nInstruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountPurchaser extends string ? WritableSignerAccount<TAccountPurchaser> & AccountSignerMeta<TAccountPurchaser> : TAccountPurchaser, TAccountPool extends string ? WritableAccount<TAccountPool> : TAccountPool, TAccountCreator extends string ? WritableAccount<TAccountCreator> : TAccountCreator, TAccountFeeCollector extends string ? WritableAccount<TAccountFeeCollector> : TAccountFeeCollector, TAccountDraw extends string ? WritableAccount<TAccountDraw> : TAccountDraw, TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint, 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, TAccountAssociatedTokenProgram extends string ? ReadonlyAccount<TAccountAssociatedTokenProgram> : TAccountAssociatedTokenProgram, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, TAccountReferralLink extends string ? ReadonlyAccount<TAccountReferralLink> : TAccountReferralLink, TAccountReferral extends string ? WritableAccount<TAccountReferral> : TAccountReferral, ...TRemainingAccounts]>;\n\nexport type BuyPackInstructionData = { discriminator: ReadonlyUint8Array; maxQuoteIn: bigint; minMaximum: bigint; maxTotalDebit: bigint; };\n\nexport type BuyPackInstructionDataArgs = { maxQuoteIn: number | bigint; minMaximum: number | bigint; maxTotalDebit: number | bigint; };\n\nexport function getBuyPackInstructionDataEncoder(): FixedSizeEncoder<BuyPackInstructionDataArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['maxQuoteIn', getU64Encoder()], ['minMaximum', getU64Encoder()], ['maxTotalDebit', getU64Encoder()]]), (value) => ({ ...value, discriminator: BUY_PACK_DISCRIMINATOR }));\n}\n\nexport function getBuyPackInstructionDataDecoder(): FixedSizeDecoder<BuyPackInstructionData> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['maxQuoteIn', getU64Decoder()], ['minMaximum', getU64Decoder()], ['maxTotalDebit', getU64Decoder()]]);\n}\n\nexport function getBuyPackInstructionDataCodec(): FixedSizeCodec<BuyPackInstructionDataArgs, BuyPackInstructionData> {\n return combineCodec(getBuyPackInstructionDataEncoder(), getBuyPackInstructionDataDecoder());\n}\n\nexport type BuyPackAsyncInput<TAccountPurchaser extends string = string, TAccountPool extends string = string, TAccountCreator extends string = string, TAccountFeeCollector extends string = string, TAccountDraw extends string = string, TAccountMint 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, TAccountAssociatedTokenProgram extends string = string, TAccountSystemProgram extends string = string, TAccountReferralLink extends string = string, TAccountReferral extends string = string> = {\n purchaser: TransactionSigner<TAccountPurchaser>;\npool: Address<TAccountPool>;\ncreator: Address<TAccountCreator>;\nfeeCollector?: Address<TAccountFeeCollector>;\ndraw: Address<TAccountDraw>;\nmint: Address<TAccountMint>;\nvault: Address<TAccountVault>;\nuserTokens?: Address<TAccountUserTokens>;\nvenue: Address<TAccountVenue>;\nidentity?: Address<TAccountIdentity>;\nqueue?: Address<TAccountQueue>;\nprogram?: Address<TAccountProgram>;\nslotHashes?: Address<TAccountSlotHashes>;\ntokenProgram?: Address<TAccountTokenProgram>;\nassociatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\nsystemProgram?: Address<TAccountSystemProgram>;\nreferralLink?: Address<TAccountReferralLink>;\nreferral?: Address<TAccountReferral>;\nmaxQuoteIn: BuyPackInstructionDataArgs[\"maxQuoteIn\"];\nminMaximum: BuyPackInstructionDataArgs[\"minMaximum\"];\nmaxTotalDebit: BuyPackInstructionDataArgs[\"maxTotalDebit\"];\n}\n\nexport async function getBuyPackInstructionAsync<TAccountPurchaser extends string, TAccountPool extends string, TAccountCreator extends string, TAccountFeeCollector extends string, TAccountDraw extends string, TAccountMint 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, TAccountAssociatedTokenProgram extends string, TAccountSystemProgram extends string, TAccountReferralLink extends string, TAccountReferral extends string, TProgramAddress extends Address = typeof GABOX_V2_PROGRAM_ADDRESS>(input: BuyPackAsyncInput<TAccountPurchaser, TAccountPool, TAccountCreator, TAccountFeeCollector, TAccountDraw, TAccountMint, TAccountVault, TAccountUserTokens, TAccountVenue, TAccountIdentity, TAccountQueue, TAccountProgram, TAccountSlotHashes, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram, TAccountReferralLink, TAccountReferral>, config?: { programAddress?: TProgramAddress } ): Promise<BuyPackInstruction<TProgramAddress, TAccountPurchaser, TAccountPool, TAccountCreator, TAccountFeeCollector, TAccountDraw, TAccountMint, TAccountVault, TAccountUserTokens, TAccountVenue, TAccountIdentity, TAccountQueue, TAccountProgram, TAccountSlotHashes, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram, TAccountReferralLink, TAccountReferral>> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_V2_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { purchaser: { value: input.purchaser ?? null, isWritable: true }, pool: { value: input.pool ?? null, isWritable: true }, creator: { value: input.creator ?? null, isWritable: true }, feeCollector: { value: input.feeCollector ?? null, isWritable: true }, draw: { value: input.draw ?? null, isWritable: true }, mint: { value: input.mint ?? 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 }, associatedTokenProgram: { value: input.associatedTokenProgram ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false }, referralLink: { value: input.referralLink ?? null, isWritable: false }, referral: { value: input.referral ?? null, isWritable: true } }\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.feeCollector.value) {\naccounts.feeCollector.value = '5WcPTEQ59UqpQzjZUPbU8QRGCbj7NeQNLDa7DbsLkLKT' as Address<'5WcPTEQ59UqpQzjZUPbU8QRGCbj7NeQNLDa7DbsLkLKT'>;\n}\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\nif (!accounts.userTokens.value) {\naccounts.userTokens.value = await getProgramDerivedAddress({ programAddress: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>, seeds: [getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"purchaser\", accounts.purchaser.value)), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"tokenProgram\", accounts.tokenProgram.value)), 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.associatedTokenProgram.value) {\naccounts.associatedTokenProgram.value = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n}\nif (!accounts.systemProgram.value) {\naccounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n}\nif (!accounts.referralLink.value) {\naccounts.referralLink.value = await findReferralLinkPda({ purchaser: getAddressFromResolvedInstructionAccount(\"purchaser\", accounts.purchaser.value) }, { programAddress });\n}\nif (!accounts.referral.value) {\naccounts.referral.value = await findReferralPda({ pool: getAddressFromResolvedInstructionAccount(\"pool\", accounts.pool.value), referralLink: getAddressFromResolvedInstructionAccount(\"referralLink\", accounts.referralLink.value) }, { programAddress });\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"purchaser\", accounts.purchaser), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"creator\", accounts.creator), getAccountMeta(\"feeCollector\", accounts.feeCollector), getAccountMeta(\"draw\", accounts.draw), getAccountMeta(\"mint\", accounts.mint), 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(\"associatedTokenProgram\", accounts.associatedTokenProgram), getAccountMeta(\"systemProgram\", accounts.systemProgram), getAccountMeta(\"referralLink\", accounts.referralLink), getAccountMeta(\"referral\", accounts.referral)], data: getBuyPackInstructionDataEncoder().encode(args as BuyPackInstructionDataArgs), programAddress } as BuyPackInstruction<TProgramAddress, TAccountPurchaser, TAccountPool, TAccountCreator, TAccountFeeCollector, TAccountDraw, TAccountMint, TAccountVault, TAccountUserTokens, TAccountVenue, TAccountIdentity, TAccountQueue, TAccountProgram, TAccountSlotHashes, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram, TAccountReferralLink, TAccountReferral>);\n}\n\nexport type BuyPackInput<TAccountPurchaser extends string = string, TAccountPool extends string = string, TAccountCreator extends string = string, TAccountFeeCollector extends string = string, TAccountDraw extends string = string, TAccountMint 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, TAccountAssociatedTokenProgram extends string = string, TAccountSystemProgram extends string = string, TAccountReferralLink extends string = string, TAccountReferral extends string = string> = {\n purchaser: TransactionSigner<TAccountPurchaser>;\npool: Address<TAccountPool>;\ncreator: Address<TAccountCreator>;\nfeeCollector?: Address<TAccountFeeCollector>;\ndraw: Address<TAccountDraw>;\nmint: Address<TAccountMint>;\nvault: Address<TAccountVault>;\nuserTokens: Address<TAccountUserTokens>;\nvenue: Address<TAccountVenue>;\nidentity: Address<TAccountIdentity>;\nqueue?: Address<TAccountQueue>;\nprogram?: Address<TAccountProgram>;\nslotHashes?: Address<TAccountSlotHashes>;\ntokenProgram?: Address<TAccountTokenProgram>;\nassociatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\nsystemProgram?: Address<TAccountSystemProgram>;\nreferralLink?: Address<TAccountReferralLink>;\nreferral?: Address<TAccountReferral>;\nmaxQuoteIn: BuyPackInstructionDataArgs[\"maxQuoteIn\"];\nminMaximum: BuyPackInstructionDataArgs[\"minMaximum\"];\nmaxTotalDebit: BuyPackInstructionDataArgs[\"maxTotalDebit\"];\n}\n\nexport function getBuyPackInstruction<TAccountPurchaser extends string, TAccountPool extends string, TAccountCreator extends string, TAccountFeeCollector extends string, TAccountDraw extends string, TAccountMint 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, TAccountAssociatedTokenProgram extends string, TAccountSystemProgram extends string, TAccountReferralLink extends string, TAccountReferral extends string, TProgramAddress extends Address = typeof GABOX_V2_PROGRAM_ADDRESS>(input: BuyPackInput<TAccountPurchaser, TAccountPool, TAccountCreator, TAccountFeeCollector, TAccountDraw, TAccountMint, TAccountVault, TAccountUserTokens, TAccountVenue, TAccountIdentity, TAccountQueue, TAccountProgram, TAccountSlotHashes, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram, TAccountReferralLink, TAccountReferral>, config?: { programAddress?: TProgramAddress } ): BuyPackInstruction<TProgramAddress, TAccountPurchaser, TAccountPool, TAccountCreator, TAccountFeeCollector, TAccountDraw, TAccountMint, TAccountVault, TAccountUserTokens, TAccountVenue, TAccountIdentity, TAccountQueue, TAccountProgram, TAccountSlotHashes, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram, TAccountReferralLink, TAccountReferral> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_V2_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { purchaser: { value: input.purchaser ?? null, isWritable: true }, pool: { value: input.pool ?? null, isWritable: true }, creator: { value: input.creator ?? null, isWritable: true }, feeCollector: { value: input.feeCollector ?? null, isWritable: true }, draw: { value: input.draw ?? null, isWritable: true }, mint: { value: input.mint ?? 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 }, associatedTokenProgram: { value: input.associatedTokenProgram ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false }, referralLink: { value: input.referralLink ?? null, isWritable: false }, referral: { value: input.referral ?? null, isWritable: true } }\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.feeCollector.value) {\naccounts.feeCollector.value = '5WcPTEQ59UqpQzjZUPbU8QRGCbj7NeQNLDa7DbsLkLKT' as Address<'5WcPTEQ59UqpQzjZUPbU8QRGCbj7NeQNLDa7DbsLkLKT'>;\n}\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\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.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(\"creator\", accounts.creator), getAccountMeta(\"feeCollector\", accounts.feeCollector), getAccountMeta(\"draw\", accounts.draw), getAccountMeta(\"mint\", accounts.mint), 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(\"associatedTokenProgram\", accounts.associatedTokenProgram), getAccountMeta(\"systemProgram\", accounts.systemProgram), getAccountMeta(\"referralLink\", accounts.referralLink), getAccountMeta(\"referral\", accounts.referral)], data: getBuyPackInstructionDataEncoder().encode(args as BuyPackInstructionDataArgs), programAddress } as BuyPackInstruction<TProgramAddress, TAccountPurchaser, TAccountPool, TAccountCreator, TAccountFeeCollector, TAccountDraw, TAccountMint, TAccountVault, TAccountUserTokens, TAccountVenue, TAccountIdentity, TAccountQueue, TAccountProgram, TAccountSlotHashes, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram, TAccountReferralLink, TAccountReferral>);\n}\n\nexport type ParsedBuyPackInstruction<TProgram extends string = typeof GABOX_V2_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = { programAddress: Address<TProgram>;\naccounts: {\npurchaser: TAccountMetas[0];\npool: TAccountMetas[1];\ncreator: TAccountMetas[2];\nfeeCollector: TAccountMetas[3];\ndraw: TAccountMetas[4];\nmint: TAccountMetas[5];\nvault: TAccountMetas[6];\nuserTokens: TAccountMetas[7];\nvenue: TAccountMetas[8];\nidentity: TAccountMetas[9];\nqueue: TAccountMetas[10];\nprogram: TAccountMetas[11];\nslotHashes: TAccountMetas[12];\ntokenProgram: TAccountMetas[13];\nassociatedTokenProgram: TAccountMetas[14];\nsystemProgram: TAccountMetas[15];\nreferralLink?: TAccountMetas[16] | undefined;\nreferral?: TAccountMetas[17] | undefined;\n};\ndata: BuyPackInstructionData; };\n\nexport function parseBuyPackInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedBuyPackInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 18) {\n throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 18 });\n}\nlet accountIndex = 0;\nconst getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n}\nconst getNextOptionalAccount = () => {\n const accountMeta = getNextAccount();\n return accountMeta.address === GABOX_V2_PROGRAM_ADDRESS ? undefined : accountMeta;\n};\n return { programAddress: instruction.programAddress, accounts: { purchaser: getNextAccount(), pool: getNextAccount(), creator: getNextAccount(), feeCollector: getNextAccount(), draw: getNextAccount(), mint: getNextAccount(), vault: getNextAccount(), userTokens: getNextAccount(), venue: getNextAccount(), identity: getNextAccount(), queue: getNextAccount(), program: getNextAccount(), slotHashes: getNextAccount(), tokenProgram: getNextAccount(), associatedTokenProgram: getNextAccount(), systemProgram: getNextAccount(), referralLink: getNextOptionalAccount(), referral: getNextOptionalAccount() }, data: getBuyPackInstructionDataDecoder().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_V2_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_V2_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, 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<[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, 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<TAccountPurchaser extends string = string, TAccountPool extends string = string, TAccountDraw 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 purchaser: TransactionSigner<TAccountPurchaser>;\npool?: Address<TAccountPool>;\ndraw: Address<TAccountDraw>;\nmint: Address<TAccountMint>;\nvault: Address<TAccountVault>;\nuserTokens?: Address<TAccountUserTokens>;\ntokenProgram?: Address<TAccountTokenProgram>;\nassociatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\nsystemProgram?: Address<TAccountSystemProgram>;\n}\n\nexport async function getClaimPrizeInstructionAsync<TAccountPurchaser extends string, TAccountPool extends string, TAccountDraw 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_V2_PROGRAM_ADDRESS>(input: ClaimPrizeAsyncInput<TAccountPurchaser, TAccountPool, TAccountDraw, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>, config?: { programAddress?: TProgramAddress } ): Promise<ClaimPrizeInstruction<TProgramAddress, TAccountPurchaser, TAccountPool, TAccountDraw, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_V2_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 }, 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.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\nif (!accounts.userTokens.value) {\naccounts.userTokens.value = await getProgramDerivedAddress({ programAddress: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>, seeds: [getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"purchaser\", accounts.purchaser.value)), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"tokenProgram\", accounts.tokenProgram.value)), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value))] });\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(\"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, TAccountPurchaser, TAccountPool, TAccountDraw, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>);\n}\n\nexport type ClaimPrizeInput<TAccountPurchaser extends string = string, TAccountPool extends string = string, TAccountDraw 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 purchaser: TransactionSigner<TAccountPurchaser>;\npool: Address<TAccountPool>;\ndraw: Address<TAccountDraw>;\nmint: Address<TAccountMint>;\nvault: Address<TAccountVault>;\nuserTokens: Address<TAccountUserTokens>;\ntokenProgram?: Address<TAccountTokenProgram>;\nassociatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\nsystemProgram?: Address<TAccountSystemProgram>;\n}\n\nexport function getClaimPrizeInstruction<TAccountPurchaser extends string, TAccountPool extends string, TAccountDraw 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_V2_PROGRAM_ADDRESS>(input: ClaimPrizeInput<TAccountPurchaser, TAccountPool, TAccountDraw, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>, config?: { programAddress?: TProgramAddress } ): ClaimPrizeInstruction<TProgramAddress, TAccountPurchaser, TAccountPool, TAccountDraw, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_V2_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 }, 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(\"purchaser\", accounts.purchaser), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"draw\", accounts.draw), 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, TAccountPurchaser, TAccountPool, TAccountDraw, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>);\n}\n\nexport type ParsedClaimPrizeInstruction<TProgram extends string = typeof GABOX_V2_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];\nuserTokens: TAccountMetas[5];\ntokenProgram: TAccountMetas[6];\nassociatedTokenProgram: TAccountMetas[7];\nsystemProgram: TAccountMetas[8];\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 < 9) {\n throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 9 });\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(), 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 { findClaimReferralReferralPda } from '../pdas';\nimport { GABOX_V2_PROGRAM_ADDRESS } from '../programs';\n\nexport const CLAIM_REFERRAL_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([219, 247, 18, 148, 63, 247, 112, 198]);\n\nexport function getClaimReferralDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(CLAIM_REFERRAL_DISCRIMINATOR); }\n\nexport type ClaimReferralInstruction<TProgram extends string = typeof GABOX_V2_PROGRAM_ADDRESS, TAccountReferrer extends string | AccountMeta<string> = string, TAccountPool extends string | AccountMeta<string> = string, TAccountReferral extends string | AccountMeta<string> = string, TAccountSystemProgram extends string | AccountMeta<string> = \"11111111111111111111111111111111\", TRemainingAccounts extends readonly AccountMeta<string>[] = []> =\nInstruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountReferrer extends string ? WritableSignerAccount<TAccountReferrer> & AccountSignerMeta<TAccountReferrer> : TAccountReferrer, TAccountPool extends string ? ReadonlyAccount<TAccountPool> : TAccountPool, TAccountReferral extends string ? WritableAccount<TAccountReferral> : TAccountReferral, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, ...TRemainingAccounts]>;\n\nexport type ClaimReferralInstructionData = { discriminator: ReadonlyUint8Array; };\n\nexport type ClaimReferralInstructionDataArgs = { };\n\nexport function getClaimReferralInstructionDataEncoder(): FixedSizeEncoder<ClaimReferralInstructionDataArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]), (value) => ({ ...value, discriminator: CLAIM_REFERRAL_DISCRIMINATOR }));\n}\n\nexport function getClaimReferralInstructionDataDecoder(): FixedSizeDecoder<ClaimReferralInstructionData> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)]]);\n}\n\nexport function getClaimReferralInstructionDataCodec(): FixedSizeCodec<ClaimReferralInstructionDataArgs, ClaimReferralInstructionData> {\n return combineCodec(getClaimReferralInstructionDataEncoder(), getClaimReferralInstructionDataDecoder());\n}\n\nexport type ClaimReferralAsyncInput<TAccountReferrer extends string = string, TAccountPool extends string = string, TAccountReferral extends string = string, TAccountSystemProgram extends string = string> = {\n referrer: TransactionSigner<TAccountReferrer>;\npool: Address<TAccountPool>;\nreferral?: Address<TAccountReferral>;\nsystemProgram?: Address<TAccountSystemProgram>;\n}\n\nexport async function getClaimReferralInstructionAsync<TAccountReferrer extends string, TAccountPool extends string, TAccountReferral extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof GABOX_V2_PROGRAM_ADDRESS>(input: ClaimReferralAsyncInput<TAccountReferrer, TAccountPool, TAccountReferral, TAccountSystemProgram>, config?: { programAddress?: TProgramAddress } ): Promise<ClaimReferralInstruction<TProgramAddress, TAccountReferrer, TAccountPool, TAccountReferral, TAccountSystemProgram>> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_V2_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { referrer: { value: input.referrer ?? null, isWritable: true }, pool: { value: input.pool ?? null, isWritable: false }, referral: { value: input.referral ?? null, isWritable: true }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Resolve default values.\nif (!accounts.referral.value) {\naccounts.referral.value = await findClaimReferralReferralPda({ pool: getAddressFromResolvedInstructionAccount(\"pool\", accounts.pool.value), referrer: getAddressFromResolvedInstructionAccount(\"referrer\", accounts.referrer.value) }, { programAddress });\n}\nif (!accounts.systemProgram.value) {\naccounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"referrer\", accounts.referrer), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"referral\", accounts.referral), getAccountMeta(\"systemProgram\", accounts.systemProgram)], data: getClaimReferralInstructionDataEncoder().encode({}), programAddress } as ClaimReferralInstruction<TProgramAddress, TAccountReferrer, TAccountPool, TAccountReferral, TAccountSystemProgram>);\n}\n\nexport type ClaimReferralInput<TAccountReferrer extends string = string, TAccountPool extends string = string, TAccountReferral extends string = string, TAccountSystemProgram extends string = string> = {\n referrer: TransactionSigner<TAccountReferrer>;\npool: Address<TAccountPool>;\nreferral: Address<TAccountReferral>;\nsystemProgram?: Address<TAccountSystemProgram>;\n}\n\nexport function getClaimReferralInstruction<TAccountReferrer extends string, TAccountPool extends string, TAccountReferral extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof GABOX_V2_PROGRAM_ADDRESS>(input: ClaimReferralInput<TAccountReferrer, TAccountPool, TAccountReferral, TAccountSystemProgram>, config?: { programAddress?: TProgramAddress } ): ClaimReferralInstruction<TProgramAddress, TAccountReferrer, TAccountPool, TAccountReferral, TAccountSystemProgram> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_V2_PROGRAM_ADDRESS;\n\n // Original accounts.\nconst originalAccounts = { referrer: { value: input.referrer ?? null, isWritable: true }, pool: { value: input.pool ?? null, isWritable: false }, referral: { value: input.referral ?? null, isWritable: true }, systemProgram: { value: input.systemProgram ?? null, isWritable: false } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Resolve default values.\nif (!accounts.systemProgram.value) {\naccounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"referrer\", accounts.referrer), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"referral\", accounts.referral), getAccountMeta(\"systemProgram\", accounts.systemProgram)], data: getClaimReferralInstructionDataEncoder().encode({}), programAddress } as ClaimReferralInstruction<TProgramAddress, TAccountReferrer, TAccountPool, TAccountReferral, TAccountSystemProgram>);\n}\n\nexport type ParsedClaimReferralInstruction<TProgram extends string = typeof GABOX_V2_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = { programAddress: Address<TProgram>;\naccounts: {\nreferrer: TAccountMetas[0];\npool: TAccountMetas[1];\nreferral: TAccountMetas[2];\nsystemProgram: TAccountMetas[3];\n};\ndata: ClaimReferralInstructionData; };\n\nexport function parseClaimReferralInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedClaimReferralInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 4) {\n throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 4 });\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: { referrer: getNextAccount(), pool: getNextAccount(), referral: getNextAccount(), systemProgram: getNextAccount() }, data: getClaimReferralInstructionDataDecoder().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 ReadonlySignerAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount } from '@solana/kit';\nimport { getAccountMetaFactory, getAddressFromResolvedInstructionAccount, getNonNullResolvedInstructionInput, type ResolvedInstructionAccount } from '@solana/program-client-core';\nimport { findDrawPda, findPoolPda } from '../pdas';\nimport { GABOX_V2_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_V2_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; seq: bigint; };\n\nexport type DeliverDrawInstructionDataArgs = { randomness: ReadonlyUint8Array; seq: number | bigint; };\n\nexport function getDeliverDrawInstructionDataEncoder(): FixedSizeEncoder<DeliverDrawInstructionDataArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['randomness', fixEncoderSize(getBytesEncoder(), 32)], ['seq', 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)], ['seq', 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>;\nuserTokens?: Address<TAccountUserTokens>;\ntokenProgram?: Address<TAccountTokenProgram>;\nrandomness: DeliverDrawInstructionDataArgs[\"randomness\"];\nseq: DeliverDrawInstructionDataArgs[\"seq\"];\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_V2_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_V2_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.draw.value) {\naccounts.draw.value = await findDrawPda({ pool: getAddressFromResolvedInstructionAccount(\"pool\", accounts.pool.value), seq: getNonNullResolvedInstructionInput(\"seq\", args.seq) }, { programAddress });\n}\nif (!accounts.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\nif (!accounts.userTokens.value) {\naccounts.userTokens.value = await getProgramDerivedAddress({ programAddress: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>, seeds: [getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"purchaser\", accounts.purchaser.value)), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"tokenProgram\", accounts.tokenProgram.value)), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value))] });\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>;\nuserTokens: Address<TAccountUserTokens>;\ntokenProgram?: Address<TAccountTokenProgram>;\nrandomness: DeliverDrawInstructionDataArgs[\"randomness\"];\nseq: DeliverDrawInstructionDataArgs[\"seq\"];\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_V2_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_V2_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_V2_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];\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, getAddressEncoder, getBytesDecoder, getBytesEncoder, getProgramDerivedAddress, 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_V2_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_V2_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>;\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_V2_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_V2_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}\nif (!accounts.userTokens.value) {\naccounts.userTokens.value = await getProgramDerivedAddress({ programAddress: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>, seeds: [getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"purchaser\", accounts.purchaser.value)), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"tokenProgram\", accounts.tokenProgram.value)), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value))] });\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>;\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_V2_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_V2_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_V2_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];\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, 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 ReadonlySignerAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount } from '@solana/kit';\nimport { getAccountMetaFactory, getAddressFromResolvedInstructionAccount, getNonNullResolvedInstructionInput, type ResolvedInstructionAccount } from '@solana/program-client-core';\nimport { findDrawPda } from '../pdas';\nimport { GABOX_V2_PROGRAM_ADDRESS } from '../programs';\n\nexport const FULFILL_DRAW_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([136, 46, 22, 51, 33, 153, 232, 234]);\n\nexport function getFulfillDrawDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(FULFILL_DRAW_DISCRIMINATOR); }\n\nexport type FulfillDrawInstruction<TProgram extends string = typeof GABOX_V2_PROGRAM_ADDRESS, TAccountOracleIdentity extends string | AccountMeta<string> = string, TAccountPool extends string | AccountMeta<string> = string, TAccountDraw extends string | AccountMeta<string> = string, 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, ...TRemainingAccounts]>;\n\nexport type FulfillDrawInstructionData = { discriminator: ReadonlyUint8Array; randomness: ReadonlyUint8Array; seq: bigint; };\n\nexport type FulfillDrawInstructionDataArgs = { randomness: ReadonlyUint8Array; seq: number | bigint; };\n\nexport function getFulfillDrawInstructionDataEncoder(): FixedSizeEncoder<FulfillDrawInstructionDataArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['randomness', fixEncoderSize(getBytesEncoder(), 32)], ['seq', getU64Encoder()]]), (value) => ({ ...value, discriminator: FULFILL_DRAW_DISCRIMINATOR }));\n}\n\nexport function getFulfillDrawInstructionDataDecoder(): FixedSizeDecoder<FulfillDrawInstructionData> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['randomness', fixDecoderSize(getBytesDecoder(), 32)], ['seq', getU64Decoder()]]);\n}\n\nexport function getFulfillDrawInstructionDataCodec(): FixedSizeCodec<FulfillDrawInstructionDataArgs, FulfillDrawInstructionData> {\n return combineCodec(getFulfillDrawInstructionDataEncoder(), getFulfillDrawInstructionDataDecoder());\n}\n\nexport type FulfillDrawAsyncInput<TAccountOracleIdentity extends string = string, TAccountPool extends string = string, TAccountDraw extends string = string> = {\n oracleIdentity?: TransactionSigner<TAccountOracleIdentity>;\npool: Address<TAccountPool>;\ndraw?: Address<TAccountDraw>;\nrandomness: FulfillDrawInstructionDataArgs[\"randomness\"];\nseq: FulfillDrawInstructionDataArgs[\"seq\"];\n}\n\nexport async function getFulfillDrawInstructionAsync<TAccountOracleIdentity extends string, TAccountPool extends string, TAccountDraw extends string, TProgramAddress extends Address = typeof GABOX_V2_PROGRAM_ADDRESS>(input: FulfillDrawAsyncInput<TAccountOracleIdentity, TAccountPool, TAccountDraw>, config?: { programAddress?: TProgramAddress } ): Promise<FulfillDrawInstruction<TProgramAddress, TAccountOracleIdentity, TAccountPool, TAccountDraw>> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_V2_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 } }\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.draw.value) {\naccounts.draw.value = await findDrawPda({ pool: getAddressFromResolvedInstructionAccount(\"pool\", accounts.pool.value), seq: getNonNullResolvedInstructionInput(\"seq\", args.seq) }, { programAddress });\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"oracleIdentity\", accounts.oracleIdentity), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"draw\", accounts.draw)], data: getFulfillDrawInstructionDataEncoder().encode(args as FulfillDrawInstructionDataArgs), programAddress } as FulfillDrawInstruction<TProgramAddress, TAccountOracleIdentity, TAccountPool, TAccountDraw>);\n}\n\nexport type FulfillDrawInput<TAccountOracleIdentity extends string = string, TAccountPool extends string = string, TAccountDraw extends string = string> = {\n oracleIdentity: TransactionSigner<TAccountOracleIdentity>;\npool: Address<TAccountPool>;\ndraw: Address<TAccountDraw>;\nrandomness: FulfillDrawInstructionDataArgs[\"randomness\"];\nseq: FulfillDrawInstructionDataArgs[\"seq\"];\n}\n\nexport function getFulfillDrawInstruction<TAccountOracleIdentity extends string, TAccountPool extends string, TAccountDraw extends string, TProgramAddress extends Address = typeof GABOX_V2_PROGRAM_ADDRESS>(input: FulfillDrawInput<TAccountOracleIdentity, TAccountPool, TAccountDraw>, config?: { programAddress?: TProgramAddress } ): FulfillDrawInstruction<TProgramAddress, TAccountOracleIdentity, TAccountPool, TAccountDraw> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_V2_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 } }\nconst accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedInstructionAccount>;\n\n\n// Original args.\nconst args = { ...input, };\n\n\n\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"oracleIdentity\", accounts.oracleIdentity), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"draw\", accounts.draw)], data: getFulfillDrawInstructionDataEncoder().encode(args as FulfillDrawInstructionDataArgs), programAddress } as FulfillDrawInstruction<TProgramAddress, TAccountOracleIdentity, TAccountPool, TAccountDraw>);\n}\n\nexport type ParsedFulfillDrawInstruction<TProgram extends string = typeof GABOX_V2_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = { programAddress: Address<TProgram>;\naccounts: {\noracleIdentity: TAccountMetas[0];\npool: TAccountMetas[1];\ndraw: TAccountMetas[2];\n};\ndata: FulfillDrawInstructionData; };\n\nexport function parseFulfillDrawInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedFulfillDrawInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS, { actualAccountMetas: instruction.accounts.length, expectedAccountMetas: 3 });\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() }, data: getFulfillDrawInstructionDataDecoder().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, type ResolvedInstructionAccount } from '@solana/program-client-core';\nimport { GABOX_V2_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_V2_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 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_V2_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_V2_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_V2_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, getU16Decoder, getU16Encoder, 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_V2_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_V2_PROGRAM_ADDRESS, TAccountCreator extends string | AccountMeta<string> = string, TAccountPool extends string | AccountMeta<string> = string, TAccountMint extends string | AccountMeta<string> = string, TAccountCreatorTokens extends string | AccountMeta<string> = string, TAccountVault extends string | AccountMeta<string> = string, TAccountVenue extends string | AccountMeta<string> = \"6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P\", TAccountInstructions extends string | AccountMeta<string> = \"Sysvar1nstructions1111111111111111111111111\", 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<[TAccountCreator extends string ? WritableSignerAccount<TAccountCreator> & AccountSignerMeta<TAccountCreator> : TAccountCreator, TAccountPool extends string ? WritableAccount<TAccountPool> : TAccountPool, TAccountMint extends string ? ReadonlyAccount<TAccountMint> : TAccountMint, 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, TAccountAssociatedTokenProgram extends string ? ReadonlyAccount<TAccountAssociatedTokenProgram> : TAccountAssociatedTokenProgram, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, ...TRemainingAccounts]>;\n\nexport type InitializePoolInstructionData = { discriminator: ReadonlyUint8Array; feeBps: number; tiers: Array<Tier>; maxSeedLamports: bigint; };\n\nexport type InitializePoolInstructionDataArgs = { feeBps: number; tiers: Array<TierArgs>; maxSeedLamports: number | bigint; };\n\nexport function getInitializePoolInstructionDataEncoder(): FixedSizeEncoder<InitializePoolInstructionDataArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['feeBps', getU16Encoder()], ['tiers', getArrayEncoder(getTierEncoder(), { size: 8 })], ['maxSeedLamports', getU64Encoder()]]), (value) => ({ ...value, discriminator: INITIALIZE_POOL_DISCRIMINATOR }));\n}\n\nexport function getInitializePoolInstructionDataDecoder(): FixedSizeDecoder<InitializePoolInstructionData> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['feeBps', getU16Decoder()], ['tiers', getArrayDecoder(getTierDecoder(), { size: 8 })], ['maxSeedLamports', 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, TAccountCreatorTokens extends string = string, TAccountVault extends string = string, TAccountVenue extends string = string, TAccountInstructions extends string = string, TAccountTokenProgram extends string = string, TAccountAssociatedTokenProgram extends string = string, TAccountSystemProgram extends string = string> = {\n creator: TransactionSigner<TAccountCreator>;\n/**\n * One pool per coin. The mint alone is the seed, so the same coin can never\n * carry two pools with different terms.\n */\npool?: Address<TAccountPool>;\nmint: Address<TAccountMint>;\n/**\n * The creator's own ATA. The seed is bought into it, then moved to the\n * vault. Always required, even for a 1x table that needs no seed.\n */\ncreatorTokens?: Address<TAccountCreatorTokens>;\nvault?: Address<TAccountVault>;\nvenue?: Address<TAccountVenue>;\ninstructions?: Address<TAccountInstructions>;\ntokenProgram?: Address<TAccountTokenProgram>;\nassociatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\nsystemProgram?: Address<TAccountSystemProgram>;\nfeeBps: InitializePoolInstructionDataArgs[\"feeBps\"];\ntiers: InitializePoolInstructionDataArgs[\"tiers\"];\nmaxSeedLamports: InitializePoolInstructionDataArgs[\"maxSeedLamports\"];\n}\n\nexport async function getInitializePoolInstructionAsync<TAccountCreator extends string, TAccountPool extends string, TAccountMint extends string, TAccountCreatorTokens extends string, TAccountVault extends string, TAccountVenue extends string, TAccountInstructions extends string, TAccountTokenProgram extends string, TAccountAssociatedTokenProgram extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof GABOX_V2_PROGRAM_ADDRESS>(input: InitializePoolAsyncInput<TAccountCreator, TAccountPool, TAccountMint, TAccountCreatorTokens, TAccountVault, TAccountVenue, TAccountInstructions, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>, config?: { programAddress?: TProgramAddress } ): Promise<InitializePoolInstruction<TProgramAddress, TAccountCreator, TAccountPool, TAccountMint, TAccountCreatorTokens, TAccountVault, TAccountVenue, TAccountInstructions, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_V2_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 }, 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 }, 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.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\nif (!accounts.creatorTokens.value) {\naccounts.creatorTokens.value = await getProgramDerivedAddress({ programAddress: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>, seeds: [getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"creator\", accounts.creator.value)), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"tokenProgram\", accounts.tokenProgram.value)), 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)), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"tokenProgram\", accounts.tokenProgram.value)), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value))] });\n}\nif (!accounts.venue.value) {\naccounts.venue.value = '6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P' as Address<'6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P'>;\n}\nif (!accounts.instructions.value) {\naccounts.instructions.value = 'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;\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(\"creatorTokens\", accounts.creatorTokens), getAccountMeta(\"vault\", accounts.vault), getAccountMeta(\"venue\", accounts.venue), getAccountMeta(\"instructions\", accounts.instructions), getAccountMeta(\"tokenProgram\", accounts.tokenProgram), getAccountMeta(\"associatedTokenProgram\", accounts.associatedTokenProgram), getAccountMeta(\"systemProgram\", accounts.systemProgram)], data: getInitializePoolInstructionDataEncoder().encode(args as InitializePoolInstructionDataArgs), programAddress } as InitializePoolInstruction<TProgramAddress, TAccountCreator, TAccountPool, TAccountMint, TAccountCreatorTokens, TAccountVault, TAccountVenue, TAccountInstructions, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>);\n}\n\nexport type InitializePoolInput<TAccountCreator extends string = string, TAccountPool extends string = string, TAccountMint extends string = string, TAccountCreatorTokens extends string = string, TAccountVault extends string = string, TAccountVenue extends string = string, TAccountInstructions extends string = string, TAccountTokenProgram extends string = string, TAccountAssociatedTokenProgram extends string = string, TAccountSystemProgram extends string = string> = {\n creator: TransactionSigner<TAccountCreator>;\n/**\n * One pool per coin. The mint alone is the seed, so the same coin can never\n * carry two pools with different terms.\n */\npool: Address<TAccountPool>;\nmint: Address<TAccountMint>;\n/**\n * The creator's own ATA. The seed is bought into it, then moved to the\n * vault. Always required, even for a 1x table that needs no seed.\n */\ncreatorTokens: Address<TAccountCreatorTokens>;\nvault: Address<TAccountVault>;\nvenue?: Address<TAccountVenue>;\ninstructions?: Address<TAccountInstructions>;\ntokenProgram?: Address<TAccountTokenProgram>;\nassociatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\nsystemProgram?: Address<TAccountSystemProgram>;\nfeeBps: InitializePoolInstructionDataArgs[\"feeBps\"];\ntiers: InitializePoolInstructionDataArgs[\"tiers\"];\nmaxSeedLamports: InitializePoolInstructionDataArgs[\"maxSeedLamports\"];\n}\n\nexport function getInitializePoolInstruction<TAccountCreator extends string, TAccountPool extends string, TAccountMint extends string, TAccountCreatorTokens extends string, TAccountVault extends string, TAccountVenue extends string, TAccountInstructions extends string, TAccountTokenProgram extends string, TAccountAssociatedTokenProgram extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof GABOX_V2_PROGRAM_ADDRESS>(input: InitializePoolInput<TAccountCreator, TAccountPool, TAccountMint, TAccountCreatorTokens, TAccountVault, TAccountVenue, TAccountInstructions, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>, config?: { programAddress?: TProgramAddress } ): InitializePoolInstruction<TProgramAddress, TAccountCreator, TAccountPool, TAccountMint, TAccountCreatorTokens, TAccountVault, TAccountVenue, TAccountInstructions, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_V2_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 }, 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 }, 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.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\nif (!accounts.venue.value) {\naccounts.venue.value = '6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P' as Address<'6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P'>;\n}\nif (!accounts.instructions.value) {\naccounts.instructions.value = 'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;\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(\"creatorTokens\", accounts.creatorTokens), getAccountMeta(\"vault\", accounts.vault), getAccountMeta(\"venue\", accounts.venue), getAccountMeta(\"instructions\", accounts.instructions), getAccountMeta(\"tokenProgram\", accounts.tokenProgram), getAccountMeta(\"associatedTokenProgram\", accounts.associatedTokenProgram), getAccountMeta(\"systemProgram\", accounts.systemProgram)], data: getInitializePoolInstructionDataEncoder().encode(args as InitializePoolInstructionDataArgs), programAddress } as InitializePoolInstruction<TProgramAddress, TAccountCreator, TAccountPool, TAccountMint, TAccountCreatorTokens, TAccountVault, TAccountVenue, TAccountInstructions, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram>);\n}\n\nexport type ParsedInitializePoolInstruction<TProgram extends string = typeof GABOX_V2_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = { programAddress: Address<TProgram>;\naccounts: {\ncreator: TAccountMetas[0];\n/**\n * One pool per coin. The mint alone is the seed, so the same coin can never\n * carry two pools with different terms.\n */\npool: TAccountMetas[1];\nmint: TAccountMetas[2];\n/**\n * The creator's own ATA. The seed is bought into it, then moved to the\n * vault. Always required, even for a 1x table that needs no seed.\n */\ncreatorTokens: TAccountMetas[3];\nvault: TAccountMetas[4];\nvenue: TAccountMetas[5];\ninstructions: TAccountMetas[6];\ntokenProgram: TAccountMetas[7];\nassociatedTokenProgram: TAccountMetas[8];\nsystemProgram: TAccountMetas[9];\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 < 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: { creator: getNextAccount(), pool: getNextAccount(), mint: getNextAccount(), creatorTokens: getNextAccount(), vault: getNextAccount(), venue: getNextAccount(), instructions: getNextAccount(), tokenProgram: 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_V2_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_V2_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>;\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_V2_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_V2_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>;\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_V2_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_V2_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_V2_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = { programAddress: Address<TProgram>;\naccounts: {\npayer: TAccountMetas[0];\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_V2_PROGRAM_ADDRESS } from '../programs';\n\nexport const SELL_PRIZE_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([235, 236, 8, 137, 79, 25, 208, 235]);\n\nexport function getSellPrizeDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(SELL_PRIZE_DISCRIMINATOR); }\n\nexport type SellPrizeInstruction<TProgram extends string = typeof GABOX_V2_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, TAccountUserTokens extends string | AccountMeta<string> = string, TAccountTokenProgram extends string | AccountMeta<string> = \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\", TAccountAssociatedTokenProgram extends string | AccountMeta<string> = \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\", TAccountSystemProgram extends string | AccountMeta<string> = \"11111111111111111111111111111111\", TAccountVenue extends string | AccountMeta<string> = string, TAccountFeeCollector extends string | AccountMeta<string> = \"5WcPTEQ59UqpQzjZUPbU8QRGCbj7NeQNLDa7DbsLkLKT\", TAccountFeeCollectorWsol extends string | AccountMeta<string> = string, TAccountQuoteTokenProgram 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, TAccountUserTokens extends string ? WritableAccount<TAccountUserTokens> : TAccountUserTokens, TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram, TAccountAssociatedTokenProgram extends string ? ReadonlyAccount<TAccountAssociatedTokenProgram> : TAccountAssociatedTokenProgram, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, TAccountVenue extends string ? ReadonlyAccount<TAccountVenue> : TAccountVenue, TAccountFeeCollector extends string ? WritableAccount<TAccountFeeCollector> : TAccountFeeCollector, TAccountFeeCollectorWsol extends string ? WritableAccount<TAccountFeeCollectorWsol> : TAccountFeeCollectorWsol, TAccountQuoteTokenProgram extends string ? ReadonlyAccount<TAccountQuoteTokenProgram> : TAccountQuoteTokenProgram, ...TRemainingAccounts]>;\n\nexport type SellPrizeInstructionData = { discriminator: ReadonlyUint8Array; minQuoteOutput: bigint; };\n\nexport type SellPrizeInstructionDataArgs = { minQuoteOutput: number | bigint; };\n\nexport function getSellPrizeInstructionDataEncoder(): FixedSizeEncoder<SellPrizeInstructionDataArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['minQuoteOutput', getU64Encoder()]]), (value) => ({ ...value, discriminator: SELL_PRIZE_DISCRIMINATOR }));\n}\n\nexport function getSellPrizeInstructionDataDecoder(): FixedSizeDecoder<SellPrizeInstructionData> {\n return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['minQuoteOutput', getU64Decoder()]]);\n}\n\nexport function getSellPrizeInstructionDataCodec(): FixedSizeCodec<SellPrizeInstructionDataArgs, SellPrizeInstructionData> {\n return combineCodec(getSellPrizeInstructionDataEncoder(), getSellPrizeInstructionDataDecoder());\n}\n\nexport type SellPrizeAsyncInput<TAccountPurchaser extends string = string, TAccountPool extends string = string, TAccountDraw 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, TAccountVenue extends string = string, TAccountFeeCollector extends string = string, TAccountFeeCollectorWsol extends string = string, TAccountQuoteTokenProgram extends string = string> = {\n purchaser: TransactionSigner<TAccountPurchaser>;\npool?: Address<TAccountPool>;\ndraw: Address<TAccountDraw>;\nmint: Address<TAccountMint>;\nvault: Address<TAccountVault>;\nuserTokens?: Address<TAccountUserTokens>;\ntokenProgram?: Address<TAccountTokenProgram>;\nassociatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\nsystemProgram?: Address<TAccountSystemProgram>;\nvenue: Address<TAccountVenue>;\nfeeCollector?: Address<TAccountFeeCollector>;\n/** The collector's WSOL ATA. It must already exist; no seller pays its rent. */\nfeeCollectorWsol?: Address<TAccountFeeCollectorWsol>;\n/** Classic SPL Token, the program WSOL lives under. */\nquoteTokenProgram?: Address<TAccountQuoteTokenProgram>;\nminQuoteOutput: SellPrizeInstructionDataArgs[\"minQuoteOutput\"];\n}\n\nexport async function getSellPrizeInstructionAsync<TAccountPurchaser extends string, TAccountPool extends string, TAccountDraw extends string, TAccountMint extends string, TAccountVault extends string, TAccountUserTokens extends string, TAccountTokenProgram extends string, TAccountAssociatedTokenProgram extends string, TAccountSystemProgram extends string, TAccountVenue extends string, TAccountFeeCollector extends string, TAccountFeeCollectorWsol extends string, TAccountQuoteTokenProgram extends string, TProgramAddress extends Address = typeof GABOX_V2_PROGRAM_ADDRESS>(input: SellPrizeAsyncInput<TAccountPurchaser, TAccountPool, TAccountDraw, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram, TAccountVenue, TAccountFeeCollector, TAccountFeeCollectorWsol, TAccountQuoteTokenProgram>, config?: { programAddress?: TProgramAddress } ): Promise<SellPrizeInstruction<TProgramAddress, TAccountPurchaser, TAccountPool, TAccountDraw, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram, TAccountVenue, TAccountFeeCollector, TAccountFeeCollectorWsol, TAccountQuoteTokenProgram>> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_V2_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 }, 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 }, venue: { value: input.venue ?? null, isWritable: false }, feeCollector: { value: input.feeCollector ?? null, isWritable: true }, feeCollectorWsol: { value: input.feeCollectorWsol ?? null, isWritable: true }, 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.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\nif (!accounts.userTokens.value) {\naccounts.userTokens.value = await getProgramDerivedAddress({ programAddress: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>, seeds: [getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"purchaser\", accounts.purchaser.value)), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"tokenProgram\", accounts.tokenProgram.value)), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value))] });\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}\nif (!accounts.feeCollector.value) {\naccounts.feeCollector.value = '5WcPTEQ59UqpQzjZUPbU8QRGCbj7NeQNLDa7DbsLkLKT' as Address<'5WcPTEQ59UqpQzjZUPbU8QRGCbj7NeQNLDa7DbsLkLKT'>;\n}\nif (!accounts.quoteTokenProgram.value) {\naccounts.quoteTokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\nif (!accounts.feeCollectorWsol.value) {\naccounts.feeCollectorWsol.value = await getProgramDerivedAddress({ programAddress: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>, seeds: [getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"feeCollector\", accounts.feeCollector.value)), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"quoteTokenProgram\", accounts.quoteTokenProgram.value)), getBytesEncoder().encode(new Uint8Array([6, 155, 136, 87, 254, 171, 129, 132, 251, 104, 127, 99, 70, 24, 192, 53, 218, 196, 57, 220, 26, 235, 59, 85, 152, 160, 240, 0, 0, 0, 0, 1]))] });\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(\"userTokens\", accounts.userTokens), getAccountMeta(\"tokenProgram\", accounts.tokenProgram), getAccountMeta(\"associatedTokenProgram\", accounts.associatedTokenProgram), getAccountMeta(\"systemProgram\", accounts.systemProgram), getAccountMeta(\"venue\", accounts.venue), getAccountMeta(\"feeCollector\", accounts.feeCollector), getAccountMeta(\"feeCollectorWsol\", accounts.feeCollectorWsol), getAccountMeta(\"quoteTokenProgram\", accounts.quoteTokenProgram)], data: getSellPrizeInstructionDataEncoder().encode(args as SellPrizeInstructionDataArgs), programAddress } as SellPrizeInstruction<TProgramAddress, TAccountPurchaser, TAccountPool, TAccountDraw, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram, TAccountVenue, TAccountFeeCollector, TAccountFeeCollectorWsol, TAccountQuoteTokenProgram>);\n}\n\nexport type SellPrizeInput<TAccountPurchaser extends string = string, TAccountPool extends string = string, TAccountDraw 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, TAccountVenue extends string = string, TAccountFeeCollector extends string = string, TAccountFeeCollectorWsol extends string = string, TAccountQuoteTokenProgram extends string = string> = {\n purchaser: TransactionSigner<TAccountPurchaser>;\npool: Address<TAccountPool>;\ndraw: Address<TAccountDraw>;\nmint: Address<TAccountMint>;\nvault: Address<TAccountVault>;\nuserTokens: Address<TAccountUserTokens>;\ntokenProgram?: Address<TAccountTokenProgram>;\nassociatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\nsystemProgram?: Address<TAccountSystemProgram>;\nvenue: Address<TAccountVenue>;\nfeeCollector?: Address<TAccountFeeCollector>;\n/** The collector's WSOL ATA. It must already exist; no seller pays its rent. */\nfeeCollectorWsol: Address<TAccountFeeCollectorWsol>;\n/** Classic SPL Token, the program WSOL lives under. */\nquoteTokenProgram?: Address<TAccountQuoteTokenProgram>;\nminQuoteOutput: SellPrizeInstructionDataArgs[\"minQuoteOutput\"];\n}\n\nexport function getSellPrizeInstruction<TAccountPurchaser extends string, TAccountPool extends string, TAccountDraw extends string, TAccountMint extends string, TAccountVault extends string, TAccountUserTokens extends string, TAccountTokenProgram extends string, TAccountAssociatedTokenProgram extends string, TAccountSystemProgram extends string, TAccountVenue extends string, TAccountFeeCollector extends string, TAccountFeeCollectorWsol extends string, TAccountQuoteTokenProgram extends string, TProgramAddress extends Address = typeof GABOX_V2_PROGRAM_ADDRESS>(input: SellPrizeInput<TAccountPurchaser, TAccountPool, TAccountDraw, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram, TAccountVenue, TAccountFeeCollector, TAccountFeeCollectorWsol, TAccountQuoteTokenProgram>, config?: { programAddress?: TProgramAddress } ): SellPrizeInstruction<TProgramAddress, TAccountPurchaser, TAccountPool, TAccountDraw, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram, TAccountVenue, TAccountFeeCollector, TAccountFeeCollectorWsol, TAccountQuoteTokenProgram> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_V2_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 }, 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 }, venue: { value: input.venue ?? null, isWritable: false }, feeCollector: { value: input.feeCollector ?? null, isWritable: true }, feeCollectorWsol: { value: input.feeCollectorWsol ?? null, isWritable: true }, 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}\nif (!accounts.associatedTokenProgram.value) {\naccounts.associatedTokenProgram.value = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n}\nif (!accounts.systemProgram.value) {\naccounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n}\nif (!accounts.feeCollector.value) {\naccounts.feeCollector.value = '5WcPTEQ59UqpQzjZUPbU8QRGCbj7NeQNLDa7DbsLkLKT' as Address<'5WcPTEQ59UqpQzjZUPbU8QRGCbj7NeQNLDa7DbsLkLKT'>;\n}\nif (!accounts.quoteTokenProgram.value) {\naccounts.quoteTokenProgram.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(\"userTokens\", accounts.userTokens), getAccountMeta(\"tokenProgram\", accounts.tokenProgram), getAccountMeta(\"associatedTokenProgram\", accounts.associatedTokenProgram), getAccountMeta(\"systemProgram\", accounts.systemProgram), getAccountMeta(\"venue\", accounts.venue), getAccountMeta(\"feeCollector\", accounts.feeCollector), getAccountMeta(\"feeCollectorWsol\", accounts.feeCollectorWsol), getAccountMeta(\"quoteTokenProgram\", accounts.quoteTokenProgram)], data: getSellPrizeInstructionDataEncoder().encode(args as SellPrizeInstructionDataArgs), programAddress } as SellPrizeInstruction<TProgramAddress, TAccountPurchaser, TAccountPool, TAccountDraw, TAccountMint, TAccountVault, TAccountUserTokens, TAccountTokenProgram, TAccountAssociatedTokenProgram, TAccountSystemProgram, TAccountVenue, TAccountFeeCollector, TAccountFeeCollectorWsol, TAccountQuoteTokenProgram>);\n}\n\nexport type ParsedSellPrizeInstruction<TProgram extends string = typeof GABOX_V2_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];\nuserTokens: TAccountMetas[5];\ntokenProgram: TAccountMetas[6];\nassociatedTokenProgram: TAccountMetas[7];\nsystemProgram: TAccountMetas[8];\nvenue: TAccountMetas[9];\nfeeCollector: TAccountMetas[10];\n/** The collector's WSOL ATA. It must already exist; no seller pays its rent. */\nfeeCollectorWsol: TAccountMetas[11];\n/** Classic SPL Token, the program WSOL lives under. */\nquoteTokenProgram: TAccountMetas[12];\n};\ndata: SellPrizeInstructionData; };\n\nexport function parseSellPrizeInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedSellPrizeInstruction<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: { purchaser: getNextAccount(), pool: getNextAccount(), draw: getNextAccount(), mint: getNextAccount(), vault: getNextAccount(), userTokens: getNextAccount(), tokenProgram: getNextAccount(), associatedTokenProgram: getNextAccount(), systemProgram: getNextAccount(), venue: getNextAccount(), feeCollector: getNextAccount(), feeCollectorWsol: getNextAccount(), quoteTokenProgram: getNextAccount() }, data: getSellPrizeInstructionDataDecoder().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 { GABOX_V2_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_V2_PROGRAM_ADDRESS, TAccountSeller extends string | AccountMeta<string> = string, TAccountPool extends string | AccountMeta<string> = string, TAccountMint extends string | AccountMeta<string> = string, TAccountUserTokens extends string | AccountMeta<string> = string, TAccountVenue extends string | AccountMeta<string> = string, TAccountFeeCollector extends string | AccountMeta<string> = \"5WcPTEQ59UqpQzjZUPbU8QRGCbj7NeQNLDa7DbsLkLKT\", TAccountFeeCollectorWsol extends string | AccountMeta<string> = string, TAccountQuoteTokenProgram extends string | AccountMeta<string> = \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\", TAccountTokenProgram extends string | AccountMeta<string> = \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\", TAccountSystemProgram extends string | AccountMeta<string> = \"11111111111111111111111111111111\", 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, TAccountUserTokens extends string ? WritableAccount<TAccountUserTokens> : TAccountUserTokens, TAccountVenue extends string ? ReadonlyAccount<TAccountVenue> : TAccountVenue, TAccountFeeCollector extends string ? WritableAccount<TAccountFeeCollector> : TAccountFeeCollector, TAccountFeeCollectorWsol extends string ? WritableAccount<TAccountFeeCollectorWsol> : TAccountFeeCollectorWsol, TAccountQuoteTokenProgram extends string ? ReadonlyAccount<TAccountQuoteTokenProgram> : TAccountQuoteTokenProgram, TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, ...TRemainingAccounts]>;\n\nexport type SellTokensInstructionData = { discriminator: ReadonlyUint8Array; amount: bigint; minQuoteOutput: bigint; };\n\nexport type SellTokensInstructionDataArgs = { amount: number | bigint; minQuoteOutput: number | bigint; };\n\nexport function getSellTokensInstructionDataEncoder(): FixedSizeEncoder<SellTokensInstructionDataArgs> {\n return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['amount', getU64Encoder()], ['minQuoteOutput', 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()]]);\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, TAccountUserTokens extends string = string, TAccountVenue extends string = string, TAccountFeeCollector extends string = string, TAccountFeeCollectorWsol extends string = string, TAccountQuoteTokenProgram extends string = string, TAccountTokenProgram extends string = string, TAccountSystemProgram extends string = string> = {\n seller: TransactionSigner<TAccountSeller>;\n/**\n * The coin's pool. Only its vault address is read, to keep the vault out of\n * the venue's account list.\n */\npool: Address<TAccountPool>;\nmint: Address<TAccountMint>;\nuserTokens?: Address<TAccountUserTokens>;\nvenue: Address<TAccountVenue>;\nfeeCollector?: Address<TAccountFeeCollector>;\n/** The collector's WSOL ATA. It must already exist; no seller pays its rent. */\nfeeCollectorWsol?: Address<TAccountFeeCollectorWsol>;\n/** Classic SPL Token, the program WSOL lives under. */\nquoteTokenProgram?: Address<TAccountQuoteTokenProgram>;\ntokenProgram?: Address<TAccountTokenProgram>;\nsystemProgram?: Address<TAccountSystemProgram>;\namount: SellTokensInstructionDataArgs[\"amount\"];\nminQuoteOutput: SellTokensInstructionDataArgs[\"minQuoteOutput\"];\n}\n\nexport async function getSellTokensInstructionAsync<TAccountSeller extends string, TAccountPool extends string, TAccountMint extends string, TAccountUserTokens extends string, TAccountVenue extends string, TAccountFeeCollector extends string, TAccountFeeCollectorWsol extends string, TAccountQuoteTokenProgram extends string, TAccountTokenProgram extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof GABOX_V2_PROGRAM_ADDRESS>(input: SellTokensAsyncInput<TAccountSeller, TAccountPool, TAccountMint, TAccountUserTokens, TAccountVenue, TAccountFeeCollector, TAccountFeeCollectorWsol, TAccountQuoteTokenProgram, TAccountTokenProgram, TAccountSystemProgram>, config?: { programAddress?: TProgramAddress } ): Promise<SellTokensInstruction<TProgramAddress, TAccountSeller, TAccountPool, TAccountMint, TAccountUserTokens, TAccountVenue, TAccountFeeCollector, TAccountFeeCollectorWsol, TAccountQuoteTokenProgram, TAccountTokenProgram, TAccountSystemProgram>> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_V2_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 }, userTokens: { value: input.userTokens ?? null, isWritable: true }, venue: { value: input.venue ?? null, isWritable: false }, feeCollector: { value: input.feeCollector ?? null, isWritable: true }, feeCollectorWsol: { value: input.feeCollectorWsol ?? null, isWritable: true }, quoteTokenProgram: { value: input.quoteTokenProgram ?? null, isWritable: false }, tokenProgram: { value: input.tokenProgram ?? 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.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\nif (!accounts.userTokens.value) {\naccounts.userTokens.value = await getProgramDerivedAddress({ programAddress: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>, seeds: [getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"seller\", accounts.seller.value)), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"tokenProgram\", accounts.tokenProgram.value)), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"mint\", accounts.mint.value))] });\n}\nif (!accounts.feeCollector.value) {\naccounts.feeCollector.value = '5WcPTEQ59UqpQzjZUPbU8QRGCbj7NeQNLDa7DbsLkLKT' as Address<'5WcPTEQ59UqpQzjZUPbU8QRGCbj7NeQNLDa7DbsLkLKT'>;\n}\nif (!accounts.quoteTokenProgram.value) {\naccounts.quoteTokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\nif (!accounts.feeCollectorWsol.value) {\naccounts.feeCollectorWsol.value = await getProgramDerivedAddress({ programAddress: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>, seeds: [getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"feeCollector\", accounts.feeCollector.value)), getAddressEncoder().encode(getAddressFromResolvedInstructionAccount(\"quoteTokenProgram\", accounts.quoteTokenProgram.value)), getBytesEncoder().encode(new Uint8Array([6, 155, 136, 87, 254, 171, 129, 132, 251, 104, 127, 99, 70, 24, 192, 53, 218, 196, 57, 220, 26, 235, 59, 85, 152, 160, 240, 0, 0, 0, 0, 1]))] });\n}\nif (!accounts.systemProgram.value) {\naccounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"seller\", accounts.seller), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"mint\", accounts.mint), getAccountMeta(\"userTokens\", accounts.userTokens), getAccountMeta(\"venue\", accounts.venue), getAccountMeta(\"feeCollector\", accounts.feeCollector), getAccountMeta(\"feeCollectorWsol\", accounts.feeCollectorWsol), getAccountMeta(\"quoteTokenProgram\", accounts.quoteTokenProgram), getAccountMeta(\"tokenProgram\", accounts.tokenProgram), getAccountMeta(\"systemProgram\", accounts.systemProgram)], data: getSellTokensInstructionDataEncoder().encode(args as SellTokensInstructionDataArgs), programAddress } as SellTokensInstruction<TProgramAddress, TAccountSeller, TAccountPool, TAccountMint, TAccountUserTokens, TAccountVenue, TAccountFeeCollector, TAccountFeeCollectorWsol, TAccountQuoteTokenProgram, TAccountTokenProgram, TAccountSystemProgram>);\n}\n\nexport type SellTokensInput<TAccountSeller extends string = string, TAccountPool extends string = string, TAccountMint extends string = string, TAccountUserTokens extends string = string, TAccountVenue extends string = string, TAccountFeeCollector extends string = string, TAccountFeeCollectorWsol extends string = string, TAccountQuoteTokenProgram extends string = string, TAccountTokenProgram extends string = string, TAccountSystemProgram extends string = string> = {\n seller: TransactionSigner<TAccountSeller>;\n/**\n * The coin's pool. Only its vault address is read, to keep the vault out of\n * the venue's account list.\n */\npool: Address<TAccountPool>;\nmint: Address<TAccountMint>;\nuserTokens: Address<TAccountUserTokens>;\nvenue: Address<TAccountVenue>;\nfeeCollector?: Address<TAccountFeeCollector>;\n/** The collector's WSOL ATA. It must already exist; no seller pays its rent. */\nfeeCollectorWsol: Address<TAccountFeeCollectorWsol>;\n/** Classic SPL Token, the program WSOL lives under. */\nquoteTokenProgram?: Address<TAccountQuoteTokenProgram>;\ntokenProgram?: Address<TAccountTokenProgram>;\nsystemProgram?: Address<TAccountSystemProgram>;\namount: SellTokensInstructionDataArgs[\"amount\"];\nminQuoteOutput: SellTokensInstructionDataArgs[\"minQuoteOutput\"];\n}\n\nexport function getSellTokensInstruction<TAccountSeller extends string, TAccountPool extends string, TAccountMint extends string, TAccountUserTokens extends string, TAccountVenue extends string, TAccountFeeCollector extends string, TAccountFeeCollectorWsol extends string, TAccountQuoteTokenProgram extends string, TAccountTokenProgram extends string, TAccountSystemProgram extends string, TProgramAddress extends Address = typeof GABOX_V2_PROGRAM_ADDRESS>(input: SellTokensInput<TAccountSeller, TAccountPool, TAccountMint, TAccountUserTokens, TAccountVenue, TAccountFeeCollector, TAccountFeeCollectorWsol, TAccountQuoteTokenProgram, TAccountTokenProgram, TAccountSystemProgram>, config?: { programAddress?: TProgramAddress } ): SellTokensInstruction<TProgramAddress, TAccountSeller, TAccountPool, TAccountMint, TAccountUserTokens, TAccountVenue, TAccountFeeCollector, TAccountFeeCollectorWsol, TAccountQuoteTokenProgram, TAccountTokenProgram, TAccountSystemProgram> {\n // Program address.\nconst programAddress = config?.programAddress ?? GABOX_V2_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 }, userTokens: { value: input.userTokens ?? null, isWritable: true }, venue: { value: input.venue ?? null, isWritable: false }, feeCollector: { value: input.feeCollector ?? null, isWritable: true }, feeCollectorWsol: { value: input.feeCollectorWsol ?? null, isWritable: true }, quoteTokenProgram: { value: input.quoteTokenProgram ?? null, isWritable: false }, tokenProgram: { value: input.tokenProgram ?? 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.tokenProgram.value) {\naccounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\nif (!accounts.feeCollector.value) {\naccounts.feeCollector.value = '5WcPTEQ59UqpQzjZUPbU8QRGCbj7NeQNLDa7DbsLkLKT' as Address<'5WcPTEQ59UqpQzjZUPbU8QRGCbj7NeQNLDa7DbsLkLKT'>;\n}\nif (!accounts.quoteTokenProgram.value) {\naccounts.quoteTokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n}\nif (!accounts.systemProgram.value) {\naccounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n}\n\nconst getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\nreturn Object.freeze({ accounts: [getAccountMeta(\"seller\", accounts.seller), getAccountMeta(\"pool\", accounts.pool), getAccountMeta(\"mint\", accounts.mint), getAccountMeta(\"userTokens\", accounts.userTokens), getAccountMeta(\"venue\", accounts.venue), getAccountMeta(\"feeCollector\", accounts.feeCollector), getAccountMeta(\"feeCollectorWsol\", accounts.feeCollectorWsol), getAccountMeta(\"quoteTokenProgram\", accounts.quoteTokenProgram), getAccountMeta(\"tokenProgram\", accounts.tokenProgram), getAccountMeta(\"systemProgram\", accounts.systemProgram)], data: getSellTokensInstructionDataEncoder().encode(args as SellTokensInstructionDataArgs), programAddress } as SellTokensInstruction<TProgramAddress, TAccountSeller, TAccountPool, TAccountMint, TAccountUserTokens, TAccountVenue, TAccountFeeCollector, TAccountFeeCollectorWsol, TAccountQuoteTokenProgram, TAccountTokenProgram, TAccountSystemProgram>);\n}\n\nexport type ParsedSellTokensInstruction<TProgram extends string = typeof GABOX_V2_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = { programAddress: Address<TProgram>;\naccounts: {\nseller: TAccountMetas[0];\n/**\n * The coin's pool. Only its vault address is read, to keep the vault out of\n * the venue's account list.\n */\npool: TAccountMetas[1];\nmint: TAccountMetas[2];\nuserTokens: TAccountMetas[3];\nvenue: TAccountMetas[4];\nfeeCollector: TAccountMetas[5];\n/** The collector's WSOL ATA. It must already exist; no seller pays its rent. */\nfeeCollectorWsol: TAccountMetas[6];\n/** Classic SPL Token, the program WSOL lives under. */\nquoteTokenProgram: TAccountMetas[7];\ntokenProgram: TAccountMetas[8];\nsystemProgram: TAccountMetas[9];\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 < 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: { seller: getNextAccount(), pool: getNextAccount(), mint: getNextAccount(), userTokens: getNextAccount(), venue: getNextAccount(), feeCollector: getNextAccount(), feeCollectorWsol: getNextAccount(), quoteTokenProgram: getNextAccount(), tokenProgram: getNextAccount(), systemProgram: 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, getReferralCodec, getReferralLinkCodec, type Draw, type DrawArgs, type Pool, type PoolArgs, type Referral, type ReferralArgs, type ReferralLink, type ReferralLinkArgs } from '../accounts';\nimport { getBindReferrerInstructionAsync, getBuyPackInstructionAsync, getClaimPrizeInstructionAsync, getClaimReferralInstructionAsync, getDeliverDrawInstructionAsync, getExpireDrawInstructionAsync, getFulfillDrawInstructionAsync, getFundPrizesInstruction, getInitializePoolInstructionAsync, getRetryDrawInstructionAsync, getSellPrizeInstructionAsync, getSellTokensInstructionAsync, parseBindReferrerInstruction, parseBuyPackInstruction, parseClaimPrizeInstruction, parseClaimReferralInstruction, parseDeliverDrawInstruction, parseExpireDrawInstruction, parseFulfillDrawInstruction, parseFundPrizesInstruction, parseInitializePoolInstruction, parseRetryDrawInstruction, parseSellPrizeInstruction, parseSellTokensInstruction, type BindReferrerAsyncInput, type BuyPackAsyncInput, type ClaimPrizeAsyncInput, type ClaimReferralAsyncInput, type DeliverDrawAsyncInput, type ExpireDrawAsyncInput, type FulfillDrawAsyncInput, type FundPrizesInput, type InitializePoolAsyncInput, type ParsedBindReferrerInstruction, type ParsedBuyPackInstruction, type ParsedClaimPrizeInstruction, type ParsedClaimReferralInstruction, type ParsedDeliverDrawInstruction, type ParsedExpireDrawInstruction, type ParsedFulfillDrawInstruction, type ParsedFundPrizesInstruction, type ParsedInitializePoolInstruction, type ParsedRetryDrawInstruction, type ParsedSellPrizeInstruction, type ParsedSellTokensInstruction, type RetryDrawAsyncInput, type SellPrizeAsyncInput, type SellTokensAsyncInput } from '../instructions';\nimport { findClaimReferralReferralPda, findDrawPda, findIdentityPda, findLinkPda, findPoolPda, findReferralLinkPda, findReferralPda } from '../pdas';\n\nexport const GABOX_V2_PROGRAM_ADDRESS = 'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA' as Address<'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA'>;\n\nexport enum GaboxV2Account { Draw, Pool, Referral, ReferralLink }\n\nexport function identifyGaboxV2Account(account: { data: ReadonlyUint8Array } | ReadonlyUint8Array): GaboxV2Account {\n const data = 'data' in account ? account.data : account;\n if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([225, 131, 41, 222, 122, 20, 146, 202])), 0)) { return GaboxV2Account.Draw; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([241, 154, 109, 4, 17, 177, 109, 188])), 0)) { return GaboxV2Account.Pool; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([30, 235, 136, 224, 106, 107, 49, 64])), 0)) { return GaboxV2Account.Referral; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([30, 231, 159, 98, 189, 47, 48, 5])), 0)) { return GaboxV2Account.ReferralLink; }\n throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT, { accountData: data, programName: \"gaboxV2\" });\n}\n\nexport enum GaboxV2Event { DrawResolved, PackBought, PoolCreated, PrizeRedeemed, PrizesFunded, RandomnessRetried, ReferralBound, ReferralClaimed, TokensSold }\n\nexport function identifyGaboxV2Event(event: { data: ReadonlyUint8Array } | ReadonlyUint8Array): GaboxV2Event {\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 GaboxV2Event.DrawResolved; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([220, 208, 74, 75, 42, 144, 231, 69])), 0)) { return GaboxV2Event.PackBought; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([202, 44, 41, 88, 104, 220, 157, 82])), 0)) { return GaboxV2Event.PoolCreated; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([243, 193, 245, 166, 160, 101, 182, 207])), 0)) { return GaboxV2Event.PrizeRedeemed; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([188, 129, 185, 44, 234, 71, 53, 60])), 0)) { return GaboxV2Event.PrizesFunded; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([243, 30, 148, 22, 14, 127, 52, 140])), 0)) { return GaboxV2Event.RandomnessRetried; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([12, 28, 152, 148, 55, 210, 102, 190])), 0)) { return GaboxV2Event.ReferralBound; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([195, 109, 77, 196, 134, 226, 78, 108])), 0)) { return GaboxV2Event.ReferralClaimed; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([217, 83, 68, 137, 134, 225, 94, 45])), 0)) { return GaboxV2Event.TokensSold; }\n throw new Error('The provided event could not be identified as a gaboxV2 event.');\n}\n\nexport enum GaboxV2Instruction { BindReferrer, BuyPack, ClaimPrize, ClaimReferral, DeliverDraw, ExpireDraw, FulfillDraw, FundPrizes, InitializePool, RetryDraw, SellPrize, SellTokens }\n\nexport function identifyGaboxV2Instruction(instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array): GaboxV2Instruction {\n const data = 'data' in instruction ? instruction.data : instruction;\n if (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([45, 172, 18, 187, 3, 160, 196, 176])), 0)) { return GaboxV2Instruction.BindReferrer; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([151, 46, 141, 93, 174, 5, 49, 173])), 0)) { return GaboxV2Instruction.BuyPack; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([157, 233, 139, 121, 246, 62, 234, 235])), 0)) { return GaboxV2Instruction.ClaimPrize; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([219, 247, 18, 148, 63, 247, 112, 198])), 0)) { return GaboxV2Instruction.ClaimReferral; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([113, 181, 226, 173, 237, 138, 199, 51])), 0)) { return GaboxV2Instruction.DeliverDraw; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([100, 119, 235, 75, 8, 25, 252, 255])), 0)) { return GaboxV2Instruction.ExpireDraw; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([136, 46, 22, 51, 33, 153, 232, 234])), 0)) { return GaboxV2Instruction.FulfillDraw; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([163, 225, 193, 125, 144, 171, 29, 241])), 0)) { return GaboxV2Instruction.FundPrizes; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([95, 180, 10, 172, 84, 174, 232, 40])), 0)) { return GaboxV2Instruction.InitializePool; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([112, 118, 137, 120, 211, 39, 196, 96])), 0)) { return GaboxV2Instruction.RetryDraw; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([235, 236, 8, 137, 79, 25, 208, 235])), 0)) { return GaboxV2Instruction.SellPrize; }\nif (containsBytes(data, fixEncoderSize(getBytesEncoder(), 8).encode(new Uint8Array([114, 242, 25, 12, 62, 126, 92, 2])), 0)) { return GaboxV2Instruction.SellTokens; }\n throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION, { instructionData: data, programName: \"gaboxV2\" });\n}\n\nexport type ParsedGaboxV2Instruction<TProgram extends string = 'GaBoxR9nYcK1zeu8EvSJVHV3SrYpCFmvbh2MLgobMcUA'> =\n| { instructionType: GaboxV2Instruction.BindReferrer } & ParsedBindReferrerInstruction<TProgram>\n| { instructionType: GaboxV2Instruction.BuyPack } & ParsedBuyPackInstruction<TProgram>\n| { instructionType: GaboxV2Instruction.ClaimPrize } & ParsedClaimPrizeInstruction<TProgram>\n| { instructionType: GaboxV2Instruction.ClaimReferral } & ParsedClaimReferralInstruction<TProgram>\n| { instructionType: GaboxV2Instruction.DeliverDraw } & ParsedDeliverDrawInstruction<TProgram>\n| { instructionType: GaboxV2Instruction.ExpireDraw } & ParsedExpireDrawInstruction<TProgram>\n| { instructionType: GaboxV2Instruction.FulfillDraw } & ParsedFulfillDrawInstruction<TProgram>\n| { instructionType: GaboxV2Instruction.FundPrizes } & ParsedFundPrizesInstruction<TProgram>\n| { instructionType: GaboxV2Instruction.InitializePool } & ParsedInitializePoolInstruction<TProgram>\n| { instructionType: GaboxV2Instruction.RetryDraw } & ParsedRetryDrawInstruction<TProgram>\n| { instructionType: GaboxV2Instruction.SellPrize } & ParsedSellPrizeInstruction<TProgram>\n| { instructionType: GaboxV2Instruction.SellTokens } & ParsedSellTokensInstruction<TProgram>\n\n\n export function parseGaboxV2Instruction<TProgram extends string>(\n instruction: Instruction<TProgram>\n & InstructionWithData<ReadonlyUint8Array>\n ): ParsedGaboxV2Instruction<TProgram> {\n const instructionType = identifyGaboxV2Instruction(instruction);\n switch (instructionType) {\n case GaboxV2Instruction.BindReferrer: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxV2Instruction.BindReferrer, ...parseBindReferrerInstruction(instruction) }; }\ncase GaboxV2Instruction.BuyPack: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxV2Instruction.BuyPack, ...parseBuyPackInstruction(instruction) }; }\ncase GaboxV2Instruction.ClaimPrize: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxV2Instruction.ClaimPrize, ...parseClaimPrizeInstruction(instruction) }; }\ncase GaboxV2Instruction.ClaimReferral: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxV2Instruction.ClaimReferral, ...parseClaimReferralInstruction(instruction) }; }\ncase GaboxV2Instruction.DeliverDraw: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxV2Instruction.DeliverDraw, ...parseDeliverDrawInstruction(instruction) }; }\ncase GaboxV2Instruction.ExpireDraw: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxV2Instruction.ExpireDraw, ...parseExpireDrawInstruction(instruction) }; }\ncase GaboxV2Instruction.FulfillDraw: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxV2Instruction.FulfillDraw, ...parseFulfillDrawInstruction(instruction) }; }\ncase GaboxV2Instruction.FundPrizes: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxV2Instruction.FundPrizes, ...parseFundPrizesInstruction(instruction) }; }\ncase GaboxV2Instruction.InitializePool: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxV2Instruction.InitializePool, ...parseInitializePoolInstruction(instruction) }; }\ncase GaboxV2Instruction.RetryDraw: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxV2Instruction.RetryDraw, ...parseRetryDrawInstruction(instruction) }; }\ncase GaboxV2Instruction.SellPrize: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxV2Instruction.SellPrize, ...parseSellPrizeInstruction(instruction) }; }\ncase GaboxV2Instruction.SellTokens: { assertIsInstructionWithAccounts(instruction);\nreturn { instructionType: GaboxV2Instruction.SellTokens, ...parseSellTokensInstruction(instruction) }; }\n default: throw new SolanaError(SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE, { instructionType: instructionType as string, programName: \"gaboxV2\" });\n }\n }\n\nexport type GaboxV2Plugin = { accounts: GaboxV2PluginAccounts; instructions: GaboxV2PluginInstructions; pdas: GaboxV2PluginPdas; identifyAccount: typeof identifyGaboxV2Account; identifyInstruction: typeof identifyGaboxV2Instruction; parseInstruction: typeof parseGaboxV2Instruction; }\n\nexport type GaboxV2PluginAccounts = { draw: ReturnType<typeof getDrawCodec> & SelfFetchFunctions<DrawArgs, Draw>; pool: ReturnType<typeof getPoolCodec> & SelfFetchFunctions<PoolArgs, Pool>; referral: ReturnType<typeof getReferralCodec> & SelfFetchFunctions<ReferralArgs, Referral>; referralLink: ReturnType<typeof getReferralLinkCodec> & SelfFetchFunctions<ReferralLinkArgs, ReferralLink>; }\n\nexport type GaboxV2PluginInstructions = { bindReferrer: (input: BindReferrerAsyncInput) => ReturnType<typeof getBindReferrerInstructionAsync> & SelfPlanAndSendFunctions; buyPack: (input: BuyPackAsyncInput) => ReturnType<typeof getBuyPackInstructionAsync> & SelfPlanAndSendFunctions; claimPrize: (input: ClaimPrizeAsyncInput) => ReturnType<typeof getClaimPrizeInstructionAsync> & SelfPlanAndSendFunctions; claimReferral: (input: ClaimReferralAsyncInput) => ReturnType<typeof getClaimReferralInstructionAsync> & SelfPlanAndSendFunctions; deliverDraw: (input: DeliverDrawAsyncInput) => ReturnType<typeof getDeliverDrawInstructionAsync> & SelfPlanAndSendFunctions; expireDraw: (input: ExpireDrawAsyncInput) => ReturnType<typeof getExpireDrawInstructionAsync> & SelfPlanAndSendFunctions; fulfillDraw: (input: FulfillDrawAsyncInput) => ReturnType<typeof getFulfillDrawInstructionAsync> & SelfPlanAndSendFunctions; fundPrizes: (input: FundPrizesInput) => ReturnType<typeof getFundPrizesInstruction> & SelfPlanAndSendFunctions; initializePool: (input: InitializePoolAsyncInput) => ReturnType<typeof getInitializePoolInstructionAsync> & SelfPlanAndSendFunctions; retryDraw: (input: MakeOptional<RetryDrawAsyncInput, \"payer\">) => ReturnType<typeof getRetryDrawInstructionAsync> & SelfPlanAndSendFunctions; sellPrize: (input: SellPrizeAsyncInput) => ReturnType<typeof getSellPrizeInstructionAsync> & SelfPlanAndSendFunctions; sellTokens: (input: SellTokensAsyncInput) => ReturnType<typeof getSellTokensInstructionAsync> & SelfPlanAndSendFunctions; }\n\nexport type GaboxV2PluginPdas = { link: typeof findLinkPda; identity: typeof findIdentityPda; referralLink: typeof findReferralLinkPda; referral: typeof findReferralPda; pool: typeof findPoolPda; claimReferralReferral: typeof findClaimReferralReferralPda; draw: typeof findDrawPda; }\n\nexport type GaboxV2PluginRequirements = ClientWithRpc<GetAccountInfoApi & GetMultipleAccountsApi> & ClientWithPayer & ClientWithTransactionPlanning & ClientWithTransactionSending\n\nexport function gaboxV2Program() {\n return <T extends GaboxV2PluginRequirements>(client: T): ExtendedClient<T, { gaboxV2: GaboxV2Plugin }> => {\n return extendClient(client, { gaboxV2: <GaboxV2Plugin>{ accounts: { draw: addSelfFetchFunctions(client, getDrawCodec()), pool: addSelfFetchFunctions(client, getPoolCodec()), referral: addSelfFetchFunctions(client, getReferralCodec()), referralLink: addSelfFetchFunctions(client, getReferralLinkCodec()) }, instructions: { bindReferrer: input => addSelfPlanAndSendFunctions(client, getBindReferrerInstructionAsync(input)), buyPack: input => addSelfPlanAndSendFunctions(client, getBuyPackInstructionAsync(input)), claimPrize: input => addSelfPlanAndSendFunctions(client, getClaimPrizeInstructionAsync(input)), claimReferral: input => addSelfPlanAndSendFunctions(client, getClaimReferralInstructionAsync(input)), deliverDraw: input => addSelfPlanAndSendFunctions(client, getDeliverDrawInstructionAsync(input)), expireDraw: input => addSelfPlanAndSendFunctions(client, getExpireDrawInstructionAsync(input)), fulfillDraw: input => addSelfPlanAndSendFunctions(client, getFulfillDrawInstructionAsync(input)), fundPrizes: input => addSelfPlanAndSendFunctions(client, getFundPrizesInstruction(input)), initializePool: input => addSelfPlanAndSendFunctions(client, getInitializePoolInstructionAsync(input)), retryDraw: input => addSelfPlanAndSendFunctions(client, getRetryDrawInstructionAsync({ ...input, payer: input.payer ?? client.payer })), sellPrize: input => addSelfPlanAndSendFunctions(client, getSellPrizeInstructionAsync(input)), sellTokens: input => addSelfPlanAndSendFunctions(client, getSellTokensInstructionAsync(input)) }, pdas: { link: findLinkPda, identity: findIdentityPda, referralLink: findReferralLinkPda, referral: findReferralPda, pool: findPoolPda, claimReferralReferral: findClaimReferralReferralPda, draw: findDrawPda }, identifyAccount: identifyGaboxV2Account, identifyInstruction: identifyGaboxV2Instruction, parseInstruction: parseGaboxV2Instruction } });\n };\n}\n\ntype MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;"],"mappings":"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"}