@bench.games/opportunity-markets 0.3.1 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.js +1277 -1286
- package/dist/index.cjs +1376 -1376
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +302 -284
- package/dist/index.d.ts +302 -284
- package/dist/index.js +1277 -1286
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/generated/accounts/allowedMint.ts","../src/generated/accounts/arciumSignerAccount.ts","../src/generated/accounts/opportunityMarket.ts","../src/generated/types/activation.ts","../src/generated/types/allowedMintInitializedEvent.ts","../src/generated/types/bN254G2BLSPublicKey.ts","../src/generated/types/circuitSource.ts","../src/generated/types/clockAccount.ts","../src/generated/types/cluster.ts","../src/generated/types/collectedFees.ts","../src/generated/types/computationDefinitionAccount.ts","../src/generated/types/computationDefinitionMeta.ts","../src/generated/types/computationSignature.ts","../src/generated/types/creatorFeesClaimedEvent.ts","../src/generated/types/epoch.ts","../src/generated/types/feeClaimAuthorityChangedEvent.ts","../src/generated/types/feePool.ts","../src/generated/types/feeRates.ts","../src/generated/types/feesClaimedEvent.ts","../src/generated/types/localCircuitSource.ts","../src/generated/types/marketCreatedEvent.ts","../src/generated/types/marketOpenedEvent.ts","../src/generated/types/marketOptionCreatedEvent.ts","../src/generated/types/marketResolvedEvent.ts","../src/generated/types/mXEAccount.ts","../src/generated/types/mxeStatus.ts","../src/generated/types/nodeMetadata.ts","../src/generated/types/nodeRef.ts","../src/generated/types/offChainCircuitSource.ts","../src/generated/types/onChainCircuitSource.ts","../src/generated/types/optionClosedEvent.ts","../src/generated/types/output.ts","../src/generated/types/parameter.ts","../src/generated/types/revealPeriodEndedEvent.ts","../src/generated/types/revealStakeFinalizedEvent.ts","../src/generated/types/revealStakeOutput.ts","../src/generated/types/rewardAddedEvent.ts","../src/generated/types/rewardWithdrawnEvent.ts","../src/generated/types/stakeAccountClosedEvent.ts","../src/generated/types/stakeAccountInitializedEvent.ts","../src/generated/types/stakedEvent.ts","../src/generated/types/stakeOutput.ts","../src/generated/types/stakeOutputStruct0.ts","../src/generated/types/stakeRevealedEvent.ts","../src/generated/types/stakingPausedEvent.ts","../src/generated/types/stakingResumedEvent.ts","../src/generated/types/stuckStakeClosedEvent.ts","../src/generated/types/timestamp.ts","../src/generated/types/unstakedEvent.ts","../src/generated/types/updateAuthorityChangedEvent.ts","../src/generated/types/utilityPubkeys.ts","../src/generated/types/winningOptionSetEvent.ts","../src/generated/accounts/opportunityMarketOption.ts","../src/generated/accounts/opportunityMarketSponsor.ts","../src/generated/accounts/platformConfig.ts","../src/generated/accounts/stakeAccount.ts","../src/generated/errors/opportunityMarket.ts","../src/generated/programs/opportunityMarket.ts","../src/generated/instructions/addMarketOption.ts","../src/generated/shared/index.ts","../src/generated/instructions/addReward.ts","../src/generated/instructions/claimCreatorFees.ts","../src/generated/instructions/claimFees.ts","../src/generated/instructions/closeOptionAccount.ts","../src/generated/instructions/closeStakeAccount.ts","../src/generated/instructions/closeStuckStakeAccount.ts","../src/generated/instructions/createMarket.ts","../src/generated/instructions/endRevealPeriod.ts","../src/generated/instructions/finalizeRevealStake.ts","../src/generated/instructions/initAllowedMint.ts","../src/generated/instructions/initPlatformConfig.ts","../src/generated/instructions/initStakeAccount.ts","../src/generated/instructions/openMarket.ts","../src/generated/instructions/pauseStaking.ts","../src/generated/instructions/resolveMarket.ts","../src/generated/instructions/resumeStaking.ts","../src/generated/instructions/revealStake.ts","../src/generated/instructions/revealStakeCallback.ts","../src/generated/instructions/revealStakeCompDef.ts","../src/generated/instructions/setFeeClaimAuthority.ts","../src/generated/instructions/setUpdateAuthority.ts","../src/generated/instructions/setWinningOption.ts","../src/generated/instructions/stake.ts","../src/generated/instructions/stakeCallback.ts","../src/generated/instructions/stakeCompDef.ts","../src/generated/instructions/unstake.ts","../src/generated/instructions/updatePlatformConfig.ts","../src/generated/instructions/withdrawReward.ts","../src/utils.ts","../src/instructions/createMarket.ts","../src/instructions/initCompDef.ts","../src/arcium/computeAccounts.ts","../src/instructions/stake.ts","../src/instructions/revealStake.ts","../src/instructions/addMarketOption.ts","../src/instructions/openMarket.ts","../src/instructions/pauseStaking.ts","../src/instructions/resumeStaking.ts","../src/instructions/setWinningOption.ts","../src/instructions/resolveMarket.ts","../src/instructions/endRevealPeriod.ts","../src/instructions/addReward.ts","../src/instructions/initStakeAccount.ts","../src/instructions/initAllowedMint.ts","../src/instructions/closeStakeAccount.ts","../src/instructions/closeStuckStakeAccount.ts","../src/instructions/closeOptionAccount.ts","../src/instructions/unstake.ts","../src/instructions/finalizeRevealStake.ts","../src/accounts/platformConfig.ts","../src/instructions/createPlatformConfig.ts","../src/instructions/updatePlatformConfig.ts","../src/instructions/claimFees.ts","../src/instructions/claimCreatorFees.ts","../src/instructions/withdrawReward.ts","../src/instructions/setUpdateAuthority.ts","../src/instructions/setFeeClaimAuthority.ts","../src/accounts/allowedMint.ts","../src/accounts/opportunityMarket.ts","../src/accounts/opportunityMarketOption.ts","../src/accounts/opportunityMarketSponsor.ts","../src/accounts/stakeAccount.ts","../src/arcium/awaitFinalizeComputation.ts","../src/arcium/constants.ts","../src/x25519/keypair.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 {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type EncodedAccount,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const ALLOWED_MINT_DISCRIMINATOR = new Uint8Array([\n 173, 229, 179, 46, 121, 164, 247, 6,\n]);\n\nexport function getAllowedMintDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n ALLOWED_MINT_DISCRIMINATOR\n );\n}\n\nexport type AllowedMint = {\n discriminator: ReadonlyUint8Array;\n bump: number;\n platform: Address;\n mint: Address;\n};\n\nexport type AllowedMintArgs = {\n bump: number;\n platform: Address;\n mint: Address;\n};\n\nexport function getAllowedMintEncoder(): FixedSizeEncoder<AllowedMintArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['platform', getAddressEncoder()],\n ['mint', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: ALLOWED_MINT_DISCRIMINATOR })\n );\n}\n\nexport function getAllowedMintDecoder(): FixedSizeDecoder<AllowedMint> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ['platform', getAddressDecoder()],\n ['mint', getAddressDecoder()],\n ]);\n}\n\nexport function getAllowedMintCodec(): FixedSizeCodec<\n AllowedMintArgs,\n AllowedMint\n> {\n return combineCodec(getAllowedMintEncoder(), getAllowedMintDecoder());\n}\n\nexport function decodeAllowedMint<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<AllowedMint, TAddress>;\nexport function decodeAllowedMint<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<AllowedMint, TAddress>;\nexport function decodeAllowedMint<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<AllowedMint, TAddress> | MaybeAccount<AllowedMint, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getAllowedMintDecoder()\n );\n}\n\nexport async function fetchAllowedMint<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<AllowedMint, TAddress>> {\n const maybeAccount = await fetchMaybeAllowedMint(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeAllowedMint<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<AllowedMint, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeAllowedMint(maybeAccount);\n}\n\nexport async function fetchAllAllowedMint(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<AllowedMint>[]> {\n const maybeAccounts = await fetchAllMaybeAllowedMint(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeAllowedMint(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<AllowedMint>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeAllowedMint(maybeAccount));\n}\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 {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type EncodedAccount,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const ARCIUM_SIGNER_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 214, 157, 122, 114, 117, 44, 214, 74,\n]);\n\nexport function getArciumSignerAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n ARCIUM_SIGNER_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type ArciumSignerAccount = {\n discriminator: ReadonlyUint8Array;\n bump: number;\n};\n\nexport type ArciumSignerAccountArgs = { bump: number };\n\nexport function getArciumSignerAccountEncoder(): FixedSizeEncoder<ArciumSignerAccountArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: ARCIUM_SIGNER_ACCOUNT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getArciumSignerAccountDecoder(): FixedSizeDecoder<ArciumSignerAccount> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ]);\n}\n\nexport function getArciumSignerAccountCodec(): FixedSizeCodec<\n ArciumSignerAccountArgs,\n ArciumSignerAccount\n> {\n return combineCodec(\n getArciumSignerAccountEncoder(),\n getArciumSignerAccountDecoder()\n );\n}\n\nexport function decodeArciumSignerAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<ArciumSignerAccount, TAddress>;\nexport function decodeArciumSignerAccount<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<ArciumSignerAccount, TAddress>;\nexport function decodeArciumSignerAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n | Account<ArciumSignerAccount, TAddress>\n | MaybeAccount<ArciumSignerAccount, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getArciumSignerAccountDecoder()\n );\n}\n\nexport async function fetchArciumSignerAccount<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<ArciumSignerAccount, TAddress>> {\n const maybeAccount = await fetchMaybeArciumSignerAccount(\n rpc,\n address,\n config\n );\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeArciumSignerAccount<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<ArciumSignerAccount, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeArciumSignerAccount(maybeAccount);\n}\n\nexport async function fetchAllArciumSignerAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<ArciumSignerAccount>[]> {\n const maybeAccounts = await fetchAllMaybeArciumSignerAccount(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeArciumSignerAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<ArciumSignerAccount>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeArciumSignerAccount(maybeAccount)\n );\n}\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 {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type Option,\n type OptionOrNullable,\n type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n getFeeRatesDecoder,\n getFeeRatesEncoder,\n type FeeRates,\n type FeeRatesArgs,\n} from '../types';\n\nexport const OPPORTUNITY_MARKET_DISCRIMINATOR = new Uint8Array([\n 207, 103, 169, 160, 157, 215, 97, 224,\n]);\n\nexport function getOpportunityMarketDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n OPPORTUNITY_MARKET_DISCRIMINATOR\n );\n}\n\nexport type OpportunityMarket = {\n discriminator: ReadonlyUint8Array;\n bump: number;\n creator: Address;\n index: bigint;\n totalOptions: bigint;\n platform: Address;\n stakeEndTimestamp: Option<bigint>;\n resolvedAtTimestamp: Option<bigint>;\n winningOptionAllocation: number;\n rewardAmount: bigint;\n marketAuthority: Address;\n revealPeriodAuthority: Address;\n mint: Address;\n earlinessCutoffSeconds: bigint;\n earlinessMultiplier: number;\n allowUnstakingEarly: boolean;\n authorizedReaderPubkey: Array<number>;\n stakingPaused: boolean;\n feeRates: FeeRates;\n collectedPlatformFees: bigint;\n collectedCreatorFees: bigint;\n creatorFeeClaimer: Address;\n marketResolutionDeadlineSeconds: bigint;\n minRevealPeriodSeconds: bigint;\n maxRevealPeriodSeconds: bigint;\n revealEnded: boolean;\n minStakeAmount: bigint;\n};\n\nexport type OpportunityMarketArgs = {\n bump: number;\n creator: Address;\n index: number | bigint;\n totalOptions: number | bigint;\n platform: Address;\n stakeEndTimestamp: OptionOrNullable<number | bigint>;\n resolvedAtTimestamp: OptionOrNullable<number | bigint>;\n winningOptionAllocation: number;\n rewardAmount: number | bigint;\n marketAuthority: Address;\n revealPeriodAuthority: Address;\n mint: Address;\n earlinessCutoffSeconds: number | bigint;\n earlinessMultiplier: number;\n allowUnstakingEarly: boolean;\n authorizedReaderPubkey: Array<number>;\n stakingPaused: boolean;\n feeRates: FeeRatesArgs;\n collectedPlatformFees: number | bigint;\n collectedCreatorFees: number | bigint;\n creatorFeeClaimer: Address;\n marketResolutionDeadlineSeconds: number | bigint;\n minRevealPeriodSeconds: number | bigint;\n maxRevealPeriodSeconds: number | bigint;\n revealEnded: boolean;\n minStakeAmount: number | bigint;\n};\n\nexport function getOpportunityMarketEncoder(): Encoder<OpportunityMarketArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['creator', getAddressEncoder()],\n ['index', getU64Encoder()],\n ['totalOptions', getU64Encoder()],\n ['platform', getAddressEncoder()],\n ['stakeEndTimestamp', getOptionEncoder(getU64Encoder())],\n ['resolvedAtTimestamp', getOptionEncoder(getU64Encoder())],\n ['winningOptionAllocation', getU16Encoder()],\n ['rewardAmount', getU64Encoder()],\n ['marketAuthority', getAddressEncoder()],\n ['revealPeriodAuthority', getAddressEncoder()],\n ['mint', getAddressEncoder()],\n ['earlinessCutoffSeconds', getU64Encoder()],\n ['earlinessMultiplier', getU16Encoder()],\n ['allowUnstakingEarly', getBooleanEncoder()],\n ['authorizedReaderPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['stakingPaused', getBooleanEncoder()],\n ['feeRates', getFeeRatesEncoder()],\n ['collectedPlatformFees', getU64Encoder()],\n ['collectedCreatorFees', getU64Encoder()],\n ['creatorFeeClaimer', getAddressEncoder()],\n ['marketResolutionDeadlineSeconds', getU64Encoder()],\n ['minRevealPeriodSeconds', getU64Encoder()],\n ['maxRevealPeriodSeconds', getU64Encoder()],\n ['revealEnded', getBooleanEncoder()],\n ['minStakeAmount', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: OPPORTUNITY_MARKET_DISCRIMINATOR })\n );\n}\n\nexport function getOpportunityMarketDecoder(): Decoder<OpportunityMarket> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ['creator', getAddressDecoder()],\n ['index', getU64Decoder()],\n ['totalOptions', getU64Decoder()],\n ['platform', getAddressDecoder()],\n ['stakeEndTimestamp', getOptionDecoder(getU64Decoder())],\n ['resolvedAtTimestamp', getOptionDecoder(getU64Decoder())],\n ['winningOptionAllocation', getU16Decoder()],\n ['rewardAmount', getU64Decoder()],\n ['marketAuthority', getAddressDecoder()],\n ['revealPeriodAuthority', getAddressDecoder()],\n ['mint', getAddressDecoder()],\n ['earlinessCutoffSeconds', getU64Decoder()],\n ['earlinessMultiplier', getU16Decoder()],\n ['allowUnstakingEarly', getBooleanDecoder()],\n ['authorizedReaderPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['stakingPaused', getBooleanDecoder()],\n ['feeRates', getFeeRatesDecoder()],\n ['collectedPlatformFees', getU64Decoder()],\n ['collectedCreatorFees', getU64Decoder()],\n ['creatorFeeClaimer', getAddressDecoder()],\n ['marketResolutionDeadlineSeconds', getU64Decoder()],\n ['minRevealPeriodSeconds', getU64Decoder()],\n ['maxRevealPeriodSeconds', getU64Decoder()],\n ['revealEnded', getBooleanDecoder()],\n ['minStakeAmount', getU64Decoder()],\n ]);\n}\n\nexport function getOpportunityMarketCodec(): Codec<\n OpportunityMarketArgs,\n OpportunityMarket\n> {\n return combineCodec(\n getOpportunityMarketEncoder(),\n getOpportunityMarketDecoder()\n );\n}\n\nexport function decodeOpportunityMarket<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<OpportunityMarket, TAddress>;\nexport function decodeOpportunityMarket<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<OpportunityMarket, TAddress>;\nexport function decodeOpportunityMarket<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n | Account<OpportunityMarket, TAddress>\n | MaybeAccount<OpportunityMarket, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getOpportunityMarketDecoder()\n );\n}\n\nexport async function fetchOpportunityMarket<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<OpportunityMarket, TAddress>> {\n const maybeAccount = await fetchMaybeOpportunityMarket(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeOpportunityMarket<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<OpportunityMarket, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeOpportunityMarket(maybeAccount);\n}\n\nexport async function fetchAllOpportunityMarket(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<OpportunityMarket>[]> {\n const maybeAccounts = await fetchAllMaybeOpportunityMarket(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeOpportunityMarket(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<OpportunityMarket>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeOpportunityMarket(maybeAccount)\n );\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\nimport {\n getEpochDecoder,\n getEpochEncoder,\n type Epoch,\n type EpochArgs,\n} from '.';\n\nexport type Activation = { activationEpoch: Epoch; deactivationEpoch: Epoch };\n\nexport type ActivationArgs = {\n activationEpoch: EpochArgs;\n deactivationEpoch: EpochArgs;\n};\n\nexport function getActivationEncoder(): FixedSizeEncoder<ActivationArgs> {\n return getStructEncoder([\n ['activationEpoch', getEpochEncoder()],\n ['deactivationEpoch', getEpochEncoder()],\n ]);\n}\n\nexport function getActivationDecoder(): FixedSizeDecoder<Activation> {\n return getStructDecoder([\n ['activationEpoch', getEpochDecoder()],\n ['deactivationEpoch', getEpochDecoder()],\n ]);\n}\n\nexport function getActivationCodec(): FixedSizeCodec<\n ActivationArgs,\n Activation\n> {\n return combineCodec(getActivationEncoder(), getActivationDecoder());\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type AllowedMintInitializedEvent = {\n allowedMint: Address;\n platform: Address;\n mint: Address;\n timestamp: bigint;\n};\n\nexport type AllowedMintInitializedEventArgs = {\n allowedMint: Address;\n platform: Address;\n mint: Address;\n timestamp: number | bigint;\n};\n\nexport function getAllowedMintInitializedEventEncoder(): FixedSizeEncoder<AllowedMintInitializedEventArgs> {\n return getStructEncoder([\n ['allowedMint', getAddressEncoder()],\n ['platform', getAddressEncoder()],\n ['mint', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getAllowedMintInitializedEventDecoder(): FixedSizeDecoder<AllowedMintInitializedEvent> {\n return getStructDecoder([\n ['allowedMint', getAddressDecoder()],\n ['platform', getAddressDecoder()],\n ['mint', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getAllowedMintInitializedEventCodec(): FixedSizeCodec<\n AllowedMintInitializedEventArgs,\n AllowedMintInitializedEvent\n> {\n return combineCodec(\n getAllowedMintInitializedEventEncoder(),\n getAllowedMintInitializedEventDecoder()\n );\n}\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 {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type BN254G2BLSPublicKey = readonly [Array<number>];\n\nexport type BN254G2BLSPublicKeyArgs = BN254G2BLSPublicKey;\n\nexport function getBN254G2BLSPublicKeyEncoder(): FixedSizeEncoder<BN254G2BLSPublicKeyArgs> {\n return getTupleEncoder([getArrayEncoder(getU8Encoder(), { size: 64 })]);\n}\n\nexport function getBN254G2BLSPublicKeyDecoder(): FixedSizeDecoder<BN254G2BLSPublicKey> {\n return getTupleDecoder([getArrayDecoder(getU8Decoder(), { size: 64 })]);\n}\n\nexport function getBN254G2BLSPublicKeyCodec(): FixedSizeCodec<\n BN254G2BLSPublicKeyArgs,\n BN254G2BLSPublicKey\n> {\n return combineCodec(\n getBN254G2BLSPublicKeyEncoder(),\n getBN254G2BLSPublicKeyDecoder()\n );\n}\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 {\n combineCodec,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n type Codec,\n type Decoder,\n type Encoder,\n type GetDiscriminatedUnionVariant,\n type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n getLocalCircuitSourceDecoder,\n getLocalCircuitSourceEncoder,\n getOffChainCircuitSourceDecoder,\n getOffChainCircuitSourceEncoder,\n getOnChainCircuitSourceDecoder,\n getOnChainCircuitSourceEncoder,\n type LocalCircuitSource,\n type LocalCircuitSourceArgs,\n type OffChainCircuitSource,\n type OffChainCircuitSourceArgs,\n type OnChainCircuitSource,\n type OnChainCircuitSourceArgs,\n} from '.';\n\nexport type CircuitSource =\n | { __kind: 'Local'; fields: readonly [LocalCircuitSource] }\n | { __kind: 'OnChain'; fields: readonly [OnChainCircuitSource] }\n | { __kind: 'OffChain'; fields: readonly [OffChainCircuitSource] };\n\nexport type CircuitSourceArgs =\n | { __kind: 'Local'; fields: readonly [LocalCircuitSourceArgs] }\n | { __kind: 'OnChain'; fields: readonly [OnChainCircuitSourceArgs] }\n | { __kind: 'OffChain'; fields: readonly [OffChainCircuitSourceArgs] };\n\nexport function getCircuitSourceEncoder(): Encoder<CircuitSourceArgs> {\n return getDiscriminatedUnionEncoder([\n [\n 'Local',\n getStructEncoder([\n ['fields', getTupleEncoder([getLocalCircuitSourceEncoder()])],\n ]),\n ],\n [\n 'OnChain',\n getStructEncoder([\n ['fields', getTupleEncoder([getOnChainCircuitSourceEncoder()])],\n ]),\n ],\n [\n 'OffChain',\n getStructEncoder([\n ['fields', getTupleEncoder([getOffChainCircuitSourceEncoder()])],\n ]),\n ],\n ]);\n}\n\nexport function getCircuitSourceDecoder(): Decoder<CircuitSource> {\n return getDiscriminatedUnionDecoder([\n [\n 'Local',\n getStructDecoder([\n ['fields', getTupleDecoder([getLocalCircuitSourceDecoder()])],\n ]),\n ],\n [\n 'OnChain',\n getStructDecoder([\n ['fields', getTupleDecoder([getOnChainCircuitSourceDecoder()])],\n ]),\n ],\n [\n 'OffChain',\n getStructDecoder([\n ['fields', getTupleDecoder([getOffChainCircuitSourceDecoder()])],\n ]),\n ],\n ]);\n}\n\nexport function getCircuitSourceCodec(): Codec<\n CircuitSourceArgs,\n CircuitSource\n> {\n return combineCodec(getCircuitSourceEncoder(), getCircuitSourceDecoder());\n}\n\n// Data Enum Helpers.\nexport function circuitSource(\n kind: 'Local',\n data: GetDiscriminatedUnionVariantContent<\n CircuitSourceArgs,\n '__kind',\n 'Local'\n >['fields']\n): GetDiscriminatedUnionVariant<CircuitSourceArgs, '__kind', 'Local'>;\nexport function circuitSource(\n kind: 'OnChain',\n data: GetDiscriminatedUnionVariantContent<\n CircuitSourceArgs,\n '__kind',\n 'OnChain'\n >['fields']\n): GetDiscriminatedUnionVariant<CircuitSourceArgs, '__kind', 'OnChain'>;\nexport function circuitSource(\n kind: 'OffChain',\n data: GetDiscriminatedUnionVariantContent<\n CircuitSourceArgs,\n '__kind',\n 'OffChain'\n >['fields']\n): GetDiscriminatedUnionVariant<CircuitSourceArgs, '__kind', 'OffChain'>;\nexport function circuitSource<K extends CircuitSourceArgs['__kind'], Data>(\n kind: K,\n data?: Data\n) {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isCircuitSource<K extends CircuitSource['__kind']>(\n kind: K,\n value: CircuitSource\n): value is CircuitSource & { __kind: K } {\n return value.__kind === kind;\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\nimport {\n getEpochDecoder,\n getEpochEncoder,\n getTimestampDecoder,\n getTimestampEncoder,\n type Epoch,\n type EpochArgs,\n type Timestamp,\n type TimestampArgs,\n} from '.';\n\n/** An account storing the current network epoch */\nexport type ClockAccount = {\n startEpoch: Epoch;\n currentEpoch: Epoch;\n startEpochTimestamp: Timestamp;\n bump: number;\n};\n\nexport type ClockAccountArgs = {\n startEpoch: EpochArgs;\n currentEpoch: EpochArgs;\n startEpochTimestamp: TimestampArgs;\n bump: number;\n};\n\nexport function getClockAccountEncoder(): FixedSizeEncoder<ClockAccountArgs> {\n return getStructEncoder([\n ['startEpoch', getEpochEncoder()],\n ['currentEpoch', getEpochEncoder()],\n ['startEpochTimestamp', getTimestampEncoder()],\n ['bump', getU8Encoder()],\n ]);\n}\n\nexport function getClockAccountDecoder(): FixedSizeDecoder<ClockAccount> {\n return getStructDecoder([\n ['startEpoch', getEpochDecoder()],\n ['currentEpoch', getEpochDecoder()],\n ['startEpochTimestamp', getTimestampDecoder()],\n ['bump', getU8Decoder()],\n ]);\n}\n\nexport function getClockAccountCodec(): FixedSizeCodec<\n ClockAccountArgs,\n ClockAccount\n> {\n return combineCodec(getClockAccountEncoder(), getClockAccountDecoder());\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getU16Decoder,\n getU16Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Option,\n type OptionOrNullable,\n} from '@solana/kit';\nimport {\n getActivationDecoder,\n getActivationEncoder,\n getBN254G2BLSPublicKeyDecoder,\n getBN254G2BLSPublicKeyEncoder,\n getEpochDecoder,\n getEpochEncoder,\n getNodeMetadataDecoder,\n getNodeMetadataEncoder,\n getNodeRefDecoder,\n getNodeRefEncoder,\n type Activation,\n type ActivationArgs,\n type BN254G2BLSPublicKey,\n type BN254G2BLSPublicKeyArgs,\n type Epoch,\n type EpochArgs,\n type NodeMetadata,\n type NodeMetadataArgs,\n type NodeRef,\n type NodeRefArgs,\n} from '.';\n\nexport type Cluster = {\n tdInfo: Option<NodeMetadata>;\n authority: Option<Address>;\n clusterSize: number;\n activation: Activation;\n maxCapacity: bigint;\n cuPrice: bigint;\n cuPriceProposals: Array<bigint>;\n lastUpdatedEpoch: Epoch;\n nodes: Array<NodeRef>;\n pendingNodes: Array<number>;\n blsPublicKey:\n | { __kind: 'Set'; fields: readonly [BN254G2BLSPublicKey] }\n | {\n __kind: 'Unset';\n fields: readonly [BN254G2BLSPublicKey, Array<boolean>];\n };\n bump: number;\n};\n\nexport type ClusterArgs = {\n tdInfo: OptionOrNullable<NodeMetadataArgs>;\n authority: OptionOrNullable<Address>;\n clusterSize: number;\n activation: ActivationArgs;\n maxCapacity: number | bigint;\n cuPrice: number | bigint;\n cuPriceProposals: Array<number | bigint>;\n lastUpdatedEpoch: EpochArgs;\n nodes: Array<NodeRefArgs>;\n pendingNodes: Array<number>;\n blsPublicKey:\n | { __kind: 'Set'; fields: readonly [BN254G2BLSPublicKeyArgs] }\n | {\n __kind: 'Unset';\n fields: readonly [BN254G2BLSPublicKeyArgs, Array<boolean>];\n };\n bump: number;\n};\n\nexport function getClusterEncoder(): Encoder<ClusterArgs> {\n return getStructEncoder([\n ['tdInfo', getOptionEncoder(getNodeMetadataEncoder())],\n ['authority', getOptionEncoder(getAddressEncoder())],\n ['clusterSize', getU16Encoder()],\n ['activation', getActivationEncoder()],\n ['maxCapacity', getU64Encoder()],\n ['cuPrice', getU64Encoder()],\n ['cuPriceProposals', getArrayEncoder(getU64Encoder(), { size: 32 })],\n ['lastUpdatedEpoch', getEpochEncoder()],\n ['nodes', getArrayEncoder(getNodeRefEncoder())],\n ['pendingNodes', getArrayEncoder(getU32Encoder())],\n [\n 'blsPublicKey',\n getDiscriminatedUnionEncoder([\n [\n 'Set',\n getStructEncoder([\n ['fields', getTupleEncoder([getBN254G2BLSPublicKeyEncoder()])],\n ]),\n ],\n [\n 'Unset',\n getStructEncoder([\n [\n 'fields',\n getTupleEncoder([\n getBN254G2BLSPublicKeyEncoder(),\n getArrayEncoder(getBooleanEncoder()),\n ]),\n ],\n ]),\n ],\n ]),\n ],\n ['bump', getU8Encoder()],\n ]);\n}\n\nexport function getClusterDecoder(): Decoder<Cluster> {\n return getStructDecoder([\n ['tdInfo', getOptionDecoder(getNodeMetadataDecoder())],\n ['authority', getOptionDecoder(getAddressDecoder())],\n ['clusterSize', getU16Decoder()],\n ['activation', getActivationDecoder()],\n ['maxCapacity', getU64Decoder()],\n ['cuPrice', getU64Decoder()],\n ['cuPriceProposals', getArrayDecoder(getU64Decoder(), { size: 32 })],\n ['lastUpdatedEpoch', getEpochDecoder()],\n ['nodes', getArrayDecoder(getNodeRefDecoder())],\n ['pendingNodes', getArrayDecoder(getU32Decoder())],\n [\n 'blsPublicKey',\n getDiscriminatedUnionDecoder([\n [\n 'Set',\n getStructDecoder([\n ['fields', getTupleDecoder([getBN254G2BLSPublicKeyDecoder()])],\n ]),\n ],\n [\n 'Unset',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([\n getBN254G2BLSPublicKeyDecoder(),\n getArrayDecoder(getBooleanDecoder()),\n ]),\n ],\n ]),\n ],\n ]),\n ],\n ['bump', getU8Decoder()],\n ]);\n}\n\nexport function getClusterCodec(): Codec<ClusterArgs, Cluster> {\n return combineCodec(getClusterEncoder(), getClusterDecoder());\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type CollectedFees = {\n platformFee: bigint;\n rewardPoolFee: bigint;\n creatorFee: bigint;\n};\n\nexport type CollectedFeesArgs = {\n platformFee: number | bigint;\n rewardPoolFee: number | bigint;\n creatorFee: number | bigint;\n};\n\nexport function getCollectedFeesEncoder(): FixedSizeEncoder<CollectedFeesArgs> {\n return getStructEncoder([\n ['platformFee', getU64Encoder()],\n ['rewardPoolFee', getU64Encoder()],\n ['creatorFee', getU64Encoder()],\n ]);\n}\n\nexport function getCollectedFeesDecoder(): FixedSizeDecoder<CollectedFees> {\n return getStructDecoder([\n ['platformFee', getU64Decoder()],\n ['rewardPoolFee', getU64Decoder()],\n ['creatorFee', getU64Decoder()],\n ]);\n}\n\nexport function getCollectedFeesCodec(): FixedSizeCodec<\n CollectedFeesArgs,\n CollectedFees\n> {\n return combineCodec(getCollectedFeesEncoder(), getCollectedFeesDecoder());\n}\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 {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type Option,\n type OptionOrNullable,\n} from '@solana/kit';\nimport {\n getCircuitSourceDecoder,\n getCircuitSourceEncoder,\n getComputationDefinitionMetaDecoder,\n getComputationDefinitionMetaEncoder,\n type CircuitSource,\n type CircuitSourceArgs,\n type ComputationDefinitionMeta,\n type ComputationDefinitionMetaArgs,\n} from '.';\n\n/** An account representing a [ComputationDefinition] in a MXE. */\nexport type ComputationDefinitionAccount = {\n deactivationSlot: Option<bigint>;\n cuAmount: bigint;\n definition: ComputationDefinitionMeta;\n circuitSource: CircuitSource;\n bump: number;\n padding: Array<number>;\n};\n\nexport type ComputationDefinitionAccountArgs = {\n deactivationSlot: OptionOrNullable<number | bigint>;\n cuAmount: number | bigint;\n definition: ComputationDefinitionMetaArgs;\n circuitSource: CircuitSourceArgs;\n bump: number;\n padding: Array<number>;\n};\n\nexport function getComputationDefinitionAccountEncoder(): Encoder<ComputationDefinitionAccountArgs> {\n return getStructEncoder([\n ['deactivationSlot', getOptionEncoder(getU64Encoder())],\n ['cuAmount', getU64Encoder()],\n ['definition', getComputationDefinitionMetaEncoder()],\n ['circuitSource', getCircuitSourceEncoder()],\n ['bump', getU8Encoder()],\n ['padding', getArrayEncoder(getU8Encoder(), { size: 24 })],\n ]);\n}\n\nexport function getComputationDefinitionAccountDecoder(): Decoder<ComputationDefinitionAccount> {\n return getStructDecoder([\n ['deactivationSlot', getOptionDecoder(getU64Decoder())],\n ['cuAmount', getU64Decoder()],\n ['definition', getComputationDefinitionMetaDecoder()],\n ['circuitSource', getCircuitSourceDecoder()],\n ['bump', getU8Decoder()],\n ['padding', getArrayDecoder(getU8Decoder(), { size: 24 })],\n ]);\n}\n\nexport function getComputationDefinitionAccountCodec(): Codec<\n ComputationDefinitionAccountArgs,\n ComputationDefinitionAccount\n> {\n return combineCodec(\n getComputationDefinitionAccountEncoder(),\n getComputationDefinitionAccountDecoder()\n );\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\nimport {\n getComputationSignatureDecoder,\n getComputationSignatureEncoder,\n type ComputationSignature,\n type ComputationSignatureArgs,\n} from '.';\n\n/** A computation definition for execution in a MXE. */\nexport type ComputationDefinitionMeta = {\n circuitLen: number;\n signature: ComputationSignature;\n};\n\nexport type ComputationDefinitionMetaArgs = {\n circuitLen: number;\n signature: ComputationSignatureArgs;\n};\n\nexport function getComputationDefinitionMetaEncoder(): Encoder<ComputationDefinitionMetaArgs> {\n return getStructEncoder([\n ['circuitLen', getU32Encoder()],\n ['signature', getComputationSignatureEncoder()],\n ]);\n}\n\nexport function getComputationDefinitionMetaDecoder(): Decoder<ComputationDefinitionMeta> {\n return getStructDecoder([\n ['circuitLen', getU32Decoder()],\n ['signature', getComputationSignatureDecoder()],\n ]);\n}\n\nexport function getComputationDefinitionMetaCodec(): Codec<\n ComputationDefinitionMetaArgs,\n ComputationDefinitionMeta\n> {\n return combineCodec(\n getComputationDefinitionMetaEncoder(),\n getComputationDefinitionMetaDecoder()\n );\n}\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 {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\nimport {\n getOutputDecoder,\n getOutputEncoder,\n getParameterDecoder,\n getParameterEncoder,\n type Output,\n type OutputArgs,\n type Parameter,\n type ParameterArgs,\n} from '.';\n\n/** The signature of a computation defined in a [ComputationDefinition]. */\nexport type ComputationSignature = {\n parameters: Array<Parameter>;\n outputs: Array<Output>;\n};\n\nexport type ComputationSignatureArgs = {\n parameters: Array<ParameterArgs>;\n outputs: Array<OutputArgs>;\n};\n\nexport function getComputationSignatureEncoder(): Encoder<ComputationSignatureArgs> {\n return getStructEncoder([\n ['parameters', getArrayEncoder(getParameterEncoder())],\n ['outputs', getArrayEncoder(getOutputEncoder())],\n ]);\n}\n\nexport function getComputationSignatureDecoder(): Decoder<ComputationSignature> {\n return getStructDecoder([\n ['parameters', getArrayDecoder(getParameterDecoder())],\n ['outputs', getArrayDecoder(getOutputDecoder())],\n ]);\n}\n\nexport function getComputationSignatureCodec(): Codec<\n ComputationSignatureArgs,\n ComputationSignature\n> {\n return combineCodec(\n getComputationSignatureEncoder(),\n getComputationSignatureDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type CreatorFeesClaimedEvent = {\n market: Address;\n creatorFeeClaimer: Address;\n mint: Address;\n destination: Address;\n amount: bigint;\n timestamp: bigint;\n};\n\nexport type CreatorFeesClaimedEventArgs = {\n market: Address;\n creatorFeeClaimer: Address;\n mint: Address;\n destination: Address;\n amount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getCreatorFeesClaimedEventEncoder(): FixedSizeEncoder<CreatorFeesClaimedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['creatorFeeClaimer', getAddressEncoder()],\n ['mint', getAddressEncoder()],\n ['destination', getAddressEncoder()],\n ['amount', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getCreatorFeesClaimedEventDecoder(): FixedSizeDecoder<CreatorFeesClaimedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['creatorFeeClaimer', getAddressDecoder()],\n ['mint', getAddressDecoder()],\n ['destination', getAddressDecoder()],\n ['amount', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getCreatorFeesClaimedEventCodec(): FixedSizeCodec<\n CreatorFeesClaimedEventArgs,\n CreatorFeesClaimedEvent\n> {\n return combineCodec(\n getCreatorFeesClaimedEventEncoder(),\n getCreatorFeesClaimedEventDecoder()\n );\n}\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 {\n combineCodec,\n getTupleDecoder,\n getTupleEncoder,\n getU64Decoder,\n getU64Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\n/** The network epoch */\nexport type Epoch = readonly [bigint];\n\nexport type EpochArgs = readonly [number | bigint];\n\nexport function getEpochEncoder(): FixedSizeEncoder<EpochArgs> {\n return getTupleEncoder([getU64Encoder()]);\n}\n\nexport function getEpochDecoder(): FixedSizeDecoder<Epoch> {\n return getTupleDecoder([getU64Decoder()]);\n}\n\nexport function getEpochCodec(): FixedSizeCodec<EpochArgs, Epoch> {\n return combineCodec(getEpochEncoder(), getEpochDecoder());\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type FeeClaimAuthorityChangedEvent = {\n platformConfig: Address;\n oldValue: Address;\n newValue: Address;\n timestamp: bigint;\n};\n\nexport type FeeClaimAuthorityChangedEventArgs = {\n platformConfig: Address;\n oldValue: Address;\n newValue: Address;\n timestamp: number | bigint;\n};\n\nexport function getFeeClaimAuthorityChangedEventEncoder(): FixedSizeEncoder<FeeClaimAuthorityChangedEventArgs> {\n return getStructEncoder([\n ['platformConfig', getAddressEncoder()],\n ['oldValue', getAddressEncoder()],\n ['newValue', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getFeeClaimAuthorityChangedEventDecoder(): FixedSizeDecoder<FeeClaimAuthorityChangedEvent> {\n return getStructDecoder([\n ['platformConfig', getAddressDecoder()],\n ['oldValue', getAddressDecoder()],\n ['newValue', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getFeeClaimAuthorityChangedEventCodec(): FixedSizeCodec<\n FeeClaimAuthorityChangedEventArgs,\n FeeClaimAuthorityChangedEvent\n> {\n return combineCodec(\n getFeeClaimAuthorityChangedEventEncoder(),\n getFeeClaimAuthorityChangedEventDecoder()\n );\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type FeePool = { bump: number };\n\nexport type FeePoolArgs = FeePool;\n\nexport function getFeePoolEncoder(): FixedSizeEncoder<FeePoolArgs> {\n return getStructEncoder([['bump', getU8Encoder()]]);\n}\n\nexport function getFeePoolDecoder(): FixedSizeDecoder<FeePool> {\n return getStructDecoder([['bump', getU8Decoder()]]);\n}\n\nexport function getFeePoolCodec(): FixedSizeCodec<FeePoolArgs, FeePool> {\n return combineCodec(getFeePoolEncoder(), getFeePoolDecoder());\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type FeeRates = {\n platformFeeBp: number;\n rewardPoolFeeBp: number;\n creatorFeeBp: number;\n};\n\nexport type FeeRatesArgs = FeeRates;\n\nexport function getFeeRatesEncoder(): FixedSizeEncoder<FeeRatesArgs> {\n return getStructEncoder([\n ['platformFeeBp', getU16Encoder()],\n ['rewardPoolFeeBp', getU16Encoder()],\n ['creatorFeeBp', getU16Encoder()],\n ]);\n}\n\nexport function getFeeRatesDecoder(): FixedSizeDecoder<FeeRates> {\n return getStructDecoder([\n ['platformFeeBp', getU16Decoder()],\n ['rewardPoolFeeBp', getU16Decoder()],\n ['creatorFeeBp', getU16Decoder()],\n ]);\n}\n\nexport function getFeeRatesCodec(): FixedSizeCodec<FeeRatesArgs, FeeRates> {\n return combineCodec(getFeeRatesEncoder(), getFeeRatesDecoder());\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type FeesClaimedEvent = {\n market: Address;\n platform: Address;\n mint: Address;\n destination: Address;\n amount: bigint;\n timestamp: bigint;\n};\n\nexport type FeesClaimedEventArgs = {\n market: Address;\n platform: Address;\n mint: Address;\n destination: Address;\n amount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getFeesClaimedEventEncoder(): FixedSizeEncoder<FeesClaimedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['platform', getAddressEncoder()],\n ['mint', getAddressEncoder()],\n ['destination', getAddressEncoder()],\n ['amount', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getFeesClaimedEventDecoder(): FixedSizeDecoder<FeesClaimedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['platform', getAddressDecoder()],\n ['mint', getAddressDecoder()],\n ['destination', getAddressDecoder()],\n ['amount', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getFeesClaimedEventCodec(): FixedSizeCodec<\n FeesClaimedEventArgs,\n FeesClaimedEvent\n> {\n return combineCodec(\n getFeesClaimedEventEncoder(),\n getFeesClaimedEventDecoder()\n );\n}\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 {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport enum LocalCircuitSource {\n MxeKeygen,\n MxeKeyRecoveryInit,\n MxeKeyRecoveryFinalize,\n}\n\nexport type LocalCircuitSourceArgs = LocalCircuitSource;\n\nexport function getLocalCircuitSourceEncoder(): FixedSizeEncoder<LocalCircuitSourceArgs> {\n return getEnumEncoder(LocalCircuitSource);\n}\n\nexport function getLocalCircuitSourceDecoder(): FixedSizeDecoder<LocalCircuitSource> {\n return getEnumDecoder(LocalCircuitSource);\n}\n\nexport function getLocalCircuitSourceCodec(): FixedSizeCodec<\n LocalCircuitSourceArgs,\n LocalCircuitSource\n> {\n return combineCodec(\n getLocalCircuitSourceEncoder(),\n getLocalCircuitSourceDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\nimport {\n getFeeRatesDecoder,\n getFeeRatesEncoder,\n type FeeRates,\n type FeeRatesArgs,\n} from '.';\n\nexport type MarketCreatedEvent = {\n market: Address;\n creator: Address;\n platform: Address;\n index: bigint;\n mint: Address;\n earlinessCutoffSeconds: bigint;\n earlinessMultiplier: number;\n marketAuthority: Address;\n authorizedReaderPubkey: Array<number>;\n allowUnstakingEarly: boolean;\n minStakeAmount: bigint;\n feeRates: FeeRates;\n creatorFeeClaimer: Address;\n marketResolutionDeadlineSeconds: bigint;\n minRevealPeriodSeconds: bigint;\n maxRevealPeriodSeconds: bigint;\n timestamp: bigint;\n};\n\nexport type MarketCreatedEventArgs = {\n market: Address;\n creator: Address;\n platform: Address;\n index: number | bigint;\n mint: Address;\n earlinessCutoffSeconds: number | bigint;\n earlinessMultiplier: number;\n marketAuthority: Address;\n authorizedReaderPubkey: Array<number>;\n allowUnstakingEarly: boolean;\n minStakeAmount: number | bigint;\n feeRates: FeeRatesArgs;\n creatorFeeClaimer: Address;\n marketResolutionDeadlineSeconds: number | bigint;\n minRevealPeriodSeconds: number | bigint;\n maxRevealPeriodSeconds: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getMarketCreatedEventEncoder(): FixedSizeEncoder<MarketCreatedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['creator', getAddressEncoder()],\n ['platform', getAddressEncoder()],\n ['index', getU64Encoder()],\n ['mint', getAddressEncoder()],\n ['earlinessCutoffSeconds', getU64Encoder()],\n ['earlinessMultiplier', getU16Encoder()],\n ['marketAuthority', getAddressEncoder()],\n ['authorizedReaderPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['allowUnstakingEarly', getBooleanEncoder()],\n ['minStakeAmount', getU64Encoder()],\n ['feeRates', getFeeRatesEncoder()],\n ['creatorFeeClaimer', getAddressEncoder()],\n ['marketResolutionDeadlineSeconds', getU64Encoder()],\n ['minRevealPeriodSeconds', getU64Encoder()],\n ['maxRevealPeriodSeconds', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getMarketCreatedEventDecoder(): FixedSizeDecoder<MarketCreatedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['creator', getAddressDecoder()],\n ['platform', getAddressDecoder()],\n ['index', getU64Decoder()],\n ['mint', getAddressDecoder()],\n ['earlinessCutoffSeconds', getU64Decoder()],\n ['earlinessMultiplier', getU16Decoder()],\n ['marketAuthority', getAddressDecoder()],\n ['authorizedReaderPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['allowUnstakingEarly', getBooleanDecoder()],\n ['minStakeAmount', getU64Decoder()],\n ['feeRates', getFeeRatesDecoder()],\n ['creatorFeeClaimer', getAddressDecoder()],\n ['marketResolutionDeadlineSeconds', getU64Decoder()],\n ['minRevealPeriodSeconds', getU64Decoder()],\n ['maxRevealPeriodSeconds', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getMarketCreatedEventCodec(): FixedSizeCodec<\n MarketCreatedEventArgs,\n MarketCreatedEvent\n> {\n return combineCodec(\n getMarketCreatedEventEncoder(),\n getMarketCreatedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type MarketOpenedEvent = {\n market: Address;\n creator: Address;\n stakeEndTimestamp: bigint;\n timestamp: bigint;\n};\n\nexport type MarketOpenedEventArgs = {\n market: Address;\n creator: Address;\n stakeEndTimestamp: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getMarketOpenedEventEncoder(): FixedSizeEncoder<MarketOpenedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['creator', getAddressEncoder()],\n ['stakeEndTimestamp', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getMarketOpenedEventDecoder(): FixedSizeDecoder<MarketOpenedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['creator', getAddressDecoder()],\n ['stakeEndTimestamp', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getMarketOpenedEventCodec(): FixedSizeCodec<\n MarketOpenedEventArgs,\n MarketOpenedEvent\n> {\n return combineCodec(\n getMarketOpenedEventEncoder(),\n getMarketOpenedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type MarketOptionCreatedEvent = {\n option: Address;\n market: Address;\n signer: Address;\n id: bigint;\n timestamp: bigint;\n};\n\nexport type MarketOptionCreatedEventArgs = {\n option: Address;\n market: Address;\n signer: Address;\n id: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getMarketOptionCreatedEventEncoder(): FixedSizeEncoder<MarketOptionCreatedEventArgs> {\n return getStructEncoder([\n ['option', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['signer', getAddressEncoder()],\n ['id', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getMarketOptionCreatedEventDecoder(): FixedSizeDecoder<MarketOptionCreatedEvent> {\n return getStructDecoder([\n ['option', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['signer', getAddressDecoder()],\n ['id', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getMarketOptionCreatedEventCodec(): FixedSizeCodec<\n MarketOptionCreatedEventArgs,\n MarketOptionCreatedEvent\n> {\n return combineCodec(\n getMarketOptionCreatedEventEncoder(),\n getMarketOptionCreatedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type MarketResolvedEvent = {\n market: Address;\n marketAuthority: Address;\n timestamp: bigint;\n};\n\nexport type MarketResolvedEventArgs = {\n market: Address;\n marketAuthority: Address;\n timestamp: number | bigint;\n};\n\nexport function getMarketResolvedEventEncoder(): FixedSizeEncoder<MarketResolvedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['marketAuthority', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getMarketResolvedEventDecoder(): FixedSizeDecoder<MarketResolvedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['marketAuthority', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getMarketResolvedEventCodec(): FixedSizeCodec<\n MarketResolvedEventArgs,\n MarketResolvedEvent\n> {\n return combineCodec(\n getMarketResolvedEventEncoder(),\n getMarketResolvedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Option,\n type OptionOrNullable,\n} from '@solana/kit';\nimport {\n getMxeStatusDecoder,\n getMxeStatusEncoder,\n getUtilityPubkeysDecoder,\n getUtilityPubkeysEncoder,\n type MxeStatus,\n type MxeStatusArgs,\n type UtilityPubkeys,\n type UtilityPubkeysArgs,\n} from '.';\n\n/** A MPC Execution Environment. */\nexport type MXEAccount = {\n padding: number;\n cluster: number;\n keygenOffset: bigint;\n keyRecoveryInitOffset: bigint;\n mxeProgramId: Address;\n authority: Option<Address>;\n utilityPubkeys:\n | { __kind: 'Set'; fields: readonly [UtilityPubkeys] }\n | { __kind: 'Unset'; fields: readonly [UtilityPubkeys, Array<boolean>] };\n lutOffsetSlot: bigint;\n computationDefinitions: Array<number>;\n status: MxeStatus;\n bump: number;\n};\n\nexport type MXEAccountArgs = {\n padding: number;\n cluster: number;\n keygenOffset: number | bigint;\n keyRecoveryInitOffset: number | bigint;\n mxeProgramId: Address;\n authority: OptionOrNullable<Address>;\n utilityPubkeys:\n | { __kind: 'Set'; fields: readonly [UtilityPubkeysArgs] }\n | {\n __kind: 'Unset';\n fields: readonly [UtilityPubkeysArgs, Array<boolean>];\n };\n lutOffsetSlot: number | bigint;\n computationDefinitions: Array<number>;\n status: MxeStatusArgs;\n bump: number;\n};\n\nexport function getMXEAccountEncoder(): Encoder<MXEAccountArgs> {\n return getStructEncoder([\n ['padding', getU8Encoder()],\n ['cluster', getU32Encoder()],\n ['keygenOffset', getU64Encoder()],\n ['keyRecoveryInitOffset', getU64Encoder()],\n ['mxeProgramId', getAddressEncoder()],\n ['authority', getOptionEncoder(getAddressEncoder())],\n [\n 'utilityPubkeys',\n getDiscriminatedUnionEncoder([\n [\n 'Set',\n getStructEncoder([\n ['fields', getTupleEncoder([getUtilityPubkeysEncoder()])],\n ]),\n ],\n [\n 'Unset',\n getStructEncoder([\n [\n 'fields',\n getTupleEncoder([\n getUtilityPubkeysEncoder(),\n getArrayEncoder(getBooleanEncoder()),\n ]),\n ],\n ]),\n ],\n ]),\n ],\n ['lutOffsetSlot', getU64Encoder()],\n ['computationDefinitions', getArrayEncoder(getU32Encoder())],\n ['status', getMxeStatusEncoder()],\n ['bump', getU8Encoder()],\n ]);\n}\n\nexport function getMXEAccountDecoder(): Decoder<MXEAccount> {\n return getStructDecoder([\n ['padding', getU8Decoder()],\n ['cluster', getU32Decoder()],\n ['keygenOffset', getU64Decoder()],\n ['keyRecoveryInitOffset', getU64Decoder()],\n ['mxeProgramId', getAddressDecoder()],\n ['authority', getOptionDecoder(getAddressDecoder())],\n [\n 'utilityPubkeys',\n getDiscriminatedUnionDecoder([\n [\n 'Set',\n getStructDecoder([\n ['fields', getTupleDecoder([getUtilityPubkeysDecoder()])],\n ]),\n ],\n [\n 'Unset',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([\n getUtilityPubkeysDecoder(),\n getArrayDecoder(getBooleanDecoder()),\n ]),\n ],\n ]),\n ],\n ]),\n ],\n ['lutOffsetSlot', getU64Decoder()],\n ['computationDefinitions', getArrayDecoder(getU32Decoder())],\n ['status', getMxeStatusDecoder()],\n ['bump', getU8Decoder()],\n ]);\n}\n\nexport function getMXEAccountCodec(): Codec<MXEAccountArgs, MXEAccount> {\n return combineCodec(getMXEAccountEncoder(), getMXEAccountDecoder());\n}\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 {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\n/** The status of an MXE. */\nexport enum MxeStatus {\n Active,\n Migration,\n}\n\nexport type MxeStatusArgs = MxeStatus;\n\nexport function getMxeStatusEncoder(): FixedSizeEncoder<MxeStatusArgs> {\n return getEnumEncoder(MxeStatus);\n}\n\nexport function getMxeStatusDecoder(): FixedSizeDecoder<MxeStatus> {\n return getEnumDecoder(MxeStatus);\n}\n\nexport function getMxeStatusCodec(): FixedSizeCodec<MxeStatusArgs, MxeStatus> {\n return combineCodec(getMxeStatusEncoder(), getMxeStatusDecoder());\n}\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 {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\n/** location as [ISO 3166-1 alpha-2](https://www.iso.org/iso-3166-country-codes.html) country code */\nexport type NodeMetadata = {\n ip: Array<number>;\n peerId: Array<number>;\n location: number;\n};\n\nexport type NodeMetadataArgs = NodeMetadata;\n\nexport function getNodeMetadataEncoder(): FixedSizeEncoder<NodeMetadataArgs> {\n return getStructEncoder([\n ['ip', getArrayEncoder(getU8Encoder(), { size: 4 })],\n ['peerId', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['location', getU8Encoder()],\n ]);\n}\n\nexport function getNodeMetadataDecoder(): FixedSizeDecoder<NodeMetadata> {\n return getStructDecoder([\n ['ip', getArrayDecoder(getU8Decoder(), { size: 4 })],\n ['peerId', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['location', getU8Decoder()],\n ]);\n}\n\nexport function getNodeMetadataCodec(): FixedSizeCodec<\n NodeMetadataArgs,\n NodeMetadata\n> {\n return combineCodec(getNodeMetadataEncoder(), getNodeMetadataDecoder());\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\n/**\n * A reference to a node in the cluster.\n * The offset is to derive the Node Account.\n * The current_total_rewards is the total rewards the node has received so far in the current\n * epoch.\n */\nexport type NodeRef = {\n offset: number;\n currentTotalRewards: bigint;\n vote: number;\n};\n\nexport type NodeRefArgs = {\n offset: number;\n currentTotalRewards: number | bigint;\n vote: number;\n};\n\nexport function getNodeRefEncoder(): FixedSizeEncoder<NodeRefArgs> {\n return getStructEncoder([\n ['offset', getU32Encoder()],\n ['currentTotalRewards', getU64Encoder()],\n ['vote', getU8Encoder()],\n ]);\n}\n\nexport function getNodeRefDecoder(): FixedSizeDecoder<NodeRef> {\n return getStructDecoder([\n ['offset', getU32Decoder()],\n ['currentTotalRewards', getU64Decoder()],\n ['vote', getU8Decoder()],\n ]);\n}\n\nexport function getNodeRefCodec(): FixedSizeCodec<NodeRefArgs, NodeRef> {\n return combineCodec(getNodeRefEncoder(), getNodeRefDecoder());\n}\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 {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU8Decoder,\n getU8Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport type OffChainCircuitSource = { source: string; hash: Array<number> };\n\nexport type OffChainCircuitSourceArgs = OffChainCircuitSource;\n\nexport function getOffChainCircuitSourceEncoder(): Encoder<OffChainCircuitSourceArgs> {\n return getStructEncoder([\n ['source', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n ['hash', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ]);\n}\n\nexport function getOffChainCircuitSourceDecoder(): Decoder<OffChainCircuitSource> {\n return getStructDecoder([\n ['source', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ['hash', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ]);\n}\n\nexport function getOffChainCircuitSourceCodec(): Codec<\n OffChainCircuitSourceArgs,\n OffChainCircuitSource\n> {\n return combineCodec(\n getOffChainCircuitSourceEncoder(),\n getOffChainCircuitSourceDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type OnChainCircuitSource = {\n isCompleted: boolean;\n uploadAuth: Address;\n};\n\nexport type OnChainCircuitSourceArgs = OnChainCircuitSource;\n\nexport function getOnChainCircuitSourceEncoder(): FixedSizeEncoder<OnChainCircuitSourceArgs> {\n return getStructEncoder([\n ['isCompleted', getBooleanEncoder()],\n ['uploadAuth', getAddressEncoder()],\n ]);\n}\n\nexport function getOnChainCircuitSourceDecoder(): FixedSizeDecoder<OnChainCircuitSource> {\n return getStructDecoder([\n ['isCompleted', getBooleanDecoder()],\n ['uploadAuth', getAddressDecoder()],\n ]);\n}\n\nexport function getOnChainCircuitSourceCodec(): FixedSizeCodec<\n OnChainCircuitSourceArgs,\n OnChainCircuitSource\n> {\n return combineCodec(\n getOnChainCircuitSourceEncoder(),\n getOnChainCircuitSourceDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type OptionClosedEvent = {\n option: Address;\n optionId: bigint;\n signer: Address;\n creator: Address;\n market: Address;\n timestamp: bigint;\n};\n\nexport type OptionClosedEventArgs = {\n option: Address;\n optionId: number | bigint;\n signer: Address;\n creator: Address;\n market: Address;\n timestamp: number | bigint;\n};\n\nexport function getOptionClosedEventEncoder(): FixedSizeEncoder<OptionClosedEventArgs> {\n return getStructEncoder([\n ['option', getAddressEncoder()],\n ['optionId', getU64Encoder()],\n ['signer', getAddressEncoder()],\n ['creator', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getOptionClosedEventDecoder(): FixedSizeDecoder<OptionClosedEvent> {\n return getStructDecoder([\n ['option', getAddressDecoder()],\n ['optionId', getU64Decoder()],\n ['signer', getAddressDecoder()],\n ['creator', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getOptionClosedEventCodec(): FixedSizeCodec<\n OptionClosedEventArgs,\n OptionClosedEvent\n> {\n return combineCodec(\n getOptionClosedEventEncoder(),\n getOptionClosedEventDecoder()\n );\n}\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 {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\n/**\n * An output of a computation.\n * We currently don't support encrypted outputs yet since encrypted values are passed via\n * data objects.\n */\nexport enum Output {\n PlaintextBool,\n PlaintextU8,\n PlaintextU16,\n PlaintextU32,\n PlaintextU64,\n PlaintextU128,\n Ciphertext,\n ArcisX25519Pubkey,\n PlaintextFloat,\n PlaintextPoint,\n PlaintextI8,\n PlaintextI16,\n PlaintextI32,\n PlaintextI64,\n PlaintextI128,\n}\n\nexport type OutputArgs = Output;\n\nexport function getOutputEncoder(): FixedSizeEncoder<OutputArgs> {\n return getEnumEncoder(Output);\n}\n\nexport function getOutputDecoder(): FixedSizeDecoder<Output> {\n return getEnumDecoder(Output);\n}\n\nexport function getOutputCodec(): FixedSizeCodec<OutputArgs, Output> {\n return combineCodec(getOutputEncoder(), getOutputDecoder());\n}\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 {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\n/**\n * A parameter of a computation.\n * We differentiate between plaintext and encrypted parameters and data objects.\n * Plaintext parameters are directly provided as their value.\n * Encrypted parameters are provided as an offchain reference to the data.\n * Data objects are provided as a reference to the data object account.\n */\nexport enum Parameter {\n PlaintextBool,\n PlaintextU8,\n PlaintextU16,\n PlaintextU32,\n PlaintextU64,\n PlaintextU128,\n Ciphertext,\n ArcisX25519Pubkey,\n ArcisSignature,\n PlaintextFloat,\n PlaintextI8,\n PlaintextI16,\n PlaintextI32,\n PlaintextI64,\n PlaintextI128,\n PlaintextPoint,\n}\n\nexport type ParameterArgs = Parameter;\n\nexport function getParameterEncoder(): FixedSizeEncoder<ParameterArgs> {\n return getEnumEncoder(Parameter);\n}\n\nexport function getParameterDecoder(): FixedSizeDecoder<Parameter> {\n return getEnumDecoder(Parameter);\n}\n\nexport function getParameterCodec(): FixedSizeCodec<ParameterArgs, Parameter> {\n return combineCodec(getParameterEncoder(), getParameterDecoder());\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RevealPeriodEndedEvent = {\n market: Address;\n signer: Address;\n timestamp: bigint;\n};\n\nexport type RevealPeriodEndedEventArgs = {\n market: Address;\n signer: Address;\n timestamp: number | bigint;\n};\n\nexport function getRevealPeriodEndedEventEncoder(): FixedSizeEncoder<RevealPeriodEndedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['signer', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRevealPeriodEndedEventDecoder(): FixedSizeDecoder<RevealPeriodEndedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['signer', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRevealPeriodEndedEventCodec(): FixedSizeCodec<\n RevealPeriodEndedEventArgs,\n RevealPeriodEndedEvent\n> {\n return combineCodec(\n getRevealPeriodEndedEventEncoder(),\n getRevealPeriodEndedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RevealStakeFinalizedEvent = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n optionId: bigint;\n userStake: bigint;\n userScore: bigint;\n totalScore: bigint;\n totalStake: bigint;\n timestamp: bigint;\n};\n\nexport type RevealStakeFinalizedEventArgs = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n optionId: number | bigint;\n userStake: number | bigint;\n userScore: number | bigint;\n totalScore: number | bigint;\n totalStake: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getRevealStakeFinalizedEventEncoder(): FixedSizeEncoder<RevealStakeFinalizedEventArgs> {\n return getStructEncoder([\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['optionId', getU64Encoder()],\n ['userStake', getU64Encoder()],\n ['userScore', getU64Encoder()],\n ['totalScore', getU128Encoder()],\n ['totalStake', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRevealStakeFinalizedEventDecoder(): FixedSizeDecoder<RevealStakeFinalizedEvent> {\n return getStructDecoder([\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['stakeAccountId', getU32Decoder()],\n ['optionId', getU64Decoder()],\n ['userStake', getU64Decoder()],\n ['userScore', getU64Decoder()],\n ['totalScore', getU128Decoder()],\n ['totalStake', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRevealStakeFinalizedEventCodec(): FixedSizeCodec<\n RevealStakeFinalizedEventArgs,\n RevealStakeFinalizedEvent\n> {\n return combineCodec(\n getRevealStakeFinalizedEventEncoder(),\n getRevealStakeFinalizedEventDecoder()\n );\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\n/**\n * The output of the callback instruction. Provided as a struct with ordered fields\n * as anchor does not support tuples and tuple structs yet.\n */\nexport type RevealStakeOutput = { field0: bigint };\n\nexport type RevealStakeOutputArgs = { field0: number | bigint };\n\nexport function getRevealStakeOutputEncoder(): FixedSizeEncoder<RevealStakeOutputArgs> {\n return getStructEncoder([['field0', getU64Encoder()]]);\n}\n\nexport function getRevealStakeOutputDecoder(): FixedSizeDecoder<RevealStakeOutput> {\n return getStructDecoder([['field0', getU64Decoder()]]);\n}\n\nexport function getRevealStakeOutputCodec(): FixedSizeCodec<\n RevealStakeOutputArgs,\n RevealStakeOutput\n> {\n return combineCodec(\n getRevealStakeOutputEncoder(),\n getRevealStakeOutputDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RewardAddedEvent = {\n market: Address;\n sponsor: Address;\n amount: bigint;\n totalRewardAmount: bigint;\n locked: boolean;\n timestamp: bigint;\n};\n\nexport type RewardAddedEventArgs = {\n market: Address;\n sponsor: Address;\n amount: number | bigint;\n totalRewardAmount: number | bigint;\n locked: boolean;\n timestamp: number | bigint;\n};\n\nexport function getRewardAddedEventEncoder(): FixedSizeEncoder<RewardAddedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['sponsor', getAddressEncoder()],\n ['amount', getU64Encoder()],\n ['totalRewardAmount', getU64Encoder()],\n ['locked', getBooleanEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRewardAddedEventDecoder(): FixedSizeDecoder<RewardAddedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['sponsor', getAddressDecoder()],\n ['amount', getU64Decoder()],\n ['totalRewardAmount', getU64Decoder()],\n ['locked', getBooleanDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRewardAddedEventCodec(): FixedSizeCodec<\n RewardAddedEventArgs,\n RewardAddedEvent\n> {\n return combineCodec(\n getRewardAddedEventEncoder(),\n getRewardAddedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RewardWithdrawnEvent = {\n market: Address;\n sponsor: Address;\n rewardAmount: bigint;\n refundTokenAccount: Address;\n timestamp: bigint;\n};\n\nexport type RewardWithdrawnEventArgs = {\n market: Address;\n sponsor: Address;\n rewardAmount: number | bigint;\n refundTokenAccount: Address;\n timestamp: number | bigint;\n};\n\nexport function getRewardWithdrawnEventEncoder(): FixedSizeEncoder<RewardWithdrawnEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['sponsor', getAddressEncoder()],\n ['rewardAmount', getU64Encoder()],\n ['refundTokenAccount', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRewardWithdrawnEventDecoder(): FixedSizeDecoder<RewardWithdrawnEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['sponsor', getAddressDecoder()],\n ['rewardAmount', getU64Decoder()],\n ['refundTokenAccount', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRewardWithdrawnEventCodec(): FixedSizeCodec<\n RewardWithdrawnEventArgs,\n RewardWithdrawnEvent\n> {\n return combineCodec(\n getRewardWithdrawnEventEncoder(),\n getRewardWithdrawnEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StakeAccountClosedEvent = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n optionId: bigint;\n rewardAmount: bigint;\n stakedAtTimestamp: bigint;\n stakeEndTimestamp: bigint;\n stakeAmount: bigint;\n score: bigint;\n timestamp: bigint;\n};\n\nexport type StakeAccountClosedEventArgs = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n optionId: number | bigint;\n rewardAmount: number | bigint;\n stakedAtTimestamp: number | bigint;\n stakeEndTimestamp: number | bigint;\n stakeAmount: number | bigint;\n score: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getStakeAccountClosedEventEncoder(): FixedSizeEncoder<StakeAccountClosedEventArgs> {\n return getStructEncoder([\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['optionId', getU64Encoder()],\n ['rewardAmount', getU64Encoder()],\n ['stakedAtTimestamp', getU64Encoder()],\n ['stakeEndTimestamp', getU64Encoder()],\n ['stakeAmount', getU64Encoder()],\n ['score', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakeAccountClosedEventDecoder(): FixedSizeDecoder<StakeAccountClosedEvent> {\n return getStructDecoder([\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['stakeAccountId', getU32Decoder()],\n ['optionId', getU64Decoder()],\n ['rewardAmount', getU64Decoder()],\n ['stakedAtTimestamp', getU64Decoder()],\n ['stakeEndTimestamp', getU64Decoder()],\n ['stakeAmount', getU64Decoder()],\n ['score', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakeAccountClosedEventCodec(): FixedSizeCodec<\n StakeAccountClosedEventArgs,\n StakeAccountClosedEvent\n> {\n return combineCodec(\n getStakeAccountClosedEventEncoder(),\n getStakeAccountClosedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StakeAccountInitializedEvent = {\n stakeAccount: Address;\n owner: Address;\n market: Address;\n accountId: number;\n timestamp: bigint;\n};\n\nexport type StakeAccountInitializedEventArgs = {\n stakeAccount: Address;\n owner: Address;\n market: Address;\n accountId: number;\n timestamp: number | bigint;\n};\n\nexport function getStakeAccountInitializedEventEncoder(): FixedSizeEncoder<StakeAccountInitializedEventArgs> {\n return getStructEncoder([\n ['stakeAccount', getAddressEncoder()],\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['accountId', getU32Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakeAccountInitializedEventDecoder(): FixedSizeDecoder<StakeAccountInitializedEvent> {\n return getStructDecoder([\n ['stakeAccount', getAddressDecoder()],\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['accountId', getU32Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakeAccountInitializedEventCodec(): FixedSizeCodec<\n StakeAccountInitializedEventArgs,\n StakeAccountInitializedEvent\n> {\n return combineCodec(\n getStakeAccountInitializedEventEncoder(),\n getStakeAccountInitializedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StakedEvent = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n stakeEncryptedOption: Array<number>;\n stakeStateNonce: bigint;\n stakeEncryptedOptionDisclosure: Array<number>;\n stakeStateDisclosureNonce: bigint;\n amount: bigint;\n timestamp: bigint;\n};\n\nexport type StakedEventArgs = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n stakeEncryptedOption: Array<number>;\n stakeStateNonce: number | bigint;\n stakeEncryptedOptionDisclosure: Array<number>;\n stakeStateDisclosureNonce: number | bigint;\n amount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getStakedEventEncoder(): FixedSizeEncoder<StakedEventArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['stakeEncryptedOption', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['stakeStateNonce', getU128Encoder()],\n [\n 'stakeEncryptedOptionDisclosure',\n getArrayEncoder(getU8Encoder(), { size: 32 }),\n ],\n ['stakeStateDisclosureNonce', getU128Encoder()],\n ['amount', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakedEventDecoder(): FixedSizeDecoder<StakedEvent> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['stakeAccountId', getU32Decoder()],\n ['stakeEncryptedOption', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['stakeStateNonce', getU128Decoder()],\n [\n 'stakeEncryptedOptionDisclosure',\n getArrayDecoder(getU8Decoder(), { size: 32 }),\n ],\n ['stakeStateDisclosureNonce', getU128Decoder()],\n ['amount', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakedEventCodec(): FixedSizeCodec<\n StakedEventArgs,\n StakedEvent\n> {\n return combineCodec(getStakedEventEncoder(), getStakedEventDecoder());\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\nimport {\n getStakeOutputStruct0Decoder,\n getStakeOutputStruct0Encoder,\n type StakeOutputStruct0,\n type StakeOutputStruct0Args,\n} from '.';\n\n/**\n * The output of the callback instruction. Provided as a struct with ordered fields\n * as anchor does not support tuples and tuple structs yet.\n */\nexport type StakeOutput = { field0: StakeOutputStruct0 };\n\nexport type StakeOutputArgs = { field0: StakeOutputStruct0Args };\n\nexport function getStakeOutputEncoder(): FixedSizeEncoder<StakeOutputArgs> {\n return getStructEncoder([['field0', getStakeOutputStruct0Encoder()]]);\n}\n\nexport function getStakeOutputDecoder(): FixedSizeDecoder<StakeOutput> {\n return getStructDecoder([['field0', getStakeOutputStruct0Decoder()]]);\n}\n\nexport function getStakeOutputCodec(): FixedSizeCodec<\n StakeOutputArgs,\n StakeOutput\n> {\n return combineCodec(getStakeOutputEncoder(), getStakeOutputDecoder());\n}\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 {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StakeOutputStruct0 = {\n field0: {\n encryptionKey: Array<number>;\n nonce: bigint;\n ciphertexts: Array<Array<number>>;\n };\n field1: {\n encryptionKey: Array<number>;\n nonce: bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport type StakeOutputStruct0Args = {\n field0: {\n encryptionKey: Array<number>;\n nonce: number | bigint;\n ciphertexts: Array<Array<number>>;\n };\n field1: {\n encryptionKey: Array<number>;\n nonce: number | bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport function getStakeOutputStruct0Encoder(): FixedSizeEncoder<StakeOutputStruct0Args> {\n return getStructEncoder([\n [\n 'field0',\n getStructEncoder([\n ['encryptionKey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['nonce', getU128Encoder()],\n [\n 'ciphertexts',\n getArrayEncoder(getArrayEncoder(getU8Encoder(), { size: 32 }), {\n size: 1,\n }),\n ],\n ]),\n ],\n [\n 'field1',\n getStructEncoder([\n ['encryptionKey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['nonce', getU128Encoder()],\n [\n 'ciphertexts',\n getArrayEncoder(getArrayEncoder(getU8Encoder(), { size: 32 }), {\n size: 1,\n }),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getStakeOutputStruct0Decoder(): FixedSizeDecoder<StakeOutputStruct0> {\n return getStructDecoder([\n [\n 'field0',\n getStructDecoder([\n ['encryptionKey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['nonce', getU128Decoder()],\n [\n 'ciphertexts',\n getArrayDecoder(getArrayDecoder(getU8Decoder(), { size: 32 }), {\n size: 1,\n }),\n ],\n ]),\n ],\n [\n 'field1',\n getStructDecoder([\n ['encryptionKey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['nonce', getU128Decoder()],\n [\n 'ciphertexts',\n getArrayDecoder(getArrayDecoder(getU8Decoder(), { size: 32 }), {\n size: 1,\n }),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getStakeOutputStruct0Codec(): FixedSizeCodec<\n StakeOutputStruct0Args,\n StakeOutputStruct0\n> {\n return combineCodec(\n getStakeOutputStruct0Encoder(),\n getStakeOutputStruct0Decoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StakeRevealedEvent = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n stakeAmount: bigint;\n selectedOption: bigint;\n timestamp: bigint;\n};\n\nexport type StakeRevealedEventArgs = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n stakeAmount: number | bigint;\n selectedOption: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getStakeRevealedEventEncoder(): FixedSizeEncoder<StakeRevealedEventArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['stakeAmount', getU64Encoder()],\n ['selectedOption', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakeRevealedEventDecoder(): FixedSizeDecoder<StakeRevealedEvent> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['stakeAccountId', getU32Decoder()],\n ['stakeAmount', getU64Decoder()],\n ['selectedOption', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakeRevealedEventCodec(): FixedSizeCodec<\n StakeRevealedEventArgs,\n StakeRevealedEvent\n> {\n return combineCodec(\n getStakeRevealedEventEncoder(),\n getStakeRevealedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StakingPausedEvent = { market: Address; timestamp: bigint };\n\nexport type StakingPausedEventArgs = {\n market: Address;\n timestamp: number | bigint;\n};\n\nexport function getStakingPausedEventEncoder(): FixedSizeEncoder<StakingPausedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakingPausedEventDecoder(): FixedSizeDecoder<StakingPausedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakingPausedEventCodec(): FixedSizeCodec<\n StakingPausedEventArgs,\n StakingPausedEvent\n> {\n return combineCodec(\n getStakingPausedEventEncoder(),\n getStakingPausedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StakingResumedEvent = { market: Address; timestamp: bigint };\n\nexport type StakingResumedEventArgs = {\n market: Address;\n timestamp: number | bigint;\n};\n\nexport function getStakingResumedEventEncoder(): FixedSizeEncoder<StakingResumedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakingResumedEventDecoder(): FixedSizeDecoder<StakingResumedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakingResumedEventCodec(): FixedSizeCodec<\n StakingResumedEventArgs,\n StakingResumedEvent\n> {\n return combineCodec(\n getStakingResumedEventEncoder(),\n getStakingResumedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StuckStakeClosedEvent = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n refundedAmount: bigint;\n refundedPlatformFee: bigint;\n refundedRewardPoolFee: bigint;\n refundedCreatorFee: bigint;\n timestamp: bigint;\n};\n\nexport type StuckStakeClosedEventArgs = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n refundedAmount: number | bigint;\n refundedPlatformFee: number | bigint;\n refundedRewardPoolFee: number | bigint;\n refundedCreatorFee: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getStuckStakeClosedEventEncoder(): FixedSizeEncoder<StuckStakeClosedEventArgs> {\n return getStructEncoder([\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['refundedAmount', getU64Encoder()],\n ['refundedPlatformFee', getU64Encoder()],\n ['refundedRewardPoolFee', getU64Encoder()],\n ['refundedCreatorFee', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStuckStakeClosedEventDecoder(): FixedSizeDecoder<StuckStakeClosedEvent> {\n return getStructDecoder([\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['stakeAccountId', getU32Decoder()],\n ['refundedAmount', getU64Decoder()],\n ['refundedPlatformFee', getU64Decoder()],\n ['refundedRewardPoolFee', getU64Decoder()],\n ['refundedCreatorFee', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStuckStakeClosedEventCodec(): FixedSizeCodec<\n StuckStakeClosedEventArgs,\n StuckStakeClosedEvent\n> {\n return combineCodec(\n getStuckStakeClosedEventEncoder(),\n getStuckStakeClosedEventDecoder()\n );\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type Timestamp = { timestamp: bigint };\n\nexport type TimestampArgs = { timestamp: number | bigint };\n\nexport function getTimestampEncoder(): FixedSizeEncoder<TimestampArgs> {\n return getStructEncoder([['timestamp', getU64Encoder()]]);\n}\n\nexport function getTimestampDecoder(): FixedSizeDecoder<Timestamp> {\n return getStructDecoder([['timestamp', getU64Decoder()]]);\n}\n\nexport function getTimestampCodec(): FixedSizeCodec<TimestampArgs, Timestamp> {\n return combineCodec(getTimestampEncoder(), getTimestampDecoder());\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type UnstakedEvent = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n amount: bigint;\n timestamp: bigint;\n};\n\nexport type UnstakedEventArgs = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n amount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getUnstakedEventEncoder(): FixedSizeEncoder<UnstakedEventArgs> {\n return getStructEncoder([\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['amount', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getUnstakedEventDecoder(): FixedSizeDecoder<UnstakedEvent> {\n return getStructDecoder([\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['stakeAccountId', getU32Decoder()],\n ['amount', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getUnstakedEventCodec(): FixedSizeCodec<\n UnstakedEventArgs,\n UnstakedEvent\n> {\n return combineCodec(getUnstakedEventEncoder(), getUnstakedEventDecoder());\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type UpdateAuthorityChangedEvent = {\n platformConfig: Address;\n oldValue: Address;\n newValue: Address;\n timestamp: bigint;\n};\n\nexport type UpdateAuthorityChangedEventArgs = {\n platformConfig: Address;\n oldValue: Address;\n newValue: Address;\n timestamp: number | bigint;\n};\n\nexport function getUpdateAuthorityChangedEventEncoder(): FixedSizeEncoder<UpdateAuthorityChangedEventArgs> {\n return getStructEncoder([\n ['platformConfig', getAddressEncoder()],\n ['oldValue', getAddressEncoder()],\n ['newValue', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getUpdateAuthorityChangedEventDecoder(): FixedSizeDecoder<UpdateAuthorityChangedEvent> {\n return getStructDecoder([\n ['platformConfig', getAddressDecoder()],\n ['oldValue', getAddressDecoder()],\n ['newValue', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getUpdateAuthorityChangedEventCodec(): FixedSizeCodec<\n UpdateAuthorityChangedEventArgs,\n UpdateAuthorityChangedEvent\n> {\n return combineCodec(\n getUpdateAuthorityChangedEventEncoder(),\n getUpdateAuthorityChangedEventDecoder()\n );\n}\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 {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type UtilityPubkeys = {\n x25519Pubkey: Array<number>;\n ed25519VerifyingKey: Array<number>;\n elgamalPubkey: Array<number>;\n pubkeyValidityProof: Array<number>;\n};\n\nexport type UtilityPubkeysArgs = UtilityPubkeys;\n\nexport function getUtilityPubkeysEncoder(): FixedSizeEncoder<UtilityPubkeysArgs> {\n return getStructEncoder([\n ['x25519Pubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['ed25519VerifyingKey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['elgamalPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['pubkeyValidityProof', getArrayEncoder(getU8Encoder(), { size: 64 })],\n ]);\n}\n\nexport function getUtilityPubkeysDecoder(): FixedSizeDecoder<UtilityPubkeys> {\n return getStructDecoder([\n ['x25519Pubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['ed25519VerifyingKey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['elgamalPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['pubkeyValidityProof', getArrayDecoder(getU8Decoder(), { size: 64 })],\n ]);\n}\n\nexport function getUtilityPubkeysCodec(): FixedSizeCodec<\n UtilityPubkeysArgs,\n UtilityPubkeys\n> {\n return combineCodec(getUtilityPubkeysEncoder(), getUtilityPubkeysDecoder());\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type WinningOptionSetEvent = {\n market: Address;\n marketAuthority: Address;\n option: Address;\n optionId: bigint;\n rewardBp: number;\n winningOptionAllocation: number;\n timestamp: bigint;\n};\n\nexport type WinningOptionSetEventArgs = {\n market: Address;\n marketAuthority: Address;\n option: Address;\n optionId: number | bigint;\n rewardBp: number;\n winningOptionAllocation: number;\n timestamp: number | bigint;\n};\n\nexport function getWinningOptionSetEventEncoder(): FixedSizeEncoder<WinningOptionSetEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['marketAuthority', getAddressEncoder()],\n ['option', getAddressEncoder()],\n ['optionId', getU64Encoder()],\n ['rewardBp', getU16Encoder()],\n ['winningOptionAllocation', getU16Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getWinningOptionSetEventDecoder(): FixedSizeDecoder<WinningOptionSetEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['marketAuthority', getAddressDecoder()],\n ['option', getAddressDecoder()],\n ['optionId', getU64Decoder()],\n ['rewardBp', getU16Decoder()],\n ['winningOptionAllocation', getU16Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getWinningOptionSetEventCodec(): FixedSizeCodec<\n WinningOptionSetEventArgs,\n WinningOptionSetEvent\n> {\n return combineCodec(\n getWinningOptionSetEventEncoder(),\n getWinningOptionSetEventDecoder()\n );\n}\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 {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type Option,\n type OptionOrNullable,\n type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const OPPORTUNITY_MARKET_OPTION_DISCRIMINATOR = new Uint8Array([\n 220, 236, 171, 213, 170, 117, 10, 64,\n]);\n\nexport function getOpportunityMarketOptionDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n OPPORTUNITY_MARKET_OPTION_DISCRIMINATOR\n );\n}\n\nexport type OpportunityMarketOption = {\n discriminator: ReadonlyUint8Array;\n bump: number;\n id: bigint;\n creator: Address;\n createdAt: bigint;\n totalStaked: bigint;\n totalScore: bigint;\n rewardBp: Option<number>;\n};\n\nexport type OpportunityMarketOptionArgs = {\n bump: number;\n id: number | bigint;\n creator: Address;\n createdAt: number | bigint;\n totalStaked: number | bigint;\n totalScore: number | bigint;\n rewardBp: OptionOrNullable<number>;\n};\n\nexport function getOpportunityMarketOptionEncoder(): Encoder<OpportunityMarketOptionArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['id', getU64Encoder()],\n ['creator', getAddressEncoder()],\n ['createdAt', getU64Encoder()],\n ['totalStaked', getU64Encoder()],\n ['totalScore', getU128Encoder()],\n ['rewardBp', getOptionEncoder(getU16Encoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: OPPORTUNITY_MARKET_OPTION_DISCRIMINATOR,\n })\n );\n}\n\nexport function getOpportunityMarketOptionDecoder(): Decoder<OpportunityMarketOption> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ['id', getU64Decoder()],\n ['creator', getAddressDecoder()],\n ['createdAt', getU64Decoder()],\n ['totalStaked', getU64Decoder()],\n ['totalScore', getU128Decoder()],\n ['rewardBp', getOptionDecoder(getU16Decoder())],\n ]);\n}\n\nexport function getOpportunityMarketOptionCodec(): Codec<\n OpportunityMarketOptionArgs,\n OpportunityMarketOption\n> {\n return combineCodec(\n getOpportunityMarketOptionEncoder(),\n getOpportunityMarketOptionDecoder()\n );\n}\n\nexport function decodeOpportunityMarketOption<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<OpportunityMarketOption, TAddress>;\nexport function decodeOpportunityMarketOption<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<OpportunityMarketOption, TAddress>;\nexport function decodeOpportunityMarketOption<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n | Account<OpportunityMarketOption, TAddress>\n | MaybeAccount<OpportunityMarketOption, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getOpportunityMarketOptionDecoder()\n );\n}\n\nexport async function fetchOpportunityMarketOption<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<OpportunityMarketOption, TAddress>> {\n const maybeAccount = await fetchMaybeOpportunityMarketOption(\n rpc,\n address,\n config\n );\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeOpportunityMarketOption<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<OpportunityMarketOption, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeOpportunityMarketOption(maybeAccount);\n}\n\nexport async function fetchAllOpportunityMarketOption(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<OpportunityMarketOption>[]> {\n const maybeAccounts = await fetchAllMaybeOpportunityMarketOption(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeOpportunityMarketOption(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<OpportunityMarketOption>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeOpportunityMarketOption(maybeAccount)\n );\n}\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 {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type EncodedAccount,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const OPPORTUNITY_MARKET_SPONSOR_DISCRIMINATOR = new Uint8Array([\n 207, 139, 192, 91, 37, 190, 2, 192,\n]);\n\nexport function getOpportunityMarketSponsorDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n OPPORTUNITY_MARKET_SPONSOR_DISCRIMINATOR\n );\n}\n\nexport type OpportunityMarketSponsor = {\n discriminator: ReadonlyUint8Array;\n bump: number;\n sponsor: Address;\n market: Address;\n rewardDeposited: bigint;\n rewardLocked: boolean;\n};\n\nexport type OpportunityMarketSponsorArgs = {\n bump: number;\n sponsor: Address;\n market: Address;\n rewardDeposited: number | bigint;\n rewardLocked: boolean;\n};\n\nexport function getOpportunityMarketSponsorEncoder(): FixedSizeEncoder<OpportunityMarketSponsorArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['sponsor', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['rewardDeposited', getU64Encoder()],\n ['rewardLocked', getBooleanEncoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: OPPORTUNITY_MARKET_SPONSOR_DISCRIMINATOR,\n })\n );\n}\n\nexport function getOpportunityMarketSponsorDecoder(): FixedSizeDecoder<OpportunityMarketSponsor> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ['sponsor', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['rewardDeposited', getU64Decoder()],\n ['rewardLocked', getBooleanDecoder()],\n ]);\n}\n\nexport function getOpportunityMarketSponsorCodec(): FixedSizeCodec<\n OpportunityMarketSponsorArgs,\n OpportunityMarketSponsor\n> {\n return combineCodec(\n getOpportunityMarketSponsorEncoder(),\n getOpportunityMarketSponsorDecoder()\n );\n}\n\nexport function decodeOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<OpportunityMarketSponsor, TAddress>;\nexport function decodeOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<OpportunityMarketSponsor, TAddress>;\nexport function decodeOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n | Account<OpportunityMarketSponsor, TAddress>\n | MaybeAccount<OpportunityMarketSponsor, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getOpportunityMarketSponsorDecoder()\n );\n}\n\nexport async function fetchOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<OpportunityMarketSponsor, TAddress>> {\n const maybeAccount = await fetchMaybeOpportunityMarketSponsor(\n rpc,\n address,\n config\n );\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<OpportunityMarketSponsor, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeOpportunityMarketSponsor(maybeAccount);\n}\n\nexport async function fetchAllOpportunityMarketSponsor(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<OpportunityMarketSponsor>[]> {\n const maybeAccounts = await fetchAllMaybeOpportunityMarketSponsor(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeOpportunityMarketSponsor(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<OpportunityMarketSponsor>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeOpportunityMarketSponsor(maybeAccount)\n );\n}\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 {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n getFeeRatesDecoder,\n getFeeRatesEncoder,\n type FeeRates,\n type FeeRatesArgs,\n} from '../types';\n\nexport const PLATFORM_CONFIG_DISCRIMINATOR = new Uint8Array([\n 160, 78, 128, 0, 248, 83, 230, 160,\n]);\n\nexport function getPlatformConfigDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n PLATFORM_CONFIG_DISCRIMINATOR\n );\n}\n\nexport type PlatformConfig = {\n discriminator: ReadonlyUint8Array;\n bump: number;\n name: string;\n updateAuthority: Address;\n feeClaimAuthority: Address;\n feeRates: FeeRates;\n marketResolutionDeadlineSeconds: bigint;\n minTimeToStakeSeconds: bigint;\n minRevealPeriodSeconds: bigint;\n maxRevealPeriodSeconds: bigint;\n};\n\nexport type PlatformConfigArgs = {\n bump: number;\n name: string;\n updateAuthority: Address;\n feeClaimAuthority: Address;\n feeRates: FeeRatesArgs;\n marketResolutionDeadlineSeconds: number | bigint;\n minTimeToStakeSeconds: number | bigint;\n minRevealPeriodSeconds: number | bigint;\n maxRevealPeriodSeconds: number | bigint;\n};\n\nexport function getPlatformConfigEncoder(): Encoder<PlatformConfigArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n ['updateAuthority', getAddressEncoder()],\n ['feeClaimAuthority', getAddressEncoder()],\n ['feeRates', getFeeRatesEncoder()],\n ['marketResolutionDeadlineSeconds', getU64Encoder()],\n ['minTimeToStakeSeconds', getU64Encoder()],\n ['minRevealPeriodSeconds', getU64Encoder()],\n ['maxRevealPeriodSeconds', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: PLATFORM_CONFIG_DISCRIMINATOR })\n );\n}\n\nexport function getPlatformConfigDecoder(): Decoder<PlatformConfig> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ['updateAuthority', getAddressDecoder()],\n ['feeClaimAuthority', getAddressDecoder()],\n ['feeRates', getFeeRatesDecoder()],\n ['marketResolutionDeadlineSeconds', getU64Decoder()],\n ['minTimeToStakeSeconds', getU64Decoder()],\n ['minRevealPeriodSeconds', getU64Decoder()],\n ['maxRevealPeriodSeconds', getU64Decoder()],\n ]);\n}\n\nexport function getPlatformConfigCodec(): Codec<\n PlatformConfigArgs,\n PlatformConfig\n> {\n return combineCodec(getPlatformConfigEncoder(), getPlatformConfigDecoder());\n}\n\nexport function decodePlatformConfig<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<PlatformConfig, TAddress>;\nexport function decodePlatformConfig<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<PlatformConfig, TAddress>;\nexport function decodePlatformConfig<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<PlatformConfig, TAddress> | MaybeAccount<PlatformConfig, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getPlatformConfigDecoder()\n );\n}\n\nexport async function fetchPlatformConfig<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<PlatformConfig, TAddress>> {\n const maybeAccount = await fetchMaybePlatformConfig(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybePlatformConfig<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<PlatformConfig, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodePlatformConfig(maybeAccount);\n}\n\nexport async function fetchAllPlatformConfig(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<PlatformConfig>[]> {\n const maybeAccounts = await fetchAllMaybePlatformConfig(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybePlatformConfig(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<PlatformConfig>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodePlatformConfig(maybeAccount)\n );\n}\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 {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type Option,\n type OptionOrNullable,\n type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n getCollectedFeesDecoder,\n getCollectedFeesEncoder,\n type CollectedFees,\n type CollectedFeesArgs,\n} from '../types';\n\nexport const STAKE_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 80, 158, 67, 124, 50, 189, 192, 255,\n]);\n\nexport function getStakeAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n STAKE_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type StakeAccount = {\n discriminator: ReadonlyUint8Array;\n encryptedOption: Array<number>;\n stateNonce: bigint;\n bump: number;\n owner: Address;\n market: Address;\n userPubkey: Array<number>;\n encryptedOptionDisclosure: Array<number>;\n stateNonceDisclosure: bigint;\n stakedAtTimestamp: Option<bigint>;\n unstakedAtTimestamp: Option<bigint>;\n amount: bigint;\n collectedFees: CollectedFees;\n revealedOption: Option<bigint>;\n score: Option<bigint>;\n unstaked: boolean;\n id: number;\n pendingStakeComputation: Option<Address>;\n pendingReveal: boolean;\n};\n\nexport type StakeAccountArgs = {\n encryptedOption: Array<number>;\n stateNonce: number | bigint;\n bump: number;\n owner: Address;\n market: Address;\n userPubkey: Array<number>;\n encryptedOptionDisclosure: Array<number>;\n stateNonceDisclosure: number | bigint;\n stakedAtTimestamp: OptionOrNullable<number | bigint>;\n unstakedAtTimestamp: OptionOrNullable<number | bigint>;\n amount: number | bigint;\n collectedFees: CollectedFeesArgs;\n revealedOption: OptionOrNullable<number | bigint>;\n score: OptionOrNullable<number | bigint>;\n unstaked: boolean;\n id: number;\n pendingStakeComputation: OptionOrNullable<Address>;\n pendingReveal: boolean;\n};\n\nexport function getStakeAccountEncoder(): Encoder<StakeAccountArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['encryptedOption', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['stateNonce', getU128Encoder()],\n ['bump', getU8Encoder()],\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['userPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n [\n 'encryptedOptionDisclosure',\n getArrayEncoder(getU8Encoder(), { size: 32 }),\n ],\n ['stateNonceDisclosure', getU128Encoder()],\n ['stakedAtTimestamp', getOptionEncoder(getU64Encoder())],\n ['unstakedAtTimestamp', getOptionEncoder(getU64Encoder())],\n ['amount', getU64Encoder()],\n ['collectedFees', getCollectedFeesEncoder()],\n ['revealedOption', getOptionEncoder(getU64Encoder())],\n ['score', getOptionEncoder(getU64Encoder())],\n ['unstaked', getBooleanEncoder()],\n ['id', getU32Encoder()],\n ['pendingStakeComputation', getOptionEncoder(getAddressEncoder())],\n ['pendingReveal', getBooleanEncoder()],\n ]),\n (value) => ({ ...value, discriminator: STAKE_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getStakeAccountDecoder(): Decoder<StakeAccount> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['encryptedOption', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['stateNonce', getU128Decoder()],\n ['bump', getU8Decoder()],\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['userPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n [\n 'encryptedOptionDisclosure',\n getArrayDecoder(getU8Decoder(), { size: 32 }),\n ],\n ['stateNonceDisclosure', getU128Decoder()],\n ['stakedAtTimestamp', getOptionDecoder(getU64Decoder())],\n ['unstakedAtTimestamp', getOptionDecoder(getU64Decoder())],\n ['amount', getU64Decoder()],\n ['collectedFees', getCollectedFeesDecoder()],\n ['revealedOption', getOptionDecoder(getU64Decoder())],\n ['score', getOptionDecoder(getU64Decoder())],\n ['unstaked', getBooleanDecoder()],\n ['id', getU32Decoder()],\n ['pendingStakeComputation', getOptionDecoder(getAddressDecoder())],\n ['pendingReveal', getBooleanDecoder()],\n ]);\n}\n\nexport function getStakeAccountCodec(): Codec<StakeAccountArgs, StakeAccount> {\n return combineCodec(getStakeAccountEncoder(), getStakeAccountDecoder());\n}\n\nexport function decodeStakeAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<StakeAccount, TAddress>;\nexport function decodeStakeAccount<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<StakeAccount, TAddress>;\nexport function decodeStakeAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<StakeAccount, TAddress> | MaybeAccount<StakeAccount, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getStakeAccountDecoder()\n );\n}\n\nexport async function fetchStakeAccount<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<StakeAccount, TAddress>> {\n const maybeAccount = await fetchMaybeStakeAccount(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeStakeAccount<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<StakeAccount, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeStakeAccount(maybeAccount);\n}\n\nexport async function fetchAllStakeAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<StakeAccount>[]> {\n const maybeAccounts = await fetchAllMaybeStakeAccount(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeStakeAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<StakeAccount>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeStakeAccount(maybeAccount));\n}\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 {\n isProgramError,\n type Address,\n type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n type SolanaError,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\n\n/** AbortedComputation: Computation aborted */\nexport const OPPORTUNITY_MARKET_ERROR__ABORTED_COMPUTATION = 0x1770; // 6000\n/** Unauthorized: Unauthorized */\nexport const OPPORTUNITY_MARKET_ERROR__UNAUTHORIZED = 0x1771; // 6001\n/** InsufficientBalance: Insufficient balance */\nexport const OPPORTUNITY_MARKET_ERROR__INSUFFICIENT_BALANCE = 0x1772; // 6002\n/** InsufficientRewardFunding: Insufficient reward funding */\nexport const OPPORTUNITY_MARKET_ERROR__INSUFFICIENT_REWARD_FUNDING = 0x1773; // 6003\n/** InvalidParameters: Invalid parameters */\nexport const OPPORTUNITY_MARKET_ERROR__INVALID_PARAMETERS = 0x1774; // 6004\n/** MarketAlreadyOpen: Market is already open */\nexport const OPPORTUNITY_MARKET_ERROR__MARKET_ALREADY_OPEN = 0x1775; // 6005\n/** InvalidOptionId: Invalid option ID */\nexport const OPPORTUNITY_MARKET_ERROR__INVALID_OPTION_ID = 0x1776; // 6006\n/** MarketNotOpen: Market is not open */\nexport const OPPORTUNITY_MARKET_ERROR__MARKET_NOT_OPEN = 0x1777; // 6007\n/** TimeWindowMismatch: Operation called outside its permitted time window */\nexport const OPPORTUNITY_MARKET_ERROR__TIME_WINDOW_MISMATCH = 0x1778; // 6008\n/** NoStake: Stake account has no recorded stake */\nexport const OPPORTUNITY_MARKET_ERROR__NO_STAKE = 0x1779; // 6009\n/** WinnerAlreadySelected: Market winner already selected */\nexport const OPPORTUNITY_MARKET_ERROR__WINNER_ALREADY_SELECTED = 0x177a; // 6010\n/** AlreadyRevealed: Stake already revealed */\nexport const OPPORTUNITY_MARKET_ERROR__ALREADY_REVEALED = 0x177b; // 6011\n/** MarketNotResolved: Market not yet resolved */\nexport const OPPORTUNITY_MARKET_ERROR__MARKET_NOT_RESOLVED = 0x177c; // 6012\n/** NotRevealed: Stake not yet revealed */\nexport const OPPORTUNITY_MARKET_ERROR__NOT_REVEALED = 0x177d; // 6013\n/** TallyAlreadyIncremented: Tally already incremented for this stake account */\nexport const OPPORTUNITY_MARKET_ERROR__TALLY_ALREADY_INCREMENTED = 0x177e; // 6014\n/** Overflow: Arithmetic overflow */\nexport const OPPORTUNITY_MARKET_ERROR__OVERFLOW = 0x177f; // 6015\n/** RevealPeriodEnded: Reveal period has already ended */\nexport const OPPORTUNITY_MARKET_ERROR__REVEAL_PERIOD_ENDED = 0x1780; // 6016\n/** InvalidMint: Token mint does not match account mint */\nexport const OPPORTUNITY_MARKET_ERROR__INVALID_MINT = 0x1781; // 6017\n/** AlreadyUnstaked: Already unstaked */\nexport const OPPORTUNITY_MARKET_ERROR__ALREADY_UNSTAKED = 0x1782; // 6018\n/** AlreadyStaked: Already staked for this stake account */\nexport const OPPORTUNITY_MARKET_ERROR__ALREADY_STAKED = 0x1783; // 6019\n/** DepositBelowMinimum: Deposit amount below minimum required for option creation */\nexport const OPPORTUNITY_MARKET_ERROR__DEPOSIT_BELOW_MINIMUM = 0x1784; // 6020\n/** AddOptionStakeFailed: Add option stake failed: insufficient balance or below minimum deposit */\nexport const OPPORTUNITY_MARKET_ERROR__ADD_OPTION_STAKE_FAILED = 0x1785; // 6021\n/** Locked: Account is locked */\nexport const OPPORTUNITY_MARKET_ERROR__LOCKED = 0x1786; // 6022\n/** InvalidAccountState: Invalid account state */\nexport const OPPORTUNITY_MARKET_ERROR__INVALID_ACCOUNT_STATE = 0x1787; // 6023\n/** NoFeesToClaim: No fees to claim */\nexport const OPPORTUNITY_MARKET_ERROR__NO_FEES_TO_CLAIM = 0x1788; // 6024\n/** StakeNotStuck: Stake account is not in a stuck or failed state */\nexport const OPPORTUNITY_MARKET_ERROR__STAKE_NOT_STUCK = 0x1789; // 6025\n/** MarketPaused: Market staking is currently paused */\nexport const OPPORTUNITY_MARKET_ERROR__MARKET_PAUSED = 0x178a; // 6026\n/** MarketNotPaused: Market is not paused */\nexport const OPPORTUNITY_MARKET_ERROR__MARKET_NOT_PAUSED = 0x178b; // 6027\n/** StakeBelowMinimum: Stake amount is below the market minimum */\nexport const OPPORTUNITY_MARKET_ERROR__STAKE_BELOW_MINIMUM = 0x178c; // 6028\n/** SelectOptionsDeadlinePassed: Deadline for selecting winning options has passed */\nexport const OPPORTUNITY_MARKET_ERROR__SELECT_OPTIONS_DEADLINE_PASSED = 0x178d; // 6029\n/** InvalidFeeRates: Invalid fee rates */\nexport const OPPORTUNITY_MARKET_ERROR__INVALID_FEE_RATES = 0x178e; // 6030\n/** OptionStillNeeded: Option still needed */\nexport const OPPORTUNITY_MARKET_ERROR__OPTION_STILL_NEEDED = 0x178f; // 6031\n/** CreatorMismatch: Creator mismatch */\nexport const OPPORTUNITY_MARKET_ERROR__CREATOR_MISMATCH = 0x1790; // 6032\n/** RevealPeriodNotOver: Reveal period not over */\nexport const OPPORTUNITY_MARKET_ERROR__REVEAL_PERIOD_NOT_OVER = 0x1791; // 6033\n/** NoRewardToClaim: No reward to claim */\nexport const OPPORTUNITY_MARKET_ERROR__NO_REWARD_TO_CLAIM = 0x1792; // 6034\n/** RewardAlreadyClaimed: Reward already claimed */\nexport const OPPORTUNITY_MARKET_ERROR__REWARD_ALREADY_CLAIMED = 0x1793; // 6035\n\nexport type OpportunityMarketError =\n | typeof OPPORTUNITY_MARKET_ERROR__ABORTED_COMPUTATION\n | typeof OPPORTUNITY_MARKET_ERROR__ADD_OPTION_STAKE_FAILED\n | typeof OPPORTUNITY_MARKET_ERROR__ALREADY_REVEALED\n | typeof OPPORTUNITY_MARKET_ERROR__ALREADY_STAKED\n | typeof OPPORTUNITY_MARKET_ERROR__ALREADY_UNSTAKED\n | typeof OPPORTUNITY_MARKET_ERROR__CREATOR_MISMATCH\n | typeof OPPORTUNITY_MARKET_ERROR__DEPOSIT_BELOW_MINIMUM\n | typeof OPPORTUNITY_MARKET_ERROR__INSUFFICIENT_BALANCE\n | typeof OPPORTUNITY_MARKET_ERROR__INSUFFICIENT_REWARD_FUNDING\n | typeof OPPORTUNITY_MARKET_ERROR__INVALID_ACCOUNT_STATE\n | typeof OPPORTUNITY_MARKET_ERROR__INVALID_FEE_RATES\n | typeof OPPORTUNITY_MARKET_ERROR__INVALID_MINT\n | typeof OPPORTUNITY_MARKET_ERROR__INVALID_OPTION_ID\n | typeof OPPORTUNITY_MARKET_ERROR__INVALID_PARAMETERS\n | typeof OPPORTUNITY_MARKET_ERROR__LOCKED\n | typeof OPPORTUNITY_MARKET_ERROR__MARKET_ALREADY_OPEN\n | typeof OPPORTUNITY_MARKET_ERROR__MARKET_NOT_OPEN\n | typeof OPPORTUNITY_MARKET_ERROR__MARKET_NOT_PAUSED\n | typeof OPPORTUNITY_MARKET_ERROR__MARKET_NOT_RESOLVED\n | typeof OPPORTUNITY_MARKET_ERROR__MARKET_PAUSED\n | typeof OPPORTUNITY_MARKET_ERROR__NO_FEES_TO_CLAIM\n | typeof OPPORTUNITY_MARKET_ERROR__NO_REWARD_TO_CLAIM\n | typeof OPPORTUNITY_MARKET_ERROR__NO_STAKE\n | typeof OPPORTUNITY_MARKET_ERROR__NOT_REVEALED\n | typeof OPPORTUNITY_MARKET_ERROR__OPTION_STILL_NEEDED\n | typeof OPPORTUNITY_MARKET_ERROR__OVERFLOW\n | typeof OPPORTUNITY_MARKET_ERROR__REVEAL_PERIOD_ENDED\n | typeof OPPORTUNITY_MARKET_ERROR__REVEAL_PERIOD_NOT_OVER\n | typeof OPPORTUNITY_MARKET_ERROR__REWARD_ALREADY_CLAIMED\n | typeof OPPORTUNITY_MARKET_ERROR__SELECT_OPTIONS_DEADLINE_PASSED\n | typeof OPPORTUNITY_MARKET_ERROR__STAKE_BELOW_MINIMUM\n | typeof OPPORTUNITY_MARKET_ERROR__STAKE_NOT_STUCK\n | typeof OPPORTUNITY_MARKET_ERROR__TALLY_ALREADY_INCREMENTED\n | typeof OPPORTUNITY_MARKET_ERROR__TIME_WINDOW_MISMATCH\n | typeof OPPORTUNITY_MARKET_ERROR__UNAUTHORIZED\n | typeof OPPORTUNITY_MARKET_ERROR__WINNER_ALREADY_SELECTED;\n\nlet opportunityMarketErrorMessages:\n | Record<OpportunityMarketError, string>\n | undefined;\nif (process.env.NODE_ENV !== 'production') {\n opportunityMarketErrorMessages = {\n [OPPORTUNITY_MARKET_ERROR__ABORTED_COMPUTATION]: `Computation aborted`,\n [OPPORTUNITY_MARKET_ERROR__ADD_OPTION_STAKE_FAILED]: `Add option stake failed: insufficient balance or below minimum deposit`,\n [OPPORTUNITY_MARKET_ERROR__ALREADY_REVEALED]: `Stake already revealed`,\n [OPPORTUNITY_MARKET_ERROR__ALREADY_STAKED]: `Already staked for this stake account`,\n [OPPORTUNITY_MARKET_ERROR__ALREADY_UNSTAKED]: `Already unstaked`,\n [OPPORTUNITY_MARKET_ERROR__CREATOR_MISMATCH]: `Creator mismatch`,\n [OPPORTUNITY_MARKET_ERROR__DEPOSIT_BELOW_MINIMUM]: `Deposit amount below minimum required for option creation`,\n [OPPORTUNITY_MARKET_ERROR__INSUFFICIENT_BALANCE]: `Insufficient balance`,\n [OPPORTUNITY_MARKET_ERROR__INSUFFICIENT_REWARD_FUNDING]: `Insufficient reward funding`,\n [OPPORTUNITY_MARKET_ERROR__INVALID_ACCOUNT_STATE]: `Invalid account state`,\n [OPPORTUNITY_MARKET_ERROR__INVALID_FEE_RATES]: `Invalid fee rates`,\n [OPPORTUNITY_MARKET_ERROR__INVALID_MINT]: `Token mint does not match account mint`,\n [OPPORTUNITY_MARKET_ERROR__INVALID_OPTION_ID]: `Invalid option ID`,\n [OPPORTUNITY_MARKET_ERROR__INVALID_PARAMETERS]: `Invalid parameters`,\n [OPPORTUNITY_MARKET_ERROR__LOCKED]: `Account is locked`,\n [OPPORTUNITY_MARKET_ERROR__MARKET_ALREADY_OPEN]: `Market is already open`,\n [OPPORTUNITY_MARKET_ERROR__MARKET_NOT_OPEN]: `Market is not open`,\n [OPPORTUNITY_MARKET_ERROR__MARKET_NOT_PAUSED]: `Market is not paused`,\n [OPPORTUNITY_MARKET_ERROR__MARKET_NOT_RESOLVED]: `Market not yet resolved`,\n [OPPORTUNITY_MARKET_ERROR__MARKET_PAUSED]: `Market staking is currently paused`,\n [OPPORTUNITY_MARKET_ERROR__NO_FEES_TO_CLAIM]: `No fees to claim`,\n [OPPORTUNITY_MARKET_ERROR__NO_REWARD_TO_CLAIM]: `No reward to claim`,\n [OPPORTUNITY_MARKET_ERROR__NO_STAKE]: `Stake account has no recorded stake`,\n [OPPORTUNITY_MARKET_ERROR__NOT_REVEALED]: `Stake not yet revealed`,\n [OPPORTUNITY_MARKET_ERROR__OPTION_STILL_NEEDED]: `Option still needed`,\n [OPPORTUNITY_MARKET_ERROR__OVERFLOW]: `Arithmetic overflow`,\n [OPPORTUNITY_MARKET_ERROR__REVEAL_PERIOD_ENDED]: `Reveal period has already ended`,\n [OPPORTUNITY_MARKET_ERROR__REVEAL_PERIOD_NOT_OVER]: `Reveal period not over`,\n [OPPORTUNITY_MARKET_ERROR__REWARD_ALREADY_CLAIMED]: `Reward already claimed`,\n [OPPORTUNITY_MARKET_ERROR__SELECT_OPTIONS_DEADLINE_PASSED]: `Deadline for selecting winning options has passed`,\n [OPPORTUNITY_MARKET_ERROR__STAKE_BELOW_MINIMUM]: `Stake amount is below the market minimum`,\n [OPPORTUNITY_MARKET_ERROR__STAKE_NOT_STUCK]: `Stake account is not in a stuck or failed state`,\n [OPPORTUNITY_MARKET_ERROR__TALLY_ALREADY_INCREMENTED]: `Tally already incremented for this stake account`,\n [OPPORTUNITY_MARKET_ERROR__TIME_WINDOW_MISMATCH]: `Operation called outside its permitted time window`,\n [OPPORTUNITY_MARKET_ERROR__UNAUTHORIZED]: `Unauthorized`,\n [OPPORTUNITY_MARKET_ERROR__WINNER_ALREADY_SELECTED]: `Market winner already selected`,\n };\n}\n\nexport function getOpportunityMarketErrorMessage(\n code: OpportunityMarketError\n): string {\n if (process.env.NODE_ENV !== 'production') {\n return (\n opportunityMarketErrorMessages as Record<OpportunityMarketError, string>\n )[code];\n }\n\n return 'Error message not available in production bundles.';\n}\n\nexport function isOpportunityMarketError<\n TProgramErrorCode extends OpportunityMarketError,\n>(\n error: unknown,\n transactionMessage: {\n instructions: Record<number, { programAddress: Address }>;\n },\n code?: TProgramErrorCode\n): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &\n Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n return isProgramError<TProgramErrorCode>(\n error,\n transactionMessage,\n OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n code\n );\n}\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 {\n containsBytes,\n fixEncoderSize,\n getBytesEncoder,\n type Address,\n type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n type ParsedAddMarketOptionInstruction,\n type ParsedAddRewardInstruction,\n type ParsedClaimCreatorFeesInstruction,\n type ParsedClaimFeesInstruction,\n type ParsedCloseOptionAccountInstruction,\n type ParsedCloseStakeAccountInstruction,\n type ParsedCloseStuckStakeAccountInstruction,\n type ParsedCreateMarketInstruction,\n type ParsedEndRevealPeriodInstruction,\n type ParsedFinalizeRevealStakeInstruction,\n type ParsedInitAllowedMintInstruction,\n type ParsedInitPlatformConfigInstruction,\n type ParsedInitStakeAccountInstruction,\n type ParsedOpenMarketInstruction,\n type ParsedPauseStakingInstruction,\n type ParsedResolveMarketInstruction,\n type ParsedResumeStakingInstruction,\n type ParsedRevealStakeCallbackInstruction,\n type ParsedRevealStakeCompDefInstruction,\n type ParsedRevealStakeInstruction,\n type ParsedSetFeeClaimAuthorityInstruction,\n type ParsedSetUpdateAuthorityInstruction,\n type ParsedSetWinningOptionInstruction,\n type ParsedStakeCallbackInstruction,\n type ParsedStakeCompDefInstruction,\n type ParsedStakeInstruction,\n type ParsedUnstakeInstruction,\n type ParsedUpdatePlatformConfigInstruction,\n type ParsedWithdrawRewardInstruction,\n} from '../instructions';\n\nexport const OPPORTUNITY_MARKET_PROGRAM_ADDRESS =\n 'B3NCHsGBkdZrPYPJY2rjg4UwmyRotMmFWhxa5hMHwLeg' as Address<'B3NCHsGBkdZrPYPJY2rjg4UwmyRotMmFWhxa5hMHwLeg'>;\n\nexport enum OpportunityMarketAccount {\n AllowedMint,\n ArciumSignerAccount,\n OpportunityMarket,\n OpportunityMarketOption,\n OpportunityMarketSponsor,\n PlatformConfig,\n StakeAccount,\n}\n\nexport function identifyOpportunityMarketAccount(\n account: { data: ReadonlyUint8Array } | ReadonlyUint8Array\n): OpportunityMarketAccount {\n const data = 'data' in account ? account.data : account;\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([173, 229, 179, 46, 121, 164, 247, 6])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.AllowedMint;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([214, 157, 122, 114, 117, 44, 214, 74])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.ArciumSignerAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([207, 103, 169, 160, 157, 215, 97, 224])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.OpportunityMarket;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([220, 236, 171, 213, 170, 117, 10, 64])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.OpportunityMarketOption;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([207, 139, 192, 91, 37, 190, 2, 192])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.OpportunityMarketSponsor;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([160, 78, 128, 0, 248, 83, 230, 160])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.PlatformConfig;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([80, 158, 67, 124, 50, 189, 192, 255])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.StakeAccount;\n }\n throw new Error(\n 'The provided account could not be identified as a opportunityMarket account.'\n );\n}\n\nexport enum OpportunityMarketInstruction {\n AddMarketOption,\n AddReward,\n ClaimCreatorFees,\n ClaimFees,\n CloseOptionAccount,\n CloseStakeAccount,\n CloseStuckStakeAccount,\n CreateMarket,\n EndRevealPeriod,\n FinalizeRevealStake,\n InitAllowedMint,\n InitPlatformConfig,\n InitStakeAccount,\n OpenMarket,\n PauseStaking,\n ResolveMarket,\n ResumeStaking,\n RevealStake,\n RevealStakeCallback,\n RevealStakeCompDef,\n SetFeeClaimAuthority,\n SetUpdateAuthority,\n SetWinningOption,\n Stake,\n StakeCallback,\n StakeCompDef,\n Unstake,\n UpdatePlatformConfig,\n WithdrawReward,\n}\n\nexport function identifyOpportunityMarketInstruction(\n instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array\n): OpportunityMarketInstruction {\n const data = 'data' in instruction ? instruction.data : instruction;\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([76, 189, 93, 144, 50, 229, 250, 116])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.AddMarketOption;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([4, 114, 188, 164, 149, 249, 198, 237])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.AddReward;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([0, 23, 125, 234, 156, 118, 134, 89])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.ClaimCreatorFees;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([82, 251, 233, 156, 12, 52, 184, 202])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.ClaimFees;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([46, 121, 107, 240, 123, 190, 229, 1])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.CloseOptionAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([246, 236, 59, 167, 115, 135, 122, 12])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.CloseStakeAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([41, 239, 108, 203, 185, 230, 165, 181])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.CloseStuckStakeAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([103, 226, 97, 235, 200, 188, 251, 254])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.CreateMarket;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([144, 81, 42, 65, 127, 60, 134, 92])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.EndRevealPeriod;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([92, 201, 94, 219, 117, 53, 255, 230])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.FinalizeRevealStake;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([215, 70, 3, 5, 42, 229, 151, 10])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.InitAllowedMint;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([101, 52, 47, 49, 156, 16, 32, 118])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.InitPlatformConfig;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([132, 171, 255, 149, 163, 37, 220, 45])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.InitStakeAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([116, 19, 123, 75, 217, 244, 69, 44])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.OpenMarket;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([245, 191, 35, 58, 88, 250, 229, 60])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.PauseStaking;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([155, 23, 80, 173, 46, 74, 23, 239])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.ResolveMarket;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([31, 200, 175, 23, 211, 22, 63, 155])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.ResumeStaking;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([107, 229, 210, 77, 126, 255, 243, 188])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.RevealStake;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([79, 19, 120, 162, 232, 39, 206, 116])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.RevealStakeCallback;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([197, 20, 216, 132, 43, 99, 64, 0])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.RevealStakeCompDef;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([75, 250, 161, 197, 43, 196, 161, 3])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.SetFeeClaimAuthority;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([166, 198, 186, 255, 217, 170, 103, 155])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.SetUpdateAuthority;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([156, 73, 113, 33, 170, 115, 163, 206])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.SetWinningOption;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([206, 176, 202, 18, 200, 209, 179, 108])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.Stake;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([40, 220, 36, 47, 6, 116, 132, 89])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.StakeCallback;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([156, 5, 60, 126, 142, 149, 1, 130])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.StakeCompDef;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([90, 95, 107, 42, 205, 124, 50, 225])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.Unstake;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([195, 60, 76, 129, 146, 45, 67, 143])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.UpdatePlatformConfig;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([191, 187, 176, 137, 9, 25, 187, 244])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.WithdrawReward;\n }\n throw new Error(\n 'The provided instruction could not be identified as a opportunityMarket instruction.'\n );\n}\n\nexport type ParsedOpportunityMarketInstruction<\n TProgram extends string = 'B3NCHsGBkdZrPYPJY2rjg4UwmyRotMmFWhxa5hMHwLeg',\n> =\n | ({\n instructionType: OpportunityMarketInstruction.AddMarketOption;\n } & ParsedAddMarketOptionInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.AddReward;\n } & ParsedAddRewardInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.ClaimCreatorFees;\n } & ParsedClaimCreatorFeesInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.ClaimFees;\n } & ParsedClaimFeesInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CloseOptionAccount;\n } & ParsedCloseOptionAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CloseStakeAccount;\n } & ParsedCloseStakeAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CloseStuckStakeAccount;\n } & ParsedCloseStuckStakeAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CreateMarket;\n } & ParsedCreateMarketInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.EndRevealPeriod;\n } & ParsedEndRevealPeriodInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.FinalizeRevealStake;\n } & ParsedFinalizeRevealStakeInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.InitAllowedMint;\n } & ParsedInitAllowedMintInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.InitPlatformConfig;\n } & ParsedInitPlatformConfigInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.InitStakeAccount;\n } & ParsedInitStakeAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.OpenMarket;\n } & ParsedOpenMarketInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.PauseStaking;\n } & ParsedPauseStakingInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.ResolveMarket;\n } & ParsedResolveMarketInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.ResumeStaking;\n } & ParsedResumeStakingInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.RevealStake;\n } & ParsedRevealStakeInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.RevealStakeCallback;\n } & ParsedRevealStakeCallbackInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.RevealStakeCompDef;\n } & ParsedRevealStakeCompDefInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.SetFeeClaimAuthority;\n } & ParsedSetFeeClaimAuthorityInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.SetUpdateAuthority;\n } & ParsedSetUpdateAuthorityInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.SetWinningOption;\n } & ParsedSetWinningOptionInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.Stake;\n } & ParsedStakeInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.StakeCallback;\n } & ParsedStakeCallbackInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.StakeCompDef;\n } & ParsedStakeCompDefInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.Unstake;\n } & ParsedUnstakeInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.UpdatePlatformConfig;\n } & ParsedUpdatePlatformConfigInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.WithdrawReward;\n } & ParsedWithdrawRewardInstruction<TProgram>);\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const ADD_MARKET_OPTION_DISCRIMINATOR = new Uint8Array([\n 76, 189, 93, 144, 50, 229, 250, 116,\n]);\n\nexport function getAddMarketOptionDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n ADD_MARKET_OPTION_DISCRIMINATOR\n );\n}\n\nexport type AddMarketOptionInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountOption extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? WritableSignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountOption extends string\n ? WritableAccount<TAccountOption>\n : TAccountOption,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type AddMarketOptionInstructionData = {\n discriminator: ReadonlyUint8Array;\n optionId: bigint;\n};\n\nexport type AddMarketOptionInstructionDataArgs = { optionId: number | bigint };\n\nexport function getAddMarketOptionInstructionDataEncoder(): FixedSizeEncoder<AddMarketOptionInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['optionId', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: ADD_MARKET_OPTION_DISCRIMINATOR })\n );\n}\n\nexport function getAddMarketOptionInstructionDataDecoder(): FixedSizeDecoder<AddMarketOptionInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['optionId', getU64Decoder()],\n ]);\n}\n\nexport function getAddMarketOptionInstructionDataCodec(): FixedSizeCodec<\n AddMarketOptionInstructionDataArgs,\n AddMarketOptionInstructionData\n> {\n return combineCodec(\n getAddMarketOptionInstructionDataEncoder(),\n getAddMarketOptionInstructionDataDecoder()\n );\n}\n\nexport type AddMarketOptionAsyncInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountOption extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n option?: Address<TAccountOption>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionId: AddMarketOptionInstructionDataArgs['optionId'];\n};\n\nexport async function getAddMarketOptionInstructionAsync<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountOption extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: AddMarketOptionAsyncInput<\n TAccountSigner,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n AddMarketOptionInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.option.value) {\n accounts.option.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([111, 112, 116, 105, 111, 110])\n ),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU64Encoder().encode(expectSome(args.optionId)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getAddMarketOptionInstructionDataEncoder().encode(\n args as AddMarketOptionInstructionDataArgs\n ),\n programAddress,\n } as AddMarketOptionInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type AddMarketOptionInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountOption extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n option: Address<TAccountOption>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionId: AddMarketOptionInstructionDataArgs['optionId'];\n};\n\nexport function getAddMarketOptionInstruction<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountOption extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: AddMarketOptionInput<\n TAccountSigner,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): AddMarketOptionInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getAddMarketOptionInstructionDataEncoder().encode(\n args as AddMarketOptionInstructionDataArgs\n ),\n programAddress,\n } as AddMarketOptionInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedAddMarketOptionInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n market: TAccountMetas[1];\n option: TAccountMetas[2];\n systemProgram: TAccountMetas[3];\n };\n data: AddMarketOptionInstructionData;\n};\n\nexport function parseAddMarketOptionInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedAddMarketOptionInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 4) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n market: getNextAccount(),\n option: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getAddMarketOptionInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n AccountRole,\n isProgramDerivedAddress,\n isTransactionSigner as kitIsTransactionSigner,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type ProgramDerivedAddress,\n type TransactionSigner,\n upgradeRoleToSigner,\n} from '@solana/kit';\n\n/**\n * Asserts that the given value is not null or undefined.\n * @internal\n */\nexport function expectSome<T>(value: T | null | undefined): T {\n if (value === null || value === undefined) {\n throw new Error('Expected a value but received null or undefined.');\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a PublicKey.\n * @internal\n */\nexport function expectAddress<T extends string = string>(\n value:\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null\n | undefined\n): Address<T> {\n if (!value) {\n throw new Error('Expected a Address.');\n }\n if (typeof value === 'object' && 'address' in value) {\n return value.address;\n }\n if (Array.isArray(value)) {\n return value[0] as Address<T>;\n }\n return value as Address<T>;\n}\n\n/**\n * Asserts that the given value is a PDA.\n * @internal\n */\nexport function expectProgramDerivedAddress<T extends string = string>(\n value:\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null\n | undefined\n): ProgramDerivedAddress<T> {\n if (!value || !Array.isArray(value) || !isProgramDerivedAddress(value)) {\n throw new Error('Expected a ProgramDerivedAddress.');\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a TransactionSigner.\n * @internal\n */\nexport function expectTransactionSigner<T extends string = string>(\n value:\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null\n | undefined\n): TransactionSigner<T> {\n if (!value || !isTransactionSigner(value)) {\n throw new Error('Expected a TransactionSigner.');\n }\n return value;\n}\n\n/**\n * Defines an instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccount<\n T extends string = string,\n U extends\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null =\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null,\n> = {\n isWritable: boolean;\n value: U;\n};\n\n/**\n * Defines an instruction that stores additional bytes on-chain.\n * @internal\n */\nexport type InstructionWithByteDelta = {\n byteDelta: number;\n};\n\n/**\n * Get account metas and signers from resolved accounts.\n * @internal\n */\nexport function getAccountMetaFactory(\n programAddress: Address,\n optionalAccountStrategy: 'omitted' | 'programId'\n) {\n return (\n account: ResolvedAccount\n ): AccountMeta | AccountSignerMeta | undefined => {\n if (!account.value) {\n if (optionalAccountStrategy === 'omitted') return;\n return Object.freeze({\n address: programAddress,\n role: AccountRole.READONLY,\n });\n }\n\n const writableRole = account.isWritable\n ? AccountRole.WRITABLE\n : AccountRole.READONLY;\n return Object.freeze({\n address: expectAddress(account.value),\n role: isTransactionSigner(account.value)\n ? upgradeRoleToSigner(writableRole)\n : writableRole,\n ...(isTransactionSigner(account.value) ? { signer: account.value } : {}),\n });\n };\n}\n\nexport function isTransactionSigner<TAddress extends string = string>(\n value:\n | Address<TAddress>\n | ProgramDerivedAddress<TAddress>\n | TransactionSigner<TAddress>\n): value is TransactionSigner<TAddress> {\n return (\n !!value &&\n typeof value === 'object' &&\n 'address' in value &&\n kitIsTransactionSigner(value)\n );\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const ADD_REWARD_DISCRIMINATOR = new Uint8Array([\n 4, 114, 188, 164, 149, 249, 198, 237,\n]);\n\nexport function getAddRewardDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(ADD_REWARD_DISCRIMINATOR);\n}\n\nexport type AddRewardInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSponsor extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountSponsorAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountSponsorTokenAccount extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSponsor extends string\n ? WritableSignerAccount<TAccountSponsor> &\n AccountSignerMeta<TAccountSponsor>\n : TAccountSponsor,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountSponsorAccount extends string\n ? WritableAccount<TAccountSponsorAccount>\n : TAccountSponsorAccount,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountSponsorTokenAccount extends string\n ? WritableAccount<TAccountSponsorTokenAccount>\n : TAccountSponsorTokenAccount,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type AddRewardInstructionData = {\n discriminator: ReadonlyUint8Array;\n amount: bigint;\n lock: boolean;\n};\n\nexport type AddRewardInstructionDataArgs = {\n amount: number | bigint;\n lock: boolean;\n};\n\nexport function getAddRewardInstructionDataEncoder(): FixedSizeEncoder<AddRewardInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['amount', getU64Encoder()],\n ['lock', getBooleanEncoder()],\n ]),\n (value) => ({ ...value, discriminator: ADD_REWARD_DISCRIMINATOR })\n );\n}\n\nexport function getAddRewardInstructionDataDecoder(): FixedSizeDecoder<AddRewardInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['amount', getU64Decoder()],\n ['lock', getBooleanDecoder()],\n ]);\n}\n\nexport function getAddRewardInstructionDataCodec(): FixedSizeCodec<\n AddRewardInstructionDataArgs,\n AddRewardInstructionData\n> {\n return combineCodec(\n getAddRewardInstructionDataEncoder(),\n getAddRewardInstructionDataDecoder()\n );\n}\n\nexport type AddRewardAsyncInput<\n TAccountSponsor extends string = string,\n TAccountMarket extends string = string,\n TAccountSponsorAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSponsorTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n sponsor: TransactionSigner<TAccountSponsor>;\n market: Address<TAccountMarket>;\n sponsorAccount?: Address<TAccountSponsorAccount>;\n tokenMint: Address<TAccountTokenMint>;\n sponsorTokenAccount: Address<TAccountSponsorTokenAccount>;\n /** Market-owned ATA holding all program-held tokens for this market. */\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n amount: AddRewardInstructionDataArgs['amount'];\n lock: AddRewardInstructionDataArgs['lock'];\n};\n\nexport async function getAddRewardInstructionAsync<\n TAccountSponsor extends string,\n TAccountMarket extends string,\n TAccountSponsorAccount extends string,\n TAccountTokenMint extends string,\n TAccountSponsorTokenAccount extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: AddRewardAsyncInput<\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n AddRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sponsor: { value: input.sponsor ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n sponsorAccount: { value: input.sponsorAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n sponsorTokenAccount: {\n value: input.sponsorTokenAccount ?? null,\n isWritable: true,\n },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.sponsorAccount.value) {\n accounts.sponsorAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([115, 112, 111, 110, 115, 111, 114])\n ),\n getAddressEncoder().encode(expectAddress(accounts.sponsor.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n ],\n });\n }\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.sponsor),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.sponsorAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.sponsorTokenAccount),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getAddRewardInstructionDataEncoder().encode(\n args as AddRewardInstructionDataArgs\n ),\n programAddress,\n } as AddRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type AddRewardInput<\n TAccountSponsor extends string = string,\n TAccountMarket extends string = string,\n TAccountSponsorAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSponsorTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n sponsor: TransactionSigner<TAccountSponsor>;\n market: Address<TAccountMarket>;\n sponsorAccount: Address<TAccountSponsorAccount>;\n tokenMint: Address<TAccountTokenMint>;\n sponsorTokenAccount: Address<TAccountSponsorTokenAccount>;\n /** Market-owned ATA holding all program-held tokens for this market. */\n marketTokenAta: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n amount: AddRewardInstructionDataArgs['amount'];\n lock: AddRewardInstructionDataArgs['lock'];\n};\n\nexport function getAddRewardInstruction<\n TAccountSponsor extends string,\n TAccountMarket extends string,\n TAccountSponsorAccount extends string,\n TAccountTokenMint extends string,\n TAccountSponsorTokenAccount extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: AddRewardInput<\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): AddRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sponsor: { value: input.sponsor ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n sponsorAccount: { value: input.sponsorAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n sponsorTokenAccount: {\n value: input.sponsorTokenAccount ?? null,\n isWritable: true,\n },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.sponsor),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.sponsorAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.sponsorTokenAccount),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getAddRewardInstructionDataEncoder().encode(\n args as AddRewardInstructionDataArgs\n ),\n programAddress,\n } as AddRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedAddRewardInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n sponsor: TAccountMetas[0];\n market: TAccountMetas[1];\n sponsorAccount: TAccountMetas[2];\n tokenMint: TAccountMetas[3];\n sponsorTokenAccount: TAccountMetas[4];\n /** Market-owned ATA holding all program-held tokens for this market. */\n marketTokenAta: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n systemProgram: TAccountMetas[7];\n };\n data: AddRewardInstructionData;\n};\n\nexport function parseAddRewardInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedAddRewardInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 8) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n sponsor: getNextAccount(),\n market: getNextAccount(),\n sponsorAccount: getNextAccount(),\n tokenMint: getNextAccount(),\n sponsorTokenAccount: getNextAccount(),\n marketTokenAta: getNextAccount(),\n tokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getAddRewardInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CLAIM_CREATOR_FEES_DISCRIMINATOR = new Uint8Array([\n 0, 23, 125, 234, 156, 118, 134, 89,\n]);\n\nexport function getClaimCreatorFeesDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLAIM_CREATOR_FEES_DISCRIMINATOR\n );\n}\n\nexport type ClaimCreatorFeesInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountDestinationTokenAccount extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? ReadonlySignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountDestinationTokenAccount extends string\n ? WritableAccount<TAccountDestinationTokenAccount>\n : TAccountDestinationTokenAccount,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ClaimCreatorFeesInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type ClaimCreatorFeesInstructionDataArgs = {};\n\nexport function getClaimCreatorFeesInstructionDataEncoder(): FixedSizeEncoder<ClaimCreatorFeesInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: CLAIM_CREATOR_FEES_DISCRIMINATOR })\n );\n}\n\nexport function getClaimCreatorFeesInstructionDataDecoder(): FixedSizeDecoder<ClaimCreatorFeesInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getClaimCreatorFeesInstructionDataCodec(): FixedSizeCodec<\n ClaimCreatorFeesInstructionDataArgs,\n ClaimCreatorFeesInstructionData\n> {\n return combineCodec(\n getClaimCreatorFeesInstructionDataEncoder(),\n getClaimCreatorFeesInstructionDataDecoder()\n );\n}\n\nexport type ClaimCreatorFeesAsyncInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport async function getClaimCreatorFeesInstructionAsync<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ClaimCreatorFeesAsyncInput<\n TAccountSigner,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n ClaimCreatorFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getClaimCreatorFeesInstructionDataEncoder().encode({}),\n programAddress,\n } as ClaimCreatorFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type ClaimCreatorFeesInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta: Address<TAccountMarketTokenAta>;\n destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport function getClaimCreatorFeesInstruction<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ClaimCreatorFeesInput<\n TAccountSigner,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): ClaimCreatorFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getClaimCreatorFeesInstructionDataEncoder().encode({}),\n programAddress,\n } as ClaimCreatorFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type ParsedClaimCreatorFeesInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n market: TAccountMetas[1];\n tokenMint: TAccountMetas[2];\n marketTokenAta: TAccountMetas[3];\n destinationTokenAccount: TAccountMetas[4];\n tokenProgram: TAccountMetas[5];\n };\n data: ClaimCreatorFeesInstructionData;\n};\n\nexport function parseClaimCreatorFeesInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedClaimCreatorFeesInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 6) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n market: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n destinationTokenAccount: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getClaimCreatorFeesInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CLAIM_FEES_DISCRIMINATOR = new Uint8Array([\n 82, 251, 233, 156, 12, 52, 184, 202,\n]);\n\nexport function getClaimFeesDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(CLAIM_FEES_DISCRIMINATOR);\n}\n\nexport type ClaimFeesInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountPlatformConfig extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountDestinationTokenAccount extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? ReadonlySignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountPlatformConfig extends string\n ? ReadonlyAccount<TAccountPlatformConfig>\n : TAccountPlatformConfig,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountDestinationTokenAccount extends string\n ? WritableAccount<TAccountDestinationTokenAccount>\n : TAccountDestinationTokenAccount,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ClaimFeesInstructionData = { discriminator: ReadonlyUint8Array };\n\nexport type ClaimFeesInstructionDataArgs = {};\n\nexport function getClaimFeesInstructionDataEncoder(): FixedSizeEncoder<ClaimFeesInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: CLAIM_FEES_DISCRIMINATOR })\n );\n}\n\nexport function getClaimFeesInstructionDataDecoder(): FixedSizeDecoder<ClaimFeesInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getClaimFeesInstructionDataCodec(): FixedSizeCodec<\n ClaimFeesInstructionDataArgs,\n ClaimFeesInstructionData\n> {\n return combineCodec(\n getClaimFeesInstructionDataEncoder(),\n getClaimFeesInstructionDataDecoder()\n );\n}\n\nexport type ClaimFeesAsyncInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n platformConfig: Address<TAccountPlatformConfig>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport async function getClaimFeesInstructionAsync<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountPlatformConfig extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ClaimFeesAsyncInput<\n TAccountSigner,\n TAccountMarket,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n ClaimFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getClaimFeesInstructionDataEncoder().encode({}),\n programAddress,\n } as ClaimFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type ClaimFeesInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n platformConfig: Address<TAccountPlatformConfig>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta: Address<TAccountMarketTokenAta>;\n destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport function getClaimFeesInstruction<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountPlatformConfig extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ClaimFeesInput<\n TAccountSigner,\n TAccountMarket,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): ClaimFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getClaimFeesInstructionDataEncoder().encode({}),\n programAddress,\n } as ClaimFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type ParsedClaimFeesInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n market: TAccountMetas[1];\n platformConfig: TAccountMetas[2];\n tokenMint: TAccountMetas[3];\n marketTokenAta: TAccountMetas[4];\n destinationTokenAccount: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n };\n data: ClaimFeesInstructionData;\n};\n\nexport function parseClaimFeesInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedClaimFeesInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n market: getNextAccount(),\n platformConfig: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n destinationTokenAccount: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getClaimFeesInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CLOSE_OPTION_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 46, 121, 107, 240, 123, 190, 229, 1,\n]);\n\nexport function getCloseOptionAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLOSE_OPTION_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type CloseOptionAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountCreator extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountOption extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? WritableSignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountCreator extends string\n ? WritableAccount<TAccountCreator>\n : TAccountCreator,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountOption extends string\n ? WritableAccount<TAccountOption>\n : TAccountOption,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CloseOptionAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n optionId: bigint;\n};\n\nexport type CloseOptionAccountInstructionDataArgs = {\n optionId: number | bigint;\n};\n\nexport function getCloseOptionAccountInstructionDataEncoder(): FixedSizeEncoder<CloseOptionAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['optionId', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: CLOSE_OPTION_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getCloseOptionAccountInstructionDataDecoder(): FixedSizeDecoder<CloseOptionAccountInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['optionId', getU64Decoder()],\n ]);\n}\n\nexport function getCloseOptionAccountInstructionDataCodec(): FixedSizeCodec<\n CloseOptionAccountInstructionDataArgs,\n CloseOptionAccountInstructionData\n> {\n return combineCodec(\n getCloseOptionAccountInstructionDataEncoder(),\n getCloseOptionAccountInstructionDataDecoder()\n );\n}\n\nexport type CloseOptionAccountAsyncInput<\n TAccountSigner extends string = string,\n TAccountCreator extends string = string,\n TAccountMarket extends string = string,\n TAccountOption extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n creator: Address<TAccountCreator>;\n market: Address<TAccountMarket>;\n option?: Address<TAccountOption>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionId: CloseOptionAccountInstructionDataArgs['optionId'];\n};\n\nexport async function getCloseOptionAccountInstructionAsync<\n TAccountSigner extends string,\n TAccountCreator extends string,\n TAccountMarket extends string,\n TAccountOption extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseOptionAccountAsyncInput<\n TAccountSigner,\n TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CloseOptionAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n creator: { value: input.creator ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.option.value) {\n accounts.option.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([111, 112, 116, 105, 111, 110])\n ),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU64Encoder().encode(expectSome(args.optionId)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.creator),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCloseOptionAccountInstructionDataEncoder().encode(\n args as CloseOptionAccountInstructionDataArgs\n ),\n programAddress,\n } as CloseOptionAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type CloseOptionAccountInput<\n TAccountSigner extends string = string,\n TAccountCreator extends string = string,\n TAccountMarket extends string = string,\n TAccountOption extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n creator: Address<TAccountCreator>;\n market: Address<TAccountMarket>;\n option: Address<TAccountOption>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionId: CloseOptionAccountInstructionDataArgs['optionId'];\n};\n\nexport function getCloseOptionAccountInstruction<\n TAccountSigner extends string,\n TAccountCreator extends string,\n TAccountMarket extends string,\n TAccountOption extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseOptionAccountInput<\n TAccountSigner,\n TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CloseOptionAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n creator: { value: input.creator ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.creator),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCloseOptionAccountInstructionDataEncoder().encode(\n args as CloseOptionAccountInstructionDataArgs\n ),\n programAddress,\n } as CloseOptionAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCloseOptionAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n creator: TAccountMetas[1];\n market: TAccountMetas[2];\n option: TAccountMetas[3];\n systemProgram: TAccountMetas[4];\n };\n data: CloseOptionAccountInstructionData;\n};\n\nexport function parseCloseOptionAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedCloseOptionAccountInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n creator: getNextAccount(),\n market: getNextAccount(),\n option: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCloseOptionAccountInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CLOSE_STAKE_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 246, 236, 59, 167, 115, 135, 122, 12,\n]);\n\nexport function getCloseStakeAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLOSE_STAKE_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type CloseStakeAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountOwner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountOption extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountOwnerTokenAccount extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountOwner extends string\n ? WritableSignerAccount<TAccountOwner> &\n AccountSignerMeta<TAccountOwner>\n : TAccountOwner,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountOption extends string\n ? WritableAccount<TAccountOption>\n : TAccountOption,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountOwnerTokenAccount extends string\n ? WritableAccount<TAccountOwnerTokenAccount>\n : TAccountOwnerTokenAccount,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CloseStakeAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n optionId: bigint;\n stakeAccountId: number;\n};\n\nexport type CloseStakeAccountInstructionDataArgs = {\n optionId: number | bigint;\n stakeAccountId: number;\n};\n\nexport function getCloseStakeAccountInstructionDataEncoder(): FixedSizeEncoder<CloseStakeAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['optionId', getU64Encoder()],\n ['stakeAccountId', getU32Encoder()],\n ]),\n (value) => ({ ...value, discriminator: CLOSE_STAKE_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getCloseStakeAccountInstructionDataDecoder(): FixedSizeDecoder<CloseStakeAccountInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['optionId', getU64Decoder()],\n ['stakeAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getCloseStakeAccountInstructionDataCodec(): FixedSizeCodec<\n CloseStakeAccountInstructionDataArgs,\n CloseStakeAccountInstructionData\n> {\n return combineCodec(\n getCloseStakeAccountInstructionDataEncoder(),\n getCloseStakeAccountInstructionDataDecoder()\n );\n}\n\nexport type CloseStakeAccountAsyncInput<\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountOption extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountOwnerTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n owner: TransactionSigner<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount?: Address<TAccountStakeAccount>;\n option?: Address<TAccountOption>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market-owned ATA holding all program-held tokens for this market */\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n /** Owner's token account to receive rewards */\n ownerTokenAccount: Address<TAccountOwnerTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionId: CloseStakeAccountInstructionDataArgs['optionId'];\n stakeAccountId: CloseStakeAccountInstructionDataArgs['stakeAccountId'];\n};\n\nexport async function getCloseStakeAccountInstructionAsync<\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountOption extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountOwnerTokenAccount extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseStakeAccountAsyncInput<\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CloseStakeAccountInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n owner: { value: input.owner ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n ownerTokenAccount: {\n value: input.ownerTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.stakeAccount.value) {\n accounts.stakeAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 116, 97, 107, 101, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.owner.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU32Encoder().encode(expectSome(args.stakeAccountId)),\n ],\n });\n }\n if (!accounts.option.value) {\n accounts.option.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([111, 112, 116, 105, 111, 110])\n ),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU64Encoder().encode(expectSome(args.optionId)),\n ],\n });\n }\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.ownerTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCloseStakeAccountInstructionDataEncoder().encode(\n args as CloseStakeAccountInstructionDataArgs\n ),\n programAddress,\n } as CloseStakeAccountInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type CloseStakeAccountInput<\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountOption extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountOwnerTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n owner: TransactionSigner<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n option: Address<TAccountOption>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market-owned ATA holding all program-held tokens for this market */\n marketTokenAta: Address<TAccountMarketTokenAta>;\n /** Owner's token account to receive rewards */\n ownerTokenAccount: Address<TAccountOwnerTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionId: CloseStakeAccountInstructionDataArgs['optionId'];\n stakeAccountId: CloseStakeAccountInstructionDataArgs['stakeAccountId'];\n};\n\nexport function getCloseStakeAccountInstruction<\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountOption extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountOwnerTokenAccount extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseStakeAccountInput<\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CloseStakeAccountInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n owner: { value: input.owner ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n ownerTokenAccount: {\n value: input.ownerTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.ownerTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCloseStakeAccountInstructionDataEncoder().encode(\n args as CloseStakeAccountInstructionDataArgs\n ),\n programAddress,\n } as CloseStakeAccountInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCloseStakeAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n owner: TAccountMetas[0];\n market: TAccountMetas[1];\n stakeAccount: TAccountMetas[2];\n option: TAccountMetas[3];\n tokenMint: TAccountMetas[4];\n /** Market-owned ATA holding all program-held tokens for this market */\n marketTokenAta: TAccountMetas[5];\n /** Owner's token account to receive rewards */\n ownerTokenAccount: TAccountMetas[6];\n tokenProgram: TAccountMetas[7];\n systemProgram: TAccountMetas[8];\n };\n data: CloseStakeAccountInstructionData;\n};\n\nexport function parseCloseStakeAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedCloseStakeAccountInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 9) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n owner: getNextAccount(),\n market: getNextAccount(),\n stakeAccount: getNextAccount(),\n option: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n ownerTokenAccount: getNextAccount(),\n tokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCloseStakeAccountInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CLOSE_STUCK_STAKE_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 41, 239, 108, 203, 185, 230, 165, 181,\n]);\n\nexport function getCloseStuckStakeAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLOSE_STUCK_STAKE_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type CloseStuckStakeAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountSignerTokenAccount extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? WritableSignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountMarket extends string\n ? ReadonlyAccount<TAccountMarket>\n : TAccountMarket,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountSignerTokenAccount extends string\n ? WritableAccount<TAccountSignerTokenAccount>\n : TAccountSignerTokenAccount,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CloseStuckStakeAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n stakeAccountId: number;\n};\n\nexport type CloseStuckStakeAccountInstructionDataArgs = {\n stakeAccountId: number;\n};\n\nexport function getCloseStuckStakeAccountInstructionDataEncoder(): FixedSizeEncoder<CloseStuckStakeAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['stakeAccountId', getU32Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: CLOSE_STUCK_STAKE_ACCOUNT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getCloseStuckStakeAccountInstructionDataDecoder(): FixedSizeDecoder<CloseStuckStakeAccountInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['stakeAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getCloseStuckStakeAccountInstructionDataCodec(): FixedSizeCodec<\n CloseStuckStakeAccountInstructionDataArgs,\n CloseStuckStakeAccountInstructionData\n> {\n return combineCodec(\n getCloseStuckStakeAccountInstructionDataEncoder(),\n getCloseStuckStakeAccountInstructionDataDecoder()\n );\n}\n\nexport type CloseStuckStakeAccountAsyncInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n stakeAccount?: Address<TAccountStakeAccount>;\n tokenMint: Address<TAccountTokenMint>;\n /** Signer's token account to receive refund */\n signerTokenAccount: Address<TAccountSignerTokenAccount>;\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n stakeAccountId: CloseStuckStakeAccountInstructionDataArgs['stakeAccountId'];\n};\n\nexport async function getCloseStuckStakeAccountInstructionAsync<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenMint extends string,\n TAccountSignerTokenAccount extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseStuckStakeAccountAsyncInput<\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CloseStuckStakeAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: false },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n signerTokenAccount: {\n value: input.signerTokenAccount ?? null,\n isWritable: true,\n },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.stakeAccount.value) {\n accounts.stakeAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 116, 97, 107, 101, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.signer.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU32Encoder().encode(expectSome(args.stakeAccountId)),\n ],\n });\n }\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.signerTokenAccount),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCloseStuckStakeAccountInstructionDataEncoder().encode(\n args as CloseStuckStakeAccountInstructionDataArgs\n ),\n programAddress,\n } as CloseStuckStakeAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type CloseStuckStakeAccountInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n tokenMint: Address<TAccountTokenMint>;\n /** Signer's token account to receive refund */\n signerTokenAccount: Address<TAccountSignerTokenAccount>;\n marketTokenAta: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n stakeAccountId: CloseStuckStakeAccountInstructionDataArgs['stakeAccountId'];\n};\n\nexport function getCloseStuckStakeAccountInstruction<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenMint extends string,\n TAccountSignerTokenAccount extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseStuckStakeAccountInput<\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CloseStuckStakeAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: false },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n signerTokenAccount: {\n value: input.signerTokenAccount ?? null,\n isWritable: true,\n },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.signerTokenAccount),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCloseStuckStakeAccountInstructionDataEncoder().encode(\n args as CloseStuckStakeAccountInstructionDataArgs\n ),\n programAddress,\n } as CloseStuckStakeAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCloseStuckStakeAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n market: TAccountMetas[1];\n stakeAccount: TAccountMetas[2];\n tokenMint: TAccountMetas[3];\n /** Signer's token account to receive refund */\n signerTokenAccount: TAccountMetas[4];\n marketTokenAta: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n systemProgram: TAccountMetas[7];\n };\n data: CloseStuckStakeAccountInstructionData;\n};\n\nexport function parseCloseStuckStakeAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedCloseStuckStakeAccountInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 8) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n market: getNextAccount(),\n stakeAccount: getNextAccount(),\n tokenMint: getNextAccount(),\n signerTokenAccount: getNextAccount(),\n marketTokenAta: getNextAccount(),\n tokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCloseStuckStakeAccountInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CREATE_MARKET_DISCRIMINATOR = new Uint8Array([\n 103, 226, 97, 235, 200, 188, 251, 254,\n]);\n\nexport function getCreateMarketDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CREATE_MARKET_DISCRIMINATOR\n );\n}\n\nexport type CreateMarketInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountCreator extends string | AccountMeta<string> = string,\n TAccountPlatformConfig extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountAllowedMint extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TAccountAssociatedTokenProgram extends string | AccountMeta<string> =\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountCreator extends string\n ? WritableSignerAccount<TAccountCreator> &\n AccountSignerMeta<TAccountCreator>\n : TAccountCreator,\n TAccountPlatformConfig extends string\n ? ReadonlyAccount<TAccountPlatformConfig>\n : TAccountPlatformConfig,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountAllowedMint extends string\n ? ReadonlyAccount<TAccountAllowedMint>\n : TAccountAllowedMint,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountAssociatedTokenProgram extends string\n ? ReadonlyAccount<TAccountAssociatedTokenProgram>\n : TAccountAssociatedTokenProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateMarketInstructionData = {\n discriminator: ReadonlyUint8Array;\n marketIndex: bigint;\n marketAuthority: Address;\n allowUnstakingEarly: boolean;\n authorizedReaderPubkey: Array<number>;\n revealPeriodAuthority: Address;\n earlinessCutoffSeconds: bigint;\n earlinessMultiplier: number;\n minStakeAmount: bigint;\n creatorFeeClaimer: Address;\n};\n\nexport type CreateMarketInstructionDataArgs = {\n marketIndex: number | bigint;\n marketAuthority: Address;\n allowUnstakingEarly: boolean;\n authorizedReaderPubkey: Array<number>;\n revealPeriodAuthority: Address;\n earlinessCutoffSeconds: number | bigint;\n earlinessMultiplier: number;\n minStakeAmount: number | bigint;\n creatorFeeClaimer: Address;\n};\n\nexport function getCreateMarketInstructionDataEncoder(): FixedSizeEncoder<CreateMarketInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['marketIndex', getU64Encoder()],\n ['marketAuthority', getAddressEncoder()],\n ['allowUnstakingEarly', getBooleanEncoder()],\n ['authorizedReaderPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['revealPeriodAuthority', getAddressEncoder()],\n ['earlinessCutoffSeconds', getU64Encoder()],\n ['earlinessMultiplier', getU16Encoder()],\n ['minStakeAmount', getU64Encoder()],\n ['creatorFeeClaimer', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: CREATE_MARKET_DISCRIMINATOR })\n );\n}\n\nexport function getCreateMarketInstructionDataDecoder(): FixedSizeDecoder<CreateMarketInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['marketIndex', getU64Decoder()],\n ['marketAuthority', getAddressDecoder()],\n ['allowUnstakingEarly', getBooleanDecoder()],\n ['authorizedReaderPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['revealPeriodAuthority', getAddressDecoder()],\n ['earlinessCutoffSeconds', getU64Decoder()],\n ['earlinessMultiplier', getU16Decoder()],\n ['minStakeAmount', getU64Decoder()],\n ['creatorFeeClaimer', getAddressDecoder()],\n ]);\n}\n\nexport function getCreateMarketInstructionDataCodec(): FixedSizeCodec<\n CreateMarketInstructionDataArgs,\n CreateMarketInstructionData\n> {\n return combineCodec(\n getCreateMarketInstructionDataEncoder(),\n getCreateMarketInstructionDataDecoder()\n );\n}\n\nexport type CreateMarketAsyncInput<\n TAccountCreator extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarket extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountAllowedMint extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n creator: TransactionSigner<TAccountCreator>;\n platformConfig: Address<TAccountPlatformConfig>;\n tokenMint: Address<TAccountTokenMint>;\n market?: Address<TAccountMarket>;\n /** This ATA holds all of the market's program-held tokens (stakes, rewards, fees). */\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n allowedMint?: Address<TAccountAllowedMint>;\n tokenProgram: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n marketIndex: CreateMarketInstructionDataArgs['marketIndex'];\n marketAuthority: CreateMarketInstructionDataArgs['marketAuthority'];\n allowUnstakingEarly: CreateMarketInstructionDataArgs['allowUnstakingEarly'];\n authorizedReaderPubkey: CreateMarketInstructionDataArgs['authorizedReaderPubkey'];\n revealPeriodAuthority: CreateMarketInstructionDataArgs['revealPeriodAuthority'];\n earlinessCutoffSeconds: CreateMarketInstructionDataArgs['earlinessCutoffSeconds'];\n earlinessMultiplier: CreateMarketInstructionDataArgs['earlinessMultiplier'];\n minStakeAmount: CreateMarketInstructionDataArgs['minStakeAmount'];\n creatorFeeClaimer: CreateMarketInstructionDataArgs['creatorFeeClaimer'];\n};\n\nexport async function getCreateMarketInstructionAsync<\n TAccountCreator extends string,\n TAccountPlatformConfig extends string,\n TAccountTokenMint extends string,\n TAccountMarket extends string,\n TAccountMarketTokenAta extends string,\n TAccountAllowedMint extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CreateMarketAsyncInput<\n TAccountCreator,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountAllowedMint,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CreateMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountAllowedMint,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n creator: { value: input.creator ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n allowedMint: { value: input.allowedMint ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n associatedTokenProgram: {\n value: input.associatedTokenProgram ?? null,\n isWritable: false,\n },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.market.value) {\n accounts.market.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 111, 112, 112, 111, 114, 116, 117, 110, 105, 116, 121, 95, 109, 97,\n 114, 107, 101, 116,\n ])\n ),\n getAddressEncoder().encode(\n expectAddress(accounts.platformConfig.value)\n ),\n getAddressEncoder().encode(expectAddress(accounts.creator.value)),\n getU64Encoder().encode(expectSome(args.marketIndex)),\n ],\n });\n }\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.allowedMint.value) {\n accounts.allowedMint.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 108, 108, 111, 119, 101, 100, 95, 109, 105, 110, 116,\n ])\n ),\n getAddressEncoder().encode(\n expectAddress(accounts.platformConfig.value)\n ),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.associatedTokenProgram.value) {\n accounts.associatedTokenProgram.value =\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.creator),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.allowedMint),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCreateMarketInstructionDataEncoder().encode(\n args as CreateMarketInstructionDataArgs\n ),\n programAddress,\n } as CreateMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountAllowedMint,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type CreateMarketInput<\n TAccountCreator extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarket extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountAllowedMint extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n creator: TransactionSigner<TAccountCreator>;\n platformConfig: Address<TAccountPlatformConfig>;\n tokenMint: Address<TAccountTokenMint>;\n market: Address<TAccountMarket>;\n /** This ATA holds all of the market's program-held tokens (stakes, rewards, fees). */\n marketTokenAta: Address<TAccountMarketTokenAta>;\n allowedMint: Address<TAccountAllowedMint>;\n tokenProgram: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n marketIndex: CreateMarketInstructionDataArgs['marketIndex'];\n marketAuthority: CreateMarketInstructionDataArgs['marketAuthority'];\n allowUnstakingEarly: CreateMarketInstructionDataArgs['allowUnstakingEarly'];\n authorizedReaderPubkey: CreateMarketInstructionDataArgs['authorizedReaderPubkey'];\n revealPeriodAuthority: CreateMarketInstructionDataArgs['revealPeriodAuthority'];\n earlinessCutoffSeconds: CreateMarketInstructionDataArgs['earlinessCutoffSeconds'];\n earlinessMultiplier: CreateMarketInstructionDataArgs['earlinessMultiplier'];\n minStakeAmount: CreateMarketInstructionDataArgs['minStakeAmount'];\n creatorFeeClaimer: CreateMarketInstructionDataArgs['creatorFeeClaimer'];\n};\n\nexport function getCreateMarketInstruction<\n TAccountCreator extends string,\n TAccountPlatformConfig extends string,\n TAccountTokenMint extends string,\n TAccountMarket extends string,\n TAccountMarketTokenAta extends string,\n TAccountAllowedMint extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CreateMarketInput<\n TAccountCreator,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountAllowedMint,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CreateMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountAllowedMint,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n creator: { value: input.creator ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n allowedMint: { value: input.allowedMint ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n associatedTokenProgram: {\n value: input.associatedTokenProgram ?? null,\n isWritable: false,\n },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.associatedTokenProgram.value) {\n accounts.associatedTokenProgram.value =\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.creator),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.allowedMint),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCreateMarketInstructionDataEncoder().encode(\n args as CreateMarketInstructionDataArgs\n ),\n programAddress,\n } as CreateMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountAllowedMint,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCreateMarketInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n creator: TAccountMetas[0];\n platformConfig: TAccountMetas[1];\n tokenMint: TAccountMetas[2];\n market: TAccountMetas[3];\n /** This ATA holds all of the market's program-held tokens (stakes, rewards, fees). */\n marketTokenAta: TAccountMetas[4];\n allowedMint: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n associatedTokenProgram: TAccountMetas[7];\n systemProgram: TAccountMetas[8];\n };\n data: CreateMarketInstructionData;\n};\n\nexport function parseCreateMarketInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedCreateMarketInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 9) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n creator: getNextAccount(),\n platformConfig: getNextAccount(),\n tokenMint: getNextAccount(),\n market: getNextAccount(),\n marketTokenAta: getNextAccount(),\n allowedMint: getNextAccount(),\n tokenProgram: getNextAccount(),\n associatedTokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCreateMarketInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const END_REVEAL_PERIOD_DISCRIMINATOR = new Uint8Array([\n 144, 81, 42, 65, 127, 60, 134, 92,\n]);\n\nexport function getEndRevealPeriodDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n END_REVEAL_PERIOD_DISCRIMINATOR\n );\n}\n\nexport type EndRevealPeriodInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? ReadonlySignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type EndRevealPeriodInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type EndRevealPeriodInstructionDataArgs = {};\n\nexport function getEndRevealPeriodInstructionDataEncoder(): FixedSizeEncoder<EndRevealPeriodInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: END_REVEAL_PERIOD_DISCRIMINATOR })\n );\n}\n\nexport function getEndRevealPeriodInstructionDataDecoder(): FixedSizeDecoder<EndRevealPeriodInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getEndRevealPeriodInstructionDataCodec(): FixedSizeCodec<\n EndRevealPeriodInstructionDataArgs,\n EndRevealPeriodInstructionData\n> {\n return combineCodec(\n getEndRevealPeriodInstructionDataEncoder(),\n getEndRevealPeriodInstructionDataDecoder()\n );\n}\n\nexport type EndRevealPeriodInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n};\n\nexport function getEndRevealPeriodInstruction<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: EndRevealPeriodInput<TAccountSigner, TAccountMarket>,\n config?: { programAddress?: TProgramAddress }\n): EndRevealPeriodInstruction<TProgramAddress, TAccountSigner, TAccountMarket> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.market),\n ],\n data: getEndRevealPeriodInstructionDataEncoder().encode({}),\n programAddress,\n } as EndRevealPeriodInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket\n >);\n}\n\nexport type ParsedEndRevealPeriodInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n market: TAccountMetas[1];\n };\n data: EndRevealPeriodInstructionData;\n};\n\nexport function parseEndRevealPeriodInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedEndRevealPeriodInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: { signer: getNextAccount(), market: getNextAccount() },\n data: getEndRevealPeriodInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const FINALIZE_REVEAL_STAKE_DISCRIMINATOR = new Uint8Array([\n 92, 201, 94, 219, 117, 53, 255, 230,\n]);\n\nexport function getFinalizeRevealStakeDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n FINALIZE_REVEAL_STAKE_DISCRIMINATOR\n );\n}\n\nexport type FinalizeRevealStakeInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountOwner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountOption extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? WritableSignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountOwner extends string\n ? ReadonlyAccount<TAccountOwner>\n : TAccountOwner,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountOption extends string\n ? WritableAccount<TAccountOption>\n : TAccountOption,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type FinalizeRevealStakeInstructionData = {\n discriminator: ReadonlyUint8Array;\n optionId: bigint;\n stakeAccountId: number;\n};\n\nexport type FinalizeRevealStakeInstructionDataArgs = {\n optionId: number | bigint;\n stakeAccountId: number;\n};\n\nexport function getFinalizeRevealStakeInstructionDataEncoder(): FixedSizeEncoder<FinalizeRevealStakeInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['optionId', getU64Encoder()],\n ['stakeAccountId', getU32Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: FINALIZE_REVEAL_STAKE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getFinalizeRevealStakeInstructionDataDecoder(): FixedSizeDecoder<FinalizeRevealStakeInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['optionId', getU64Decoder()],\n ['stakeAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getFinalizeRevealStakeInstructionDataCodec(): FixedSizeCodec<\n FinalizeRevealStakeInstructionDataArgs,\n FinalizeRevealStakeInstructionData\n> {\n return combineCodec(\n getFinalizeRevealStakeInstructionDataEncoder(),\n getFinalizeRevealStakeInstructionDataDecoder()\n );\n}\n\nexport type FinalizeRevealStakeAsyncInput<\n TAccountSigner extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountOption extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n owner: Address<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount?: Address<TAccountStakeAccount>;\n option?: Address<TAccountOption>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionId: FinalizeRevealStakeInstructionDataArgs['optionId'];\n stakeAccountId: FinalizeRevealStakeInstructionDataArgs['stakeAccountId'];\n};\n\nexport async function getFinalizeRevealStakeInstructionAsync<\n TAccountSigner extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountOption extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: FinalizeRevealStakeAsyncInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n FinalizeRevealStakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.stakeAccount.value) {\n accounts.stakeAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 116, 97, 107, 101, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.owner.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU32Encoder().encode(expectSome(args.stakeAccountId)),\n ],\n });\n }\n if (!accounts.option.value) {\n accounts.option.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([111, 112, 116, 105, 111, 110])\n ),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU64Encoder().encode(expectSome(args.optionId)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getFinalizeRevealStakeInstructionDataEncoder().encode(\n args as FinalizeRevealStakeInstructionDataArgs\n ),\n programAddress,\n } as FinalizeRevealStakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type FinalizeRevealStakeInput<\n TAccountSigner extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountOption extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n owner: Address<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n option: Address<TAccountOption>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionId: FinalizeRevealStakeInstructionDataArgs['optionId'];\n stakeAccountId: FinalizeRevealStakeInstructionDataArgs['stakeAccountId'];\n};\n\nexport function getFinalizeRevealStakeInstruction<\n TAccountSigner extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountOption extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: FinalizeRevealStakeInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): FinalizeRevealStakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getFinalizeRevealStakeInstructionDataEncoder().encode(\n args as FinalizeRevealStakeInstructionDataArgs\n ),\n programAddress,\n } as FinalizeRevealStakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedFinalizeRevealStakeInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n owner: TAccountMetas[1];\n market: TAccountMetas[2];\n stakeAccount: TAccountMetas[3];\n option: TAccountMetas[4];\n systemProgram: TAccountMetas[5];\n };\n data: FinalizeRevealStakeInstructionData;\n};\n\nexport function parseFinalizeRevealStakeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedFinalizeRevealStakeInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 6) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n owner: getNextAccount(),\n market: getNextAccount(),\n stakeAccount: getNextAccount(),\n option: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getFinalizeRevealStakeInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const INIT_ALLOWED_MINT_DISCRIMINATOR = new Uint8Array([\n 215, 70, 3, 5, 42, 229, 151, 10,\n]);\n\nexport function getInitAllowedMintDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INIT_ALLOWED_MINT_DISCRIMINATOR\n );\n}\n\nexport type InitAllowedMintInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountUpdateAuthority extends string | AccountMeta<string> = string,\n TAccountPlatformConfig extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountAllowedMint extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountUpdateAuthority extends string\n ? WritableSignerAccount<TAccountUpdateAuthority> &\n AccountSignerMeta<TAccountUpdateAuthority>\n : TAccountUpdateAuthority,\n TAccountPlatformConfig extends string\n ? ReadonlyAccount<TAccountPlatformConfig>\n : TAccountPlatformConfig,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountAllowedMint extends string\n ? WritableAccount<TAccountAllowedMint>\n : TAccountAllowedMint,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitAllowedMintInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type InitAllowedMintInstructionDataArgs = {};\n\nexport function getInitAllowedMintInstructionDataEncoder(): FixedSizeEncoder<InitAllowedMintInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: INIT_ALLOWED_MINT_DISCRIMINATOR })\n );\n}\n\nexport function getInitAllowedMintInstructionDataDecoder(): FixedSizeDecoder<InitAllowedMintInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getInitAllowedMintInstructionDataCodec(): FixedSizeCodec<\n InitAllowedMintInstructionDataArgs,\n InitAllowedMintInstructionData\n> {\n return combineCodec(\n getInitAllowedMintInstructionDataEncoder(),\n getInitAllowedMintInstructionDataDecoder()\n );\n}\n\nexport type InitAllowedMintAsyncInput<\n TAccountUpdateAuthority extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountTokenMint extends string = string,\n TAccountAllowedMint extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n updateAuthority: TransactionSigner<TAccountUpdateAuthority>;\n platformConfig: Address<TAccountPlatformConfig>;\n tokenMint: Address<TAccountTokenMint>;\n allowedMint?: Address<TAccountAllowedMint>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport async function getInitAllowedMintInstructionAsync<\n TAccountUpdateAuthority extends string,\n TAccountPlatformConfig extends string,\n TAccountTokenMint extends string,\n TAccountAllowedMint extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitAllowedMintAsyncInput<\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountAllowedMint,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n InitAllowedMintInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountAllowedMint,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n updateAuthority: { value: input.updateAuthority ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n allowedMint: { value: input.allowedMint ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.allowedMint.value) {\n accounts.allowedMint.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 108, 108, 111, 119, 101, 100, 95, 109, 105, 110, 116,\n ])\n ),\n getAddressEncoder().encode(\n expectAddress(accounts.platformConfig.value)\n ),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.updateAuthority),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.allowedMint),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitAllowedMintInstructionDataEncoder().encode({}),\n programAddress,\n } as InitAllowedMintInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountAllowedMint,\n TAccountSystemProgram\n >);\n}\n\nexport type InitAllowedMintInput<\n TAccountUpdateAuthority extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountTokenMint extends string = string,\n TAccountAllowedMint extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n updateAuthority: TransactionSigner<TAccountUpdateAuthority>;\n platformConfig: Address<TAccountPlatformConfig>;\n tokenMint: Address<TAccountTokenMint>;\n allowedMint: Address<TAccountAllowedMint>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport function getInitAllowedMintInstruction<\n TAccountUpdateAuthority extends string,\n TAccountPlatformConfig extends string,\n TAccountTokenMint extends string,\n TAccountAllowedMint extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitAllowedMintInput<\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountAllowedMint,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): InitAllowedMintInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountAllowedMint,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n updateAuthority: { value: input.updateAuthority ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n allowedMint: { value: input.allowedMint ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.updateAuthority),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.allowedMint),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitAllowedMintInstructionDataEncoder().encode({}),\n programAddress,\n } as InitAllowedMintInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountAllowedMint,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedInitAllowedMintInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n updateAuthority: TAccountMetas[0];\n platformConfig: TAccountMetas[1];\n tokenMint: TAccountMetas[2];\n allowedMint: TAccountMetas[3];\n systemProgram: TAccountMetas[4];\n };\n data: InitAllowedMintInstructionData;\n};\n\nexport function parseInitAllowedMintInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedInitAllowedMintInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n updateAuthority: getNextAccount(),\n platformConfig: getNextAccount(),\n tokenMint: getNextAccount(),\n allowedMint: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitAllowedMintInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const INIT_PLATFORM_CONFIG_DISCRIMINATOR = new Uint8Array([\n 101, 52, 47, 49, 156, 16, 32, 118,\n]);\n\nexport function getInitPlatformConfigDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INIT_PLATFORM_CONFIG_DISCRIMINATOR\n );\n}\n\nexport type InitPlatformConfigInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountPlatformConfig extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountPlatformConfig extends string\n ? WritableAccount<TAccountPlatformConfig>\n : TAccountPlatformConfig,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitPlatformConfigInstructionData = {\n discriminator: ReadonlyUint8Array;\n name: string;\n platformFeeBp: number;\n rewardPoolFeeBp: number;\n creatorFeeBp: number;\n feeClaimAuthority: Address;\n minTimeToStakeSeconds: bigint;\n minRevealPeriodSeconds: bigint;\n maxRevealPeriodSeconds: bigint;\n marketResolutionDeadlineSeconds: bigint;\n};\n\nexport type InitPlatformConfigInstructionDataArgs = {\n name: string;\n platformFeeBp: number;\n rewardPoolFeeBp: number;\n creatorFeeBp: number;\n feeClaimAuthority: Address;\n minTimeToStakeSeconds: number | bigint;\n minRevealPeriodSeconds: number | bigint;\n maxRevealPeriodSeconds: number | bigint;\n marketResolutionDeadlineSeconds: number | bigint;\n};\n\nexport function getInitPlatformConfigInstructionDataEncoder(): Encoder<InitPlatformConfigInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n ['platformFeeBp', getU16Encoder()],\n ['rewardPoolFeeBp', getU16Encoder()],\n ['creatorFeeBp', getU16Encoder()],\n ['feeClaimAuthority', getAddressEncoder()],\n ['minTimeToStakeSeconds', getU64Encoder()],\n ['minRevealPeriodSeconds', getU64Encoder()],\n ['maxRevealPeriodSeconds', getU64Encoder()],\n ['marketResolutionDeadlineSeconds', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: INIT_PLATFORM_CONFIG_DISCRIMINATOR })\n );\n}\n\nexport function getInitPlatformConfigInstructionDataDecoder(): Decoder<InitPlatformConfigInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ['platformFeeBp', getU16Decoder()],\n ['rewardPoolFeeBp', getU16Decoder()],\n ['creatorFeeBp', getU16Decoder()],\n ['feeClaimAuthority', getAddressDecoder()],\n ['minTimeToStakeSeconds', getU64Decoder()],\n ['minRevealPeriodSeconds', getU64Decoder()],\n ['maxRevealPeriodSeconds', getU64Decoder()],\n ['marketResolutionDeadlineSeconds', getU64Decoder()],\n ]);\n}\n\nexport function getInitPlatformConfigInstructionDataCodec(): Codec<\n InitPlatformConfigInstructionDataArgs,\n InitPlatformConfigInstructionData\n> {\n return combineCodec(\n getInitPlatformConfigInstructionDataEncoder(),\n getInitPlatformConfigInstructionDataDecoder()\n );\n}\n\nexport type InitPlatformConfigAsyncInput<\n TAccountPayer extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n platformConfig?: Address<TAccountPlatformConfig>;\n systemProgram?: Address<TAccountSystemProgram>;\n name: InitPlatformConfigInstructionDataArgs['name'];\n platformFeeBp: InitPlatformConfigInstructionDataArgs['platformFeeBp'];\n rewardPoolFeeBp: InitPlatformConfigInstructionDataArgs['rewardPoolFeeBp'];\n creatorFeeBp: InitPlatformConfigInstructionDataArgs['creatorFeeBp'];\n feeClaimAuthority: InitPlatformConfigInstructionDataArgs['feeClaimAuthority'];\n minTimeToStakeSeconds: InitPlatformConfigInstructionDataArgs['minTimeToStakeSeconds'];\n minRevealPeriodSeconds: InitPlatformConfigInstructionDataArgs['minRevealPeriodSeconds'];\n maxRevealPeriodSeconds: InitPlatformConfigInstructionDataArgs['maxRevealPeriodSeconds'];\n marketResolutionDeadlineSeconds: InitPlatformConfigInstructionDataArgs['marketResolutionDeadlineSeconds'];\n};\n\nexport async function getInitPlatformConfigInstructionAsync<\n TAccountPayer extends string,\n TAccountPlatformConfig extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitPlatformConfigAsyncInput<\n TAccountPayer,\n TAccountPlatformConfig,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n InitPlatformConfigInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountPlatformConfig,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.platformConfig.value) {\n accounts.platformConfig.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 112, 108, 97, 116, 102, 111, 114, 109, 95, 99, 111, 110, 102, 105,\n 103,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.payer.value)),\n getUtf8Encoder().encode(expectSome(args.name)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitPlatformConfigInstructionDataEncoder().encode(\n args as InitPlatformConfigInstructionDataArgs\n ),\n programAddress,\n } as InitPlatformConfigInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountPlatformConfig,\n TAccountSystemProgram\n >);\n}\n\nexport type InitPlatformConfigInput<\n TAccountPayer extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n platformConfig: Address<TAccountPlatformConfig>;\n systemProgram?: Address<TAccountSystemProgram>;\n name: InitPlatformConfigInstructionDataArgs['name'];\n platformFeeBp: InitPlatformConfigInstructionDataArgs['platformFeeBp'];\n rewardPoolFeeBp: InitPlatformConfigInstructionDataArgs['rewardPoolFeeBp'];\n creatorFeeBp: InitPlatformConfigInstructionDataArgs['creatorFeeBp'];\n feeClaimAuthority: InitPlatformConfigInstructionDataArgs['feeClaimAuthority'];\n minTimeToStakeSeconds: InitPlatformConfigInstructionDataArgs['minTimeToStakeSeconds'];\n minRevealPeriodSeconds: InitPlatformConfigInstructionDataArgs['minRevealPeriodSeconds'];\n maxRevealPeriodSeconds: InitPlatformConfigInstructionDataArgs['maxRevealPeriodSeconds'];\n marketResolutionDeadlineSeconds: InitPlatformConfigInstructionDataArgs['marketResolutionDeadlineSeconds'];\n};\n\nexport function getInitPlatformConfigInstruction<\n TAccountPayer extends string,\n TAccountPlatformConfig extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitPlatformConfigInput<\n TAccountPayer,\n TAccountPlatformConfig,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): InitPlatformConfigInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountPlatformConfig,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitPlatformConfigInstructionDataEncoder().encode(\n args as InitPlatformConfigInstructionDataArgs\n ),\n programAddress,\n } as InitPlatformConfigInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountPlatformConfig,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedInitPlatformConfigInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n payer: TAccountMetas[0];\n platformConfig: TAccountMetas[1];\n systemProgram: TAccountMetas[2];\n };\n data: InitPlatformConfigInstructionData;\n};\n\nexport function parseInitPlatformConfigInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedInitPlatformConfigInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n platformConfig: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitPlatformConfigInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const INIT_STAKE_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 132, 171, 255, 149, 163, 37, 220, 45,\n]);\n\nexport function getInitStakeAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INIT_STAKE_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type InitStakeAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountOwner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountOwner extends string\n ? ReadonlyAccount<TAccountOwner>\n : TAccountOwner,\n TAccountMarket extends string\n ? ReadonlyAccount<TAccountMarket>\n : TAccountMarket,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitStakeAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n stakeAccountId: number;\n};\n\nexport type InitStakeAccountInstructionDataArgs = { stakeAccountId: number };\n\nexport function getInitStakeAccountInstructionDataEncoder(): FixedSizeEncoder<InitStakeAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['stakeAccountId', getU32Encoder()],\n ]),\n (value) => ({ ...value, discriminator: INIT_STAKE_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getInitStakeAccountInstructionDataDecoder(): FixedSizeDecoder<InitStakeAccountInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['stakeAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getInitStakeAccountInstructionDataCodec(): FixedSizeCodec<\n InitStakeAccountInstructionDataArgs,\n InitStakeAccountInstructionData\n> {\n return combineCodec(\n getInitStakeAccountInstructionDataEncoder(),\n getInitStakeAccountInstructionDataDecoder()\n );\n}\n\nexport type InitStakeAccountAsyncInput<\n TAccountPayer extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n /** No signature required: this instruction is permissionless. */\n owner: Address<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount?: Address<TAccountStakeAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n stakeAccountId: InitStakeAccountInstructionDataArgs['stakeAccountId'];\n};\n\nexport async function getInitStakeAccountInstructionAsync<\n TAccountPayer extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitStakeAccountAsyncInput<\n TAccountPayer,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n InitStakeAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: false },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.stakeAccount.value) {\n accounts.stakeAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 116, 97, 107, 101, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.owner.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU32Encoder().encode(expectSome(args.stakeAccountId)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitStakeAccountInstructionDataEncoder().encode(\n args as InitStakeAccountInstructionDataArgs\n ),\n programAddress,\n } as InitStakeAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSystemProgram\n >);\n}\n\nexport type InitStakeAccountInput<\n TAccountPayer extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n /** No signature required: this instruction is permissionless. */\n owner: Address<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n stakeAccountId: InitStakeAccountInstructionDataArgs['stakeAccountId'];\n};\n\nexport function getInitStakeAccountInstruction<\n TAccountPayer extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitStakeAccountInput<\n TAccountPayer,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): InitStakeAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: false },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitStakeAccountInstructionDataEncoder().encode(\n args as InitStakeAccountInstructionDataArgs\n ),\n programAddress,\n } as InitStakeAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedInitStakeAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n payer: TAccountMetas[0];\n /** No signature required: this instruction is permissionless. */\n owner: TAccountMetas[1];\n market: TAccountMetas[2];\n stakeAccount: TAccountMetas[3];\n systemProgram: TAccountMetas[4];\n };\n data: InitStakeAccountInstructionData;\n};\n\nexport function parseInitStakeAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedInitStakeAccountInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n owner: getNextAccount(),\n market: getNextAccount(),\n stakeAccount: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitStakeAccountInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const OPEN_MARKET_DISCRIMINATOR = new Uint8Array([\n 116, 19, 123, 75, 217, 244, 69, 44,\n]);\n\nexport function getOpenMarketDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(OPEN_MARKET_DISCRIMINATOR);\n}\n\nexport type OpenMarketInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMarketAuthority extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountPlatformConfig extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountMarketAuthority extends string\n ? ReadonlySignerAccount<TAccountMarketAuthority> &\n AccountSignerMeta<TAccountMarketAuthority>\n : TAccountMarketAuthority,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountPlatformConfig extends string\n ? ReadonlyAccount<TAccountPlatformConfig>\n : TAccountPlatformConfig,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type OpenMarketInstructionData = {\n discriminator: ReadonlyUint8Array;\n timeToStake: bigint;\n};\n\nexport type OpenMarketInstructionDataArgs = { timeToStake: number | bigint };\n\nexport function getOpenMarketInstructionDataEncoder(): FixedSizeEncoder<OpenMarketInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['timeToStake', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: OPEN_MARKET_DISCRIMINATOR })\n );\n}\n\nexport function getOpenMarketInstructionDataDecoder(): FixedSizeDecoder<OpenMarketInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['timeToStake', getU64Decoder()],\n ]);\n}\n\nexport function getOpenMarketInstructionDataCodec(): FixedSizeCodec<\n OpenMarketInstructionDataArgs,\n OpenMarketInstructionData\n> {\n return combineCodec(\n getOpenMarketInstructionDataEncoder(),\n getOpenMarketInstructionDataDecoder()\n );\n}\n\nexport type OpenMarketInput<\n TAccountMarketAuthority extends string = string,\n TAccountMarket extends string = string,\n TAccountPlatformConfig extends string = string,\n> = {\n marketAuthority: TransactionSigner<TAccountMarketAuthority>;\n market: Address<TAccountMarket>;\n platformConfig: Address<TAccountPlatformConfig>;\n timeToStake: OpenMarketInstructionDataArgs['timeToStake'];\n};\n\nexport function getOpenMarketInstruction<\n TAccountMarketAuthority extends string,\n TAccountMarket extends string,\n TAccountPlatformConfig extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: OpenMarketInput<\n TAccountMarketAuthority,\n TAccountMarket,\n TAccountPlatformConfig\n >,\n config?: { programAddress?: TProgramAddress }\n): OpenMarketInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket,\n TAccountPlatformConfig\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n marketAuthority: {\n value: input.marketAuthority ?? null,\n isWritable: false,\n },\n market: { value: input.market ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.marketAuthority),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.platformConfig),\n ],\n data: getOpenMarketInstructionDataEncoder().encode(\n args as OpenMarketInstructionDataArgs\n ),\n programAddress,\n } as OpenMarketInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket,\n TAccountPlatformConfig\n >);\n}\n\nexport type ParsedOpenMarketInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n marketAuthority: TAccountMetas[0];\n market: TAccountMetas[1];\n platformConfig: TAccountMetas[2];\n };\n data: OpenMarketInstructionData;\n};\n\nexport function parseOpenMarketInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedOpenMarketInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n marketAuthority: getNextAccount(),\n market: getNextAccount(),\n platformConfig: getNextAccount(),\n },\n data: getOpenMarketInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const PAUSE_STAKING_DISCRIMINATOR = new Uint8Array([\n 245, 191, 35, 58, 88, 250, 229, 60,\n]);\n\nexport function getPauseStakingDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n PAUSE_STAKING_DISCRIMINATOR\n );\n}\n\nexport type PauseStakingInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMarketAuthority extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountMarketAuthority extends string\n ? ReadonlySignerAccount<TAccountMarketAuthority> &\n AccountSignerMeta<TAccountMarketAuthority>\n : TAccountMarketAuthority,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type PauseStakingInstructionData = { discriminator: ReadonlyUint8Array };\n\nexport type PauseStakingInstructionDataArgs = {};\n\nexport function getPauseStakingInstructionDataEncoder(): FixedSizeEncoder<PauseStakingInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: PAUSE_STAKING_DISCRIMINATOR })\n );\n}\n\nexport function getPauseStakingInstructionDataDecoder(): FixedSizeDecoder<PauseStakingInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getPauseStakingInstructionDataCodec(): FixedSizeCodec<\n PauseStakingInstructionDataArgs,\n PauseStakingInstructionData\n> {\n return combineCodec(\n getPauseStakingInstructionDataEncoder(),\n getPauseStakingInstructionDataDecoder()\n );\n}\n\nexport type PauseStakingInput<\n TAccountMarketAuthority extends string = string,\n TAccountMarket extends string = string,\n> = {\n marketAuthority: TransactionSigner<TAccountMarketAuthority>;\n market: Address<TAccountMarket>;\n};\n\nexport function getPauseStakingInstruction<\n TAccountMarketAuthority extends string,\n TAccountMarket extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: PauseStakingInput<TAccountMarketAuthority, TAccountMarket>,\n config?: { programAddress?: TProgramAddress }\n): PauseStakingInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n marketAuthority: {\n value: input.marketAuthority ?? null,\n isWritable: false,\n },\n market: { value: input.market ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.marketAuthority),\n getAccountMeta(accounts.market),\n ],\n data: getPauseStakingInstructionDataEncoder().encode({}),\n programAddress,\n } as PauseStakingInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket\n >);\n}\n\nexport type ParsedPauseStakingInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n marketAuthority: TAccountMetas[0];\n market: TAccountMetas[1];\n };\n data: PauseStakingInstructionData;\n};\n\nexport function parsePauseStakingInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedPauseStakingInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: { marketAuthority: getNextAccount(), market: getNextAccount() },\n data: getPauseStakingInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const RESOLVE_MARKET_DISCRIMINATOR = new Uint8Array([\n 155, 23, 80, 173, 46, 74, 23, 239,\n]);\n\nexport function getResolveMarketDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n RESOLVE_MARKET_DISCRIMINATOR\n );\n}\n\nexport type ResolveMarketInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMarketAuthority extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountMarketAuthority extends string\n ? ReadonlySignerAccount<TAccountMarketAuthority> &\n AccountSignerMeta<TAccountMarketAuthority>\n : TAccountMarketAuthority,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ResolveMarketInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type ResolveMarketInstructionDataArgs = {};\n\nexport function getResolveMarketInstructionDataEncoder(): FixedSizeEncoder<ResolveMarketInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: RESOLVE_MARKET_DISCRIMINATOR })\n );\n}\n\nexport function getResolveMarketInstructionDataDecoder(): FixedSizeDecoder<ResolveMarketInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getResolveMarketInstructionDataCodec(): FixedSizeCodec<\n ResolveMarketInstructionDataArgs,\n ResolveMarketInstructionData\n> {\n return combineCodec(\n getResolveMarketInstructionDataEncoder(),\n getResolveMarketInstructionDataDecoder()\n );\n}\n\nexport type ResolveMarketInput<\n TAccountMarketAuthority extends string = string,\n TAccountMarket extends string = string,\n> = {\n marketAuthority: TransactionSigner<TAccountMarketAuthority>;\n market: Address<TAccountMarket>;\n};\n\nexport function getResolveMarketInstruction<\n TAccountMarketAuthority extends string,\n TAccountMarket extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ResolveMarketInput<TAccountMarketAuthority, TAccountMarket>,\n config?: { programAddress?: TProgramAddress }\n): ResolveMarketInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n marketAuthority: {\n value: input.marketAuthority ?? null,\n isWritable: false,\n },\n market: { value: input.market ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.marketAuthority),\n getAccountMeta(accounts.market),\n ],\n data: getResolveMarketInstructionDataEncoder().encode({}),\n programAddress,\n } as ResolveMarketInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket\n >);\n}\n\nexport type ParsedResolveMarketInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n marketAuthority: TAccountMetas[0];\n market: TAccountMetas[1];\n };\n data: ResolveMarketInstructionData;\n};\n\nexport function parseResolveMarketInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedResolveMarketInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: { marketAuthority: getNextAccount(), market: getNextAccount() },\n data: getResolveMarketInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const RESUME_STAKING_DISCRIMINATOR = new Uint8Array([\n 31, 200, 175, 23, 211, 22, 63, 155,\n]);\n\nexport function getResumeStakingDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n RESUME_STAKING_DISCRIMINATOR\n );\n}\n\nexport type ResumeStakingInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMarketAuthority extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountMarketAuthority extends string\n ? ReadonlySignerAccount<TAccountMarketAuthority> &\n AccountSignerMeta<TAccountMarketAuthority>\n : TAccountMarketAuthority,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ResumeStakingInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type ResumeStakingInstructionDataArgs = {};\n\nexport function getResumeStakingInstructionDataEncoder(): FixedSizeEncoder<ResumeStakingInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: RESUME_STAKING_DISCRIMINATOR })\n );\n}\n\nexport function getResumeStakingInstructionDataDecoder(): FixedSizeDecoder<ResumeStakingInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getResumeStakingInstructionDataCodec(): FixedSizeCodec<\n ResumeStakingInstructionDataArgs,\n ResumeStakingInstructionData\n> {\n return combineCodec(\n getResumeStakingInstructionDataEncoder(),\n getResumeStakingInstructionDataDecoder()\n );\n}\n\nexport type ResumeStakingInput<\n TAccountMarketAuthority extends string = string,\n TAccountMarket extends string = string,\n> = {\n marketAuthority: TransactionSigner<TAccountMarketAuthority>;\n market: Address<TAccountMarket>;\n};\n\nexport function getResumeStakingInstruction<\n TAccountMarketAuthority extends string,\n TAccountMarket extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ResumeStakingInput<TAccountMarketAuthority, TAccountMarket>,\n config?: { programAddress?: TProgramAddress }\n): ResumeStakingInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n marketAuthority: {\n value: input.marketAuthority ?? null,\n isWritable: false,\n },\n market: { value: input.market ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.marketAuthority),\n getAccountMeta(accounts.market),\n ],\n data: getResumeStakingInstructionDataEncoder().encode({}),\n programAddress,\n } as ResumeStakingInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket\n >);\n}\n\nexport type ParsedResumeStakingInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n marketAuthority: TAccountMetas[0];\n market: TAccountMetas[1];\n };\n data: ResumeStakingInstructionData;\n};\n\nexport function parseResumeStakingInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedResumeStakingInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: { marketAuthority: getNextAccount(), market: getNextAccount() },\n data: getResumeStakingInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const REVEAL_STAKE_DISCRIMINATOR = new Uint8Array([\n 107, 229, 210, 77, 126, 255, 243, 188,\n]);\n\nexport function getRevealStakeDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n REVEAL_STAKE_DISCRIMINATOR\n );\n}\n\nexport type RevealStakeInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountOwner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountSignPdaAccount extends string | AccountMeta<string> = string,\n TAccountMxeAccount extends string | AccountMeta<string> = string,\n TAccountMempoolAccount extends string | AccountMeta<string> = string,\n TAccountExecutingPool extends string | AccountMeta<string> = string,\n TAccountComputationAccount extends string | AccountMeta<string> = string,\n TAccountCompDefAccount extends string | AccountMeta<string> = string,\n TAccountClusterAccount extends string | AccountMeta<string> = string,\n TAccountPoolAccount extends string | AccountMeta<string> =\n 'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC',\n TAccountClockAccount extends string | AccountMeta<string> =\n '7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot',\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TAccountArciumProgram extends string | AccountMeta<string> =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? WritableSignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountOwner extends string\n ? ReadonlyAccount<TAccountOwner>\n : TAccountOwner,\n TAccountMarket extends string\n ? ReadonlyAccount<TAccountMarket>\n : TAccountMarket,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountSignPdaAccount extends string\n ? WritableAccount<TAccountSignPdaAccount>\n : TAccountSignPdaAccount,\n TAccountMxeAccount extends string\n ? ReadonlyAccount<TAccountMxeAccount>\n : TAccountMxeAccount,\n TAccountMempoolAccount extends string\n ? WritableAccount<TAccountMempoolAccount>\n : TAccountMempoolAccount,\n TAccountExecutingPool extends string\n ? WritableAccount<TAccountExecutingPool>\n : TAccountExecutingPool,\n TAccountComputationAccount extends string\n ? WritableAccount<TAccountComputationAccount>\n : TAccountComputationAccount,\n TAccountCompDefAccount extends string\n ? ReadonlyAccount<TAccountCompDefAccount>\n : TAccountCompDefAccount,\n TAccountClusterAccount extends string\n ? WritableAccount<TAccountClusterAccount>\n : TAccountClusterAccount,\n TAccountPoolAccount extends string\n ? WritableAccount<TAccountPoolAccount>\n : TAccountPoolAccount,\n TAccountClockAccount extends string\n ? WritableAccount<TAccountClockAccount>\n : TAccountClockAccount,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountArciumProgram extends string\n ? ReadonlyAccount<TAccountArciumProgram>\n : TAccountArciumProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type RevealStakeInstructionData = {\n discriminator: ReadonlyUint8Array;\n computationOffset: bigint;\n stakeAccountId: number;\n};\n\nexport type RevealStakeInstructionDataArgs = {\n computationOffset: number | bigint;\n stakeAccountId: number;\n};\n\nexport function getRevealStakeInstructionDataEncoder(): FixedSizeEncoder<RevealStakeInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['computationOffset', getU64Encoder()],\n ['stakeAccountId', getU32Encoder()],\n ]),\n (value) => ({ ...value, discriminator: REVEAL_STAKE_DISCRIMINATOR })\n );\n}\n\nexport function getRevealStakeInstructionDataDecoder(): FixedSizeDecoder<RevealStakeInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['computationOffset', getU64Decoder()],\n ['stakeAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getRevealStakeInstructionDataCodec(): FixedSizeCodec<\n RevealStakeInstructionDataArgs,\n RevealStakeInstructionData\n> {\n return combineCodec(\n getRevealStakeInstructionDataEncoder(),\n getRevealStakeInstructionDataDecoder()\n );\n}\n\nexport type RevealStakeAsyncInput<\n TAccountSigner extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountSignPdaAccount extends string = string,\n TAccountMxeAccount extends string = string,\n TAccountMempoolAccount extends string = string,\n TAccountExecutingPool extends string = string,\n TAccountComputationAccount extends string = string,\n TAccountCompDefAccount extends string = string,\n TAccountClusterAccount extends string = string,\n TAccountPoolAccount extends string = string,\n TAccountClockAccount extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountArciumProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n owner: Address<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount?: Address<TAccountStakeAccount>;\n signPdaAccount?: Address<TAccountSignPdaAccount>;\n mxeAccount: Address<TAccountMxeAccount>;\n mempoolAccount: Address<TAccountMempoolAccount>;\n executingPool: Address<TAccountExecutingPool>;\n computationAccount: Address<TAccountComputationAccount>;\n compDefAccount: Address<TAccountCompDefAccount>;\n clusterAccount: Address<TAccountClusterAccount>;\n poolAccount?: Address<TAccountPoolAccount>;\n clockAccount?: Address<TAccountClockAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n arciumProgram?: Address<TAccountArciumProgram>;\n computationOffset: RevealStakeInstructionDataArgs['computationOffset'];\n stakeAccountId: RevealStakeInstructionDataArgs['stakeAccountId'];\n};\n\nexport async function getRevealStakeInstructionAsync<\n TAccountSigner extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountSignPdaAccount extends string,\n TAccountMxeAccount extends string,\n TAccountMempoolAccount extends string,\n TAccountExecutingPool extends string,\n TAccountComputationAccount extends string,\n TAccountCompDefAccount extends string,\n TAccountClusterAccount extends string,\n TAccountPoolAccount extends string,\n TAccountClockAccount extends string,\n TAccountSystemProgram extends string,\n TAccountArciumProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: RevealStakeAsyncInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n RevealStakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: false },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n signPdaAccount: { value: input.signPdaAccount ?? null, isWritable: true },\n mxeAccount: { value: input.mxeAccount ?? null, isWritable: false },\n mempoolAccount: { value: input.mempoolAccount ?? null, isWritable: true },\n executingPool: { value: input.executingPool ?? null, isWritable: true },\n computationAccount: {\n value: input.computationAccount ?? null,\n isWritable: true,\n },\n compDefAccount: { value: input.compDefAccount ?? null, isWritable: false },\n clusterAccount: { value: input.clusterAccount ?? null, isWritable: true },\n poolAccount: { value: input.poolAccount ?? null, isWritable: true },\n clockAccount: { value: input.clockAccount ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n arciumProgram: { value: input.arciumProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.stakeAccount.value) {\n accounts.stakeAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 116, 97, 107, 101, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.owner.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU32Encoder().encode(expectSome(args.stakeAccountId)),\n ],\n });\n }\n if (!accounts.signPdaAccount.value) {\n accounts.signPdaAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 65, 114, 99, 105, 117, 109, 83, 105, 103, 110, 101, 114, 65, 99, 99,\n 111, 117, 110, 116,\n ])\n ),\n ],\n });\n }\n if (!accounts.poolAccount.value) {\n accounts.poolAccount.value =\n 'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC' as Address<'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC'>;\n }\n if (!accounts.clockAccount.value) {\n accounts.clockAccount.value =\n '7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot' as Address<'7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n if (!accounts.arciumProgram.value) {\n accounts.arciumProgram.value =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ' as Address<'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.signPdaAccount),\n getAccountMeta(accounts.mxeAccount),\n getAccountMeta(accounts.mempoolAccount),\n getAccountMeta(accounts.executingPool),\n getAccountMeta(accounts.computationAccount),\n getAccountMeta(accounts.compDefAccount),\n getAccountMeta(accounts.clusterAccount),\n getAccountMeta(accounts.poolAccount),\n getAccountMeta(accounts.clockAccount),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.arciumProgram),\n ],\n data: getRevealStakeInstructionDataEncoder().encode(\n args as RevealStakeInstructionDataArgs\n ),\n programAddress,\n } as RevealStakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >);\n}\n\nexport type RevealStakeInput<\n TAccountSigner extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountSignPdaAccount extends string = string,\n TAccountMxeAccount extends string = string,\n TAccountMempoolAccount extends string = string,\n TAccountExecutingPool extends string = string,\n TAccountComputationAccount extends string = string,\n TAccountCompDefAccount extends string = string,\n TAccountClusterAccount extends string = string,\n TAccountPoolAccount extends string = string,\n TAccountClockAccount extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountArciumProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n owner: Address<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n signPdaAccount: Address<TAccountSignPdaAccount>;\n mxeAccount: Address<TAccountMxeAccount>;\n mempoolAccount: Address<TAccountMempoolAccount>;\n executingPool: Address<TAccountExecutingPool>;\n computationAccount: Address<TAccountComputationAccount>;\n compDefAccount: Address<TAccountCompDefAccount>;\n clusterAccount: Address<TAccountClusterAccount>;\n poolAccount?: Address<TAccountPoolAccount>;\n clockAccount?: Address<TAccountClockAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n arciumProgram?: Address<TAccountArciumProgram>;\n computationOffset: RevealStakeInstructionDataArgs['computationOffset'];\n stakeAccountId: RevealStakeInstructionDataArgs['stakeAccountId'];\n};\n\nexport function getRevealStakeInstruction<\n TAccountSigner extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountSignPdaAccount extends string,\n TAccountMxeAccount extends string,\n TAccountMempoolAccount extends string,\n TAccountExecutingPool extends string,\n TAccountComputationAccount extends string,\n TAccountCompDefAccount extends string,\n TAccountClusterAccount extends string,\n TAccountPoolAccount extends string,\n TAccountClockAccount extends string,\n TAccountSystemProgram extends string,\n TAccountArciumProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: RevealStakeInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): RevealStakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: false },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n signPdaAccount: { value: input.signPdaAccount ?? null, isWritable: true },\n mxeAccount: { value: input.mxeAccount ?? null, isWritable: false },\n mempoolAccount: { value: input.mempoolAccount ?? null, isWritable: true },\n executingPool: { value: input.executingPool ?? null, isWritable: true },\n computationAccount: {\n value: input.computationAccount ?? null,\n isWritable: true,\n },\n compDefAccount: { value: input.compDefAccount ?? null, isWritable: false },\n clusterAccount: { value: input.clusterAccount ?? null, isWritable: true },\n poolAccount: { value: input.poolAccount ?? null, isWritable: true },\n clockAccount: { value: input.clockAccount ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n arciumProgram: { value: input.arciumProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.poolAccount.value) {\n accounts.poolAccount.value =\n 'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC' as Address<'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC'>;\n }\n if (!accounts.clockAccount.value) {\n accounts.clockAccount.value =\n '7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot' as Address<'7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n if (!accounts.arciumProgram.value) {\n accounts.arciumProgram.value =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ' as Address<'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.signPdaAccount),\n getAccountMeta(accounts.mxeAccount),\n getAccountMeta(accounts.mempoolAccount),\n getAccountMeta(accounts.executingPool),\n getAccountMeta(accounts.computationAccount),\n getAccountMeta(accounts.compDefAccount),\n getAccountMeta(accounts.clusterAccount),\n getAccountMeta(accounts.poolAccount),\n getAccountMeta(accounts.clockAccount),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.arciumProgram),\n ],\n data: getRevealStakeInstructionDataEncoder().encode(\n args as RevealStakeInstructionDataArgs\n ),\n programAddress,\n } as RevealStakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >);\n}\n\nexport type ParsedRevealStakeInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n owner: TAccountMetas[1];\n market: TAccountMetas[2];\n stakeAccount: TAccountMetas[3];\n signPdaAccount: TAccountMetas[4];\n mxeAccount: TAccountMetas[5];\n mempoolAccount: TAccountMetas[6];\n executingPool: TAccountMetas[7];\n computationAccount: TAccountMetas[8];\n compDefAccount: TAccountMetas[9];\n clusterAccount: TAccountMetas[10];\n poolAccount: TAccountMetas[11];\n clockAccount: TAccountMetas[12];\n systemProgram: TAccountMetas[13];\n arciumProgram: TAccountMetas[14];\n };\n data: RevealStakeInstructionData;\n};\n\nexport function parseRevealStakeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedRevealStakeInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 15) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n owner: getNextAccount(),\n market: getNextAccount(),\n stakeAccount: getNextAccount(),\n signPdaAccount: getNextAccount(),\n mxeAccount: getNextAccount(),\n mempoolAccount: getNextAccount(),\n executingPool: getNextAccount(),\n computationAccount: getNextAccount(),\n compDefAccount: getNextAccount(),\n clusterAccount: getNextAccount(),\n poolAccount: getNextAccount(),\n clockAccount: getNextAccount(),\n systemProgram: getNextAccount(),\n arciumProgram: getNextAccount(),\n },\n data: getRevealStakeInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getU8Decoder,\n getU8Encoder,\n getUnitDecoder,\n getUnitEncoder,\n transformEncoder,\n type AccountMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getRevealStakeOutputDecoder,\n getRevealStakeOutputEncoder,\n type RevealStakeOutput,\n type RevealStakeOutputArgs,\n} from '../types';\n\nexport const REVEAL_STAKE_CALLBACK_DISCRIMINATOR = new Uint8Array([\n 79, 19, 120, 162, 232, 39, 206, 116,\n]);\n\nexport function getRevealStakeCallbackDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n REVEAL_STAKE_CALLBACK_DISCRIMINATOR\n );\n}\n\nexport type RevealStakeCallbackInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountArciumProgram extends string | AccountMeta<string> =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ',\n TAccountCompDefAccount extends string | AccountMeta<string> = string,\n TAccountMxeAccount extends string | AccountMeta<string> = string,\n TAccountComputationAccount extends string | AccountMeta<string> = string,\n TAccountClusterAccount extends string | AccountMeta<string> = string,\n TAccountInstructionsSysvar extends string | AccountMeta<string> =\n 'Sysvar1nstructions1111111111111111111111111',\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountArciumProgram extends string\n ? ReadonlyAccount<TAccountArciumProgram>\n : TAccountArciumProgram,\n TAccountCompDefAccount extends string\n ? ReadonlyAccount<TAccountCompDefAccount>\n : TAccountCompDefAccount,\n TAccountMxeAccount extends string\n ? ReadonlyAccount<TAccountMxeAccount>\n : TAccountMxeAccount,\n TAccountComputationAccount extends string\n ? ReadonlyAccount<TAccountComputationAccount>\n : TAccountComputationAccount,\n TAccountClusterAccount extends string\n ? ReadonlyAccount<TAccountClusterAccount>\n : TAccountClusterAccount,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type RevealStakeCallbackInstructionData = {\n discriminator: ReadonlyUint8Array;\n output:\n | { __kind: 'Success'; fields: readonly [RevealStakeOutput, Array<number>] }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [RevealStakeOutput];\n };\n};\n\nexport type RevealStakeCallbackInstructionDataArgs = {\n output:\n | {\n __kind: 'Success';\n fields: readonly [RevealStakeOutputArgs, Array<number>];\n }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [RevealStakeOutputArgs];\n };\n};\n\nexport function getRevealStakeCallbackInstructionDataEncoder(): Encoder<RevealStakeCallbackInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n [\n 'output',\n getDiscriminatedUnionEncoder([\n [\n 'Success',\n getStructEncoder([\n [\n 'fields',\n getTupleEncoder([\n getRevealStakeOutputEncoder(),\n getArrayEncoder(getU8Encoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitEncoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructEncoder([\n ['fields', getTupleEncoder([getRevealStakeOutputEncoder()])],\n ]),\n ],\n ]),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: REVEAL_STAKE_CALLBACK_DISCRIMINATOR,\n })\n );\n}\n\nexport function getRevealStakeCallbackInstructionDataDecoder(): Decoder<RevealStakeCallbackInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n [\n 'output',\n getDiscriminatedUnionDecoder([\n [\n 'Success',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([\n getRevealStakeOutputDecoder(),\n getArrayDecoder(getU8Decoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitDecoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructDecoder([\n ['fields', getTupleDecoder([getRevealStakeOutputDecoder()])],\n ]),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getRevealStakeCallbackInstructionDataCodec(): Codec<\n RevealStakeCallbackInstructionDataArgs,\n RevealStakeCallbackInstructionData\n> {\n return combineCodec(\n getRevealStakeCallbackInstructionDataEncoder(),\n getRevealStakeCallbackInstructionDataDecoder()\n );\n}\n\nexport type RevealStakeCallbackInput<\n TAccountArciumProgram extends string = string,\n TAccountCompDefAccount extends string = string,\n TAccountMxeAccount extends string = string,\n TAccountComputationAccount extends string = string,\n TAccountClusterAccount extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountStakeAccount extends string = string,\n> = {\n arciumProgram?: Address<TAccountArciumProgram>;\n compDefAccount: Address<TAccountCompDefAccount>;\n mxeAccount: Address<TAccountMxeAccount>;\n computationAccount: Address<TAccountComputationAccount>;\n clusterAccount: Address<TAccountClusterAccount>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n stakeAccount: Address<TAccountStakeAccount>;\n output: RevealStakeCallbackInstructionDataArgs['output'];\n};\n\nexport function getRevealStakeCallbackInstruction<\n TAccountArciumProgram extends string,\n TAccountCompDefAccount extends string,\n TAccountMxeAccount extends string,\n TAccountComputationAccount extends string,\n TAccountClusterAccount extends string,\n TAccountInstructionsSysvar extends string,\n TAccountStakeAccount extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: RevealStakeCallbackInput<\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountStakeAccount\n >,\n config?: { programAddress?: TProgramAddress }\n): RevealStakeCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountStakeAccount\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n arciumProgram: { value: input.arciumProgram ?? null, isWritable: false },\n compDefAccount: { value: input.compDefAccount ?? null, isWritable: false },\n mxeAccount: { value: input.mxeAccount ?? null, isWritable: false },\n computationAccount: {\n value: input.computationAccount ?? null,\n isWritable: false,\n },\n clusterAccount: { value: input.clusterAccount ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.arciumProgram.value) {\n accounts.arciumProgram.value =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ' as Address<'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ'>;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n 'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.arciumProgram),\n getAccountMeta(accounts.compDefAccount),\n getAccountMeta(accounts.mxeAccount),\n getAccountMeta(accounts.computationAccount),\n getAccountMeta(accounts.clusterAccount),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.stakeAccount),\n ],\n data: getRevealStakeCallbackInstructionDataEncoder().encode(\n args as RevealStakeCallbackInstructionDataArgs\n ),\n programAddress,\n } as RevealStakeCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountStakeAccount\n >);\n}\n\nexport type ParsedRevealStakeCallbackInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n arciumProgram: TAccountMetas[0];\n compDefAccount: TAccountMetas[1];\n mxeAccount: TAccountMetas[2];\n computationAccount: TAccountMetas[3];\n clusterAccount: TAccountMetas[4];\n instructionsSysvar: TAccountMetas[5];\n stakeAccount: TAccountMetas[6];\n };\n data: RevealStakeCallbackInstructionData;\n};\n\nexport function parseRevealStakeCallbackInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedRevealStakeCallbackInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n arciumProgram: getNextAccount(),\n compDefAccount: getNextAccount(),\n mxeAccount: getNextAccount(),\n computationAccount: getNextAccount(),\n clusterAccount: getNextAccount(),\n instructionsSysvar: getNextAccount(),\n stakeAccount: getNextAccount(),\n },\n data: getRevealStakeCallbackInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const REVEAL_STAKE_COMP_DEF_DISCRIMINATOR = new Uint8Array([\n 197, 20, 216, 132, 43, 99, 64, 0,\n]);\n\nexport function getRevealStakeCompDefDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n REVEAL_STAKE_COMP_DEF_DISCRIMINATOR\n );\n}\n\nexport type RevealStakeCompDefInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountMxeAccount extends string | AccountMeta<string> = string,\n TAccountCompDefAccount extends string | AccountMeta<string> = string,\n TAccountAddressLookupTable extends string | AccountMeta<string> = string,\n TAccountLutProgram extends string | AccountMeta<string> =\n 'AddressLookupTab1e1111111111111111111111111',\n TAccountArciumProgram extends string | AccountMeta<string> =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ',\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountMxeAccount extends string\n ? WritableAccount<TAccountMxeAccount>\n : TAccountMxeAccount,\n TAccountCompDefAccount extends string\n ? WritableAccount<TAccountCompDefAccount>\n : TAccountCompDefAccount,\n TAccountAddressLookupTable extends string\n ? WritableAccount<TAccountAddressLookupTable>\n : TAccountAddressLookupTable,\n TAccountLutProgram extends string\n ? ReadonlyAccount<TAccountLutProgram>\n : TAccountLutProgram,\n TAccountArciumProgram extends string\n ? ReadonlyAccount<TAccountArciumProgram>\n : TAccountArciumProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type RevealStakeCompDefInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type RevealStakeCompDefInstructionDataArgs = {};\n\nexport function getRevealStakeCompDefInstructionDataEncoder(): FixedSizeEncoder<RevealStakeCompDefInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({\n ...value,\n discriminator: REVEAL_STAKE_COMP_DEF_DISCRIMINATOR,\n })\n );\n}\n\nexport function getRevealStakeCompDefInstructionDataDecoder(): FixedSizeDecoder<RevealStakeCompDefInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getRevealStakeCompDefInstructionDataCodec(): FixedSizeCodec<\n RevealStakeCompDefInstructionDataArgs,\n RevealStakeCompDefInstructionData\n> {\n return combineCodec(\n getRevealStakeCompDefInstructionDataEncoder(),\n getRevealStakeCompDefInstructionDataDecoder()\n );\n}\n\nexport type RevealStakeCompDefInput<\n TAccountPayer extends string = string,\n TAccountMxeAccount extends string = string,\n TAccountCompDefAccount extends string = string,\n TAccountAddressLookupTable extends string = string,\n TAccountLutProgram extends string = string,\n TAccountArciumProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n mxeAccount: Address<TAccountMxeAccount>;\n compDefAccount: Address<TAccountCompDefAccount>;\n addressLookupTable: Address<TAccountAddressLookupTable>;\n lutProgram?: Address<TAccountLutProgram>;\n arciumProgram?: Address<TAccountArciumProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport function getRevealStakeCompDefInstruction<\n TAccountPayer extends string,\n TAccountMxeAccount extends string,\n TAccountCompDefAccount extends string,\n TAccountAddressLookupTable extends string,\n TAccountLutProgram extends string,\n TAccountArciumProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: RevealStakeCompDefInput<\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): RevealStakeCompDefInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n mxeAccount: { value: input.mxeAccount ?? null, isWritable: true },\n compDefAccount: { value: input.compDefAccount ?? null, isWritable: true },\n addressLookupTable: {\n value: input.addressLookupTable ?? null,\n isWritable: true,\n },\n lutProgram: { value: input.lutProgram ?? null, isWritable: false },\n arciumProgram: { value: input.arciumProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.lutProgram.value) {\n accounts.lutProgram.value =\n 'AddressLookupTab1e1111111111111111111111111' as Address<'AddressLookupTab1e1111111111111111111111111'>;\n }\n if (!accounts.arciumProgram.value) {\n accounts.arciumProgram.value =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ' as Address<'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.mxeAccount),\n getAccountMeta(accounts.compDefAccount),\n getAccountMeta(accounts.addressLookupTable),\n getAccountMeta(accounts.lutProgram),\n getAccountMeta(accounts.arciumProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getRevealStakeCompDefInstructionDataEncoder().encode({}),\n programAddress,\n } as RevealStakeCompDefInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedRevealStakeCompDefInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n payer: TAccountMetas[0];\n mxeAccount: TAccountMetas[1];\n compDefAccount: TAccountMetas[2];\n addressLookupTable: TAccountMetas[3];\n lutProgram: TAccountMetas[4];\n arciumProgram: TAccountMetas[5];\n systemProgram: TAccountMetas[6];\n };\n data: RevealStakeCompDefInstructionData;\n};\n\nexport function parseRevealStakeCompDefInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedRevealStakeCompDefInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n mxeAccount: getNextAccount(),\n compDefAccount: getNextAccount(),\n addressLookupTable: getNextAccount(),\n lutProgram: getNextAccount(),\n arciumProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getRevealStakeCompDefInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_FEE_CLAIM_AUTHORITY_DISCRIMINATOR = new Uint8Array([\n 75, 250, 161, 197, 43, 196, 161, 3,\n]);\n\nexport function getSetFeeClaimAuthorityDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n SET_FEE_CLAIM_AUTHORITY_DISCRIMINATOR\n );\n}\n\nexport type SetFeeClaimAuthorityInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountUpdateAuthority extends string | AccountMeta<string> = string,\n TAccountPlatformConfig extends string | AccountMeta<string> = string,\n TAccountNewFeeClaimAuthority extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountUpdateAuthority extends string\n ? ReadonlySignerAccount<TAccountUpdateAuthority> &\n AccountSignerMeta<TAccountUpdateAuthority>\n : TAccountUpdateAuthority,\n TAccountPlatformConfig extends string\n ? WritableAccount<TAccountPlatformConfig>\n : TAccountPlatformConfig,\n TAccountNewFeeClaimAuthority extends string\n ? ReadonlyAccount<TAccountNewFeeClaimAuthority>\n : TAccountNewFeeClaimAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type SetFeeClaimAuthorityInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type SetFeeClaimAuthorityInstructionDataArgs = {};\n\nexport function getSetFeeClaimAuthorityInstructionDataEncoder(): FixedSizeEncoder<SetFeeClaimAuthorityInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({\n ...value,\n discriminator: SET_FEE_CLAIM_AUTHORITY_DISCRIMINATOR,\n })\n );\n}\n\nexport function getSetFeeClaimAuthorityInstructionDataDecoder(): FixedSizeDecoder<SetFeeClaimAuthorityInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getSetFeeClaimAuthorityInstructionDataCodec(): FixedSizeCodec<\n SetFeeClaimAuthorityInstructionDataArgs,\n SetFeeClaimAuthorityInstructionData\n> {\n return combineCodec(\n getSetFeeClaimAuthorityInstructionDataEncoder(),\n getSetFeeClaimAuthorityInstructionDataDecoder()\n );\n}\n\nexport type SetFeeClaimAuthorityInput<\n TAccountUpdateAuthority extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountNewFeeClaimAuthority extends string = string,\n> = {\n updateAuthority: TransactionSigner<TAccountUpdateAuthority>;\n platformConfig: Address<TAccountPlatformConfig>;\n newFeeClaimAuthority: Address<TAccountNewFeeClaimAuthority>;\n};\n\nexport function getSetFeeClaimAuthorityInstruction<\n TAccountUpdateAuthority extends string,\n TAccountPlatformConfig extends string,\n TAccountNewFeeClaimAuthority extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: SetFeeClaimAuthorityInput<\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountNewFeeClaimAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): SetFeeClaimAuthorityInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountNewFeeClaimAuthority\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n updateAuthority: {\n value: input.updateAuthority ?? null,\n isWritable: false,\n },\n platformConfig: { value: input.platformConfig ?? null, isWritable: true },\n newFeeClaimAuthority: {\n value: input.newFeeClaimAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.updateAuthority),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.newFeeClaimAuthority),\n ],\n data: getSetFeeClaimAuthorityInstructionDataEncoder().encode({}),\n programAddress,\n } as SetFeeClaimAuthorityInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountNewFeeClaimAuthority\n >);\n}\n\nexport type ParsedSetFeeClaimAuthorityInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n updateAuthority: TAccountMetas[0];\n platformConfig: TAccountMetas[1];\n newFeeClaimAuthority: TAccountMetas[2];\n };\n data: SetFeeClaimAuthorityInstructionData;\n};\n\nexport function parseSetFeeClaimAuthorityInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedSetFeeClaimAuthorityInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n updateAuthority: getNextAccount(),\n platformConfig: getNextAccount(),\n newFeeClaimAuthority: getNextAccount(),\n },\n data: getSetFeeClaimAuthorityInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_UPDATE_AUTHORITY_DISCRIMINATOR = new Uint8Array([\n 166, 198, 186, 255, 217, 170, 103, 155,\n]);\n\nexport function getSetUpdateAuthorityDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n SET_UPDATE_AUTHORITY_DISCRIMINATOR\n );\n}\n\nexport type SetUpdateAuthorityInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountUpdateAuthority extends string | AccountMeta<string> = string,\n TAccountPlatformConfig extends string | AccountMeta<string> = string,\n TAccountNewAuthority extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountUpdateAuthority extends string\n ? ReadonlySignerAccount<TAccountUpdateAuthority> &\n AccountSignerMeta<TAccountUpdateAuthority>\n : TAccountUpdateAuthority,\n TAccountPlatformConfig extends string\n ? WritableAccount<TAccountPlatformConfig>\n : TAccountPlatformConfig,\n TAccountNewAuthority extends string\n ? ReadonlyAccount<TAccountNewAuthority>\n : TAccountNewAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type SetUpdateAuthorityInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type SetUpdateAuthorityInstructionDataArgs = {};\n\nexport function getSetUpdateAuthorityInstructionDataEncoder(): FixedSizeEncoder<SetUpdateAuthorityInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: SET_UPDATE_AUTHORITY_DISCRIMINATOR })\n );\n}\n\nexport function getSetUpdateAuthorityInstructionDataDecoder(): FixedSizeDecoder<SetUpdateAuthorityInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getSetUpdateAuthorityInstructionDataCodec(): FixedSizeCodec<\n SetUpdateAuthorityInstructionDataArgs,\n SetUpdateAuthorityInstructionData\n> {\n return combineCodec(\n getSetUpdateAuthorityInstructionDataEncoder(),\n getSetUpdateAuthorityInstructionDataDecoder()\n );\n}\n\nexport type SetUpdateAuthorityInput<\n TAccountUpdateAuthority extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountNewAuthority extends string = string,\n> = {\n updateAuthority: TransactionSigner<TAccountUpdateAuthority>;\n platformConfig: Address<TAccountPlatformConfig>;\n newAuthority: Address<TAccountNewAuthority>;\n};\n\nexport function getSetUpdateAuthorityInstruction<\n TAccountUpdateAuthority extends string,\n TAccountPlatformConfig extends string,\n TAccountNewAuthority extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: SetUpdateAuthorityInput<\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountNewAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): SetUpdateAuthorityInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountNewAuthority\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n updateAuthority: {\n value: input.updateAuthority ?? null,\n isWritable: false,\n },\n platformConfig: { value: input.platformConfig ?? null, isWritable: true },\n newAuthority: { value: input.newAuthority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.updateAuthority),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.newAuthority),\n ],\n data: getSetUpdateAuthorityInstructionDataEncoder().encode({}),\n programAddress,\n } as SetUpdateAuthorityInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountNewAuthority\n >);\n}\n\nexport type ParsedSetUpdateAuthorityInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n updateAuthority: TAccountMetas[0];\n platformConfig: TAccountMetas[1];\n newAuthority: TAccountMetas[2];\n };\n data: SetUpdateAuthorityInstructionData;\n};\n\nexport function parseSetUpdateAuthorityInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedSetUpdateAuthorityInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n updateAuthority: getNextAccount(),\n platformConfig: getNextAccount(),\n newAuthority: getNextAccount(),\n },\n data: getSetUpdateAuthorityInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const SET_WINNING_OPTION_DISCRIMINATOR = new Uint8Array([\n 156, 73, 113, 33, 170, 115, 163, 206,\n]);\n\nexport function getSetWinningOptionDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n SET_WINNING_OPTION_DISCRIMINATOR\n );\n}\n\nexport type SetWinningOptionInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMarketAuthority extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountOption extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountMarketAuthority extends string\n ? ReadonlySignerAccount<TAccountMarketAuthority> &\n AccountSignerMeta<TAccountMarketAuthority>\n : TAccountMarketAuthority,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountOption extends string\n ? WritableAccount<TAccountOption>\n : TAccountOption,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type SetWinningOptionInstructionData = {\n discriminator: ReadonlyUint8Array;\n optionId: bigint;\n rewardBp: number;\n};\n\nexport type SetWinningOptionInstructionDataArgs = {\n optionId: number | bigint;\n rewardBp: number;\n};\n\nexport function getSetWinningOptionInstructionDataEncoder(): FixedSizeEncoder<SetWinningOptionInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['optionId', getU64Encoder()],\n ['rewardBp', getU16Encoder()],\n ]),\n (value) => ({ ...value, discriminator: SET_WINNING_OPTION_DISCRIMINATOR })\n );\n}\n\nexport function getSetWinningOptionInstructionDataDecoder(): FixedSizeDecoder<SetWinningOptionInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['optionId', getU64Decoder()],\n ['rewardBp', getU16Decoder()],\n ]);\n}\n\nexport function getSetWinningOptionInstructionDataCodec(): FixedSizeCodec<\n SetWinningOptionInstructionDataArgs,\n SetWinningOptionInstructionData\n> {\n return combineCodec(\n getSetWinningOptionInstructionDataEncoder(),\n getSetWinningOptionInstructionDataDecoder()\n );\n}\n\nexport type SetWinningOptionAsyncInput<\n TAccountMarketAuthority extends string = string,\n TAccountMarket extends string = string,\n TAccountOption extends string = string,\n> = {\n marketAuthority: TransactionSigner<TAccountMarketAuthority>;\n market: Address<TAccountMarket>;\n option?: Address<TAccountOption>;\n optionId: SetWinningOptionInstructionDataArgs['optionId'];\n rewardBp: SetWinningOptionInstructionDataArgs['rewardBp'];\n};\n\nexport async function getSetWinningOptionInstructionAsync<\n TAccountMarketAuthority extends string,\n TAccountMarket extends string,\n TAccountOption extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: SetWinningOptionAsyncInput<\n TAccountMarketAuthority,\n TAccountMarket,\n TAccountOption\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n SetWinningOptionInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket,\n TAccountOption\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n marketAuthority: {\n value: input.marketAuthority ?? null,\n isWritable: false,\n },\n market: { value: input.market ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.option.value) {\n accounts.option.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([111, 112, 116, 105, 111, 110])\n ),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU64Encoder().encode(expectSome(args.optionId)),\n ],\n });\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.marketAuthority),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.option),\n ],\n data: getSetWinningOptionInstructionDataEncoder().encode(\n args as SetWinningOptionInstructionDataArgs\n ),\n programAddress,\n } as SetWinningOptionInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket,\n TAccountOption\n >);\n}\n\nexport type SetWinningOptionInput<\n TAccountMarketAuthority extends string = string,\n TAccountMarket extends string = string,\n TAccountOption extends string = string,\n> = {\n marketAuthority: TransactionSigner<TAccountMarketAuthority>;\n market: Address<TAccountMarket>;\n option: Address<TAccountOption>;\n optionId: SetWinningOptionInstructionDataArgs['optionId'];\n rewardBp: SetWinningOptionInstructionDataArgs['rewardBp'];\n};\n\nexport function getSetWinningOptionInstruction<\n TAccountMarketAuthority extends string,\n TAccountMarket extends string,\n TAccountOption extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: SetWinningOptionInput<\n TAccountMarketAuthority,\n TAccountMarket,\n TAccountOption\n >,\n config?: { programAddress?: TProgramAddress }\n): SetWinningOptionInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket,\n TAccountOption\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n marketAuthority: {\n value: input.marketAuthority ?? null,\n isWritable: false,\n },\n market: { value: input.market ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.marketAuthority),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.option),\n ],\n data: getSetWinningOptionInstructionDataEncoder().encode(\n args as SetWinningOptionInstructionDataArgs\n ),\n programAddress,\n } as SetWinningOptionInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket,\n TAccountOption\n >);\n}\n\nexport type ParsedSetWinningOptionInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n marketAuthority: TAccountMetas[0];\n market: TAccountMetas[1];\n option: TAccountMetas[2];\n };\n data: SetWinningOptionInstructionData;\n};\n\nexport function parseSetWinningOptionInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedSetWinningOptionInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n marketAuthority: getNextAccount(),\n market: getNextAccount(),\n option: getNextAccount(),\n },\n data: getSetWinningOptionInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const STAKE_DISCRIMINATOR = new Uint8Array([\n 206, 176, 202, 18, 200, 209, 179, 108,\n]);\n\nexport function getStakeDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(STAKE_DISCRIMINATOR);\n}\n\nexport type StakeInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountSignerTokenAccount extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TAccountSignPdaAccount extends string | AccountMeta<string> = string,\n TAccountMxeAccount extends string | AccountMeta<string> = string,\n TAccountMempoolAccount extends string | AccountMeta<string> = string,\n TAccountExecutingPool extends string | AccountMeta<string> = string,\n TAccountComputationAccount extends string | AccountMeta<string> = string,\n TAccountCompDefAccount extends string | AccountMeta<string> = string,\n TAccountClusterAccount extends string | AccountMeta<string> = string,\n TAccountPoolAccount extends string | AccountMeta<string> =\n 'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC',\n TAccountClockAccount extends string | AccountMeta<string> =\n '7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot',\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TAccountArciumProgram extends string | AccountMeta<string> =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? ReadonlySignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountSignerTokenAccount extends string\n ? WritableAccount<TAccountSignerTokenAccount>\n : TAccountSignerTokenAccount,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountSignPdaAccount extends string\n ? WritableAccount<TAccountSignPdaAccount>\n : TAccountSignPdaAccount,\n TAccountMxeAccount extends string\n ? ReadonlyAccount<TAccountMxeAccount>\n : TAccountMxeAccount,\n TAccountMempoolAccount extends string\n ? WritableAccount<TAccountMempoolAccount>\n : TAccountMempoolAccount,\n TAccountExecutingPool extends string\n ? WritableAccount<TAccountExecutingPool>\n : TAccountExecutingPool,\n TAccountComputationAccount extends string\n ? WritableAccount<TAccountComputationAccount>\n : TAccountComputationAccount,\n TAccountCompDefAccount extends string\n ? ReadonlyAccount<TAccountCompDefAccount>\n : TAccountCompDefAccount,\n TAccountClusterAccount extends string\n ? WritableAccount<TAccountClusterAccount>\n : TAccountClusterAccount,\n TAccountPoolAccount extends string\n ? WritableAccount<TAccountPoolAccount>\n : TAccountPoolAccount,\n TAccountClockAccount extends string\n ? WritableAccount<TAccountClockAccount>\n : TAccountClockAccount,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountArciumProgram extends string\n ? ReadonlyAccount<TAccountArciumProgram>\n : TAccountArciumProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type StakeInstructionData = {\n discriminator: ReadonlyUint8Array;\n computationOffset: bigint;\n stakeAccountId: number;\n amount: bigint;\n selectedOptionCiphertext: Array<number>;\n inputNonce: bigint;\n authorizedReaderNonce: bigint;\n userPubkey: Array<number>;\n stateNonce: bigint;\n};\n\nexport type StakeInstructionDataArgs = {\n computationOffset: number | bigint;\n stakeAccountId: number;\n amount: number | bigint;\n selectedOptionCiphertext: Array<number>;\n inputNonce: number | bigint;\n authorizedReaderNonce: number | bigint;\n userPubkey: Array<number>;\n stateNonce: number | bigint;\n};\n\nexport function getStakeInstructionDataEncoder(): FixedSizeEncoder<StakeInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['computationOffset', getU64Encoder()],\n ['stakeAccountId', getU32Encoder()],\n ['amount', getU64Encoder()],\n [\n 'selectedOptionCiphertext',\n getArrayEncoder(getU8Encoder(), { size: 32 }),\n ],\n ['inputNonce', getU128Encoder()],\n ['authorizedReaderNonce', getU128Encoder()],\n ['userPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['stateNonce', getU128Encoder()],\n ]),\n (value) => ({ ...value, discriminator: STAKE_DISCRIMINATOR })\n );\n}\n\nexport function getStakeInstructionDataDecoder(): FixedSizeDecoder<StakeInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['computationOffset', getU64Decoder()],\n ['stakeAccountId', getU32Decoder()],\n ['amount', getU64Decoder()],\n ['selectedOptionCiphertext', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['inputNonce', getU128Decoder()],\n ['authorizedReaderNonce', getU128Decoder()],\n ['userPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['stateNonce', getU128Decoder()],\n ]);\n}\n\nexport function getStakeInstructionDataCodec(): FixedSizeCodec<\n StakeInstructionDataArgs,\n StakeInstructionData\n> {\n return combineCodec(\n getStakeInstructionDataEncoder(),\n getStakeInstructionDataDecoder()\n );\n}\n\nexport type StakeAsyncInput<\n TAccountSigner extends string = string,\n TAccountPayer extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSignPdaAccount extends string = string,\n TAccountMxeAccount extends string = string,\n TAccountMempoolAccount extends string = string,\n TAccountExecutingPool extends string = string,\n TAccountComputationAccount extends string = string,\n TAccountCompDefAccount extends string = string,\n TAccountClusterAccount extends string = string,\n TAccountPoolAccount extends string = string,\n TAccountClockAccount extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountArciumProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n payer: TransactionSigner<TAccountPayer>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n tokenMint: Address<TAccountTokenMint>;\n /** Funds the stake. */\n signerTokenAccount: Address<TAccountSignerTokenAccount>;\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n signPdaAccount?: Address<TAccountSignPdaAccount>;\n mxeAccount: Address<TAccountMxeAccount>;\n mempoolAccount: Address<TAccountMempoolAccount>;\n executingPool: Address<TAccountExecutingPool>;\n computationAccount: Address<TAccountComputationAccount>;\n compDefAccount: Address<TAccountCompDefAccount>;\n clusterAccount: Address<TAccountClusterAccount>;\n poolAccount?: Address<TAccountPoolAccount>;\n clockAccount?: Address<TAccountClockAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n arciumProgram?: Address<TAccountArciumProgram>;\n computationOffset: StakeInstructionDataArgs['computationOffset'];\n stakeAccountId: StakeInstructionDataArgs['stakeAccountId'];\n amount: StakeInstructionDataArgs['amount'];\n selectedOptionCiphertext: StakeInstructionDataArgs['selectedOptionCiphertext'];\n inputNonce: StakeInstructionDataArgs['inputNonce'];\n authorizedReaderNonce: StakeInstructionDataArgs['authorizedReaderNonce'];\n userPubkey: StakeInstructionDataArgs['userPubkey'];\n stateNonce: StakeInstructionDataArgs['stateNonce'];\n};\n\nexport async function getStakeInstructionAsync<\n TAccountSigner extends string,\n TAccountPayer extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenMint extends string,\n TAccountSignerTokenAccount extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TAccountSignPdaAccount extends string,\n TAccountMxeAccount extends string,\n TAccountMempoolAccount extends string,\n TAccountExecutingPool extends string,\n TAccountComputationAccount extends string,\n TAccountCompDefAccount extends string,\n TAccountClusterAccount extends string,\n TAccountPoolAccount extends string,\n TAccountClockAccount extends string,\n TAccountSystemProgram extends string,\n TAccountArciumProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: StakeAsyncInput<\n TAccountSigner,\n TAccountPayer,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n StakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountPayer,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: false },\n payer: { value: input.payer ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n signerTokenAccount: {\n value: input.signerTokenAccount ?? null,\n isWritable: true,\n },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n signPdaAccount: { value: input.signPdaAccount ?? null, isWritable: true },\n mxeAccount: { value: input.mxeAccount ?? null, isWritable: false },\n mempoolAccount: { value: input.mempoolAccount ?? null, isWritable: true },\n executingPool: { value: input.executingPool ?? null, isWritable: true },\n computationAccount: {\n value: input.computationAccount ?? null,\n isWritable: true,\n },\n compDefAccount: { value: input.compDefAccount ?? null, isWritable: false },\n clusterAccount: { value: input.clusterAccount ?? null, isWritable: true },\n poolAccount: { value: input.poolAccount ?? null, isWritable: true },\n clockAccount: { value: input.clockAccount ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n arciumProgram: { value: input.arciumProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.signPdaAccount.value) {\n accounts.signPdaAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 65, 114, 99, 105, 117, 109, 83, 105, 103, 110, 101, 114, 65, 99, 99,\n 111, 117, 110, 116,\n ])\n ),\n ],\n });\n }\n if (!accounts.poolAccount.value) {\n accounts.poolAccount.value =\n 'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC' as Address<'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC'>;\n }\n if (!accounts.clockAccount.value) {\n accounts.clockAccount.value =\n '7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot' as Address<'7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n if (!accounts.arciumProgram.value) {\n accounts.arciumProgram.value =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ' as Address<'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.signerTokenAccount),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.signPdaAccount),\n getAccountMeta(accounts.mxeAccount),\n getAccountMeta(accounts.mempoolAccount),\n getAccountMeta(accounts.executingPool),\n getAccountMeta(accounts.computationAccount),\n getAccountMeta(accounts.compDefAccount),\n getAccountMeta(accounts.clusterAccount),\n getAccountMeta(accounts.poolAccount),\n getAccountMeta(accounts.clockAccount),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.arciumProgram),\n ],\n data: getStakeInstructionDataEncoder().encode(\n args as StakeInstructionDataArgs\n ),\n programAddress,\n } as StakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountPayer,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >);\n}\n\nexport type StakeInput<\n TAccountSigner extends string = string,\n TAccountPayer extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSignPdaAccount extends string = string,\n TAccountMxeAccount extends string = string,\n TAccountMempoolAccount extends string = string,\n TAccountExecutingPool extends string = string,\n TAccountComputationAccount extends string = string,\n TAccountCompDefAccount extends string = string,\n TAccountClusterAccount extends string = string,\n TAccountPoolAccount extends string = string,\n TAccountClockAccount extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountArciumProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n payer: TransactionSigner<TAccountPayer>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n tokenMint: Address<TAccountTokenMint>;\n /** Funds the stake. */\n signerTokenAccount: Address<TAccountSignerTokenAccount>;\n marketTokenAta: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n signPdaAccount: Address<TAccountSignPdaAccount>;\n mxeAccount: Address<TAccountMxeAccount>;\n mempoolAccount: Address<TAccountMempoolAccount>;\n executingPool: Address<TAccountExecutingPool>;\n computationAccount: Address<TAccountComputationAccount>;\n compDefAccount: Address<TAccountCompDefAccount>;\n clusterAccount: Address<TAccountClusterAccount>;\n poolAccount?: Address<TAccountPoolAccount>;\n clockAccount?: Address<TAccountClockAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n arciumProgram?: Address<TAccountArciumProgram>;\n computationOffset: StakeInstructionDataArgs['computationOffset'];\n stakeAccountId: StakeInstructionDataArgs['stakeAccountId'];\n amount: StakeInstructionDataArgs['amount'];\n selectedOptionCiphertext: StakeInstructionDataArgs['selectedOptionCiphertext'];\n inputNonce: StakeInstructionDataArgs['inputNonce'];\n authorizedReaderNonce: StakeInstructionDataArgs['authorizedReaderNonce'];\n userPubkey: StakeInstructionDataArgs['userPubkey'];\n stateNonce: StakeInstructionDataArgs['stateNonce'];\n};\n\nexport function getStakeInstruction<\n TAccountSigner extends string,\n TAccountPayer extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenMint extends string,\n TAccountSignerTokenAccount extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TAccountSignPdaAccount extends string,\n TAccountMxeAccount extends string,\n TAccountMempoolAccount extends string,\n TAccountExecutingPool extends string,\n TAccountComputationAccount extends string,\n TAccountCompDefAccount extends string,\n TAccountClusterAccount extends string,\n TAccountPoolAccount extends string,\n TAccountClockAccount extends string,\n TAccountSystemProgram extends string,\n TAccountArciumProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: StakeInput<\n TAccountSigner,\n TAccountPayer,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): StakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountPayer,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: false },\n payer: { value: input.payer ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n signerTokenAccount: {\n value: input.signerTokenAccount ?? null,\n isWritable: true,\n },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n signPdaAccount: { value: input.signPdaAccount ?? null, isWritable: true },\n mxeAccount: { value: input.mxeAccount ?? null, isWritable: false },\n mempoolAccount: { value: input.mempoolAccount ?? null, isWritable: true },\n executingPool: { value: input.executingPool ?? null, isWritable: true },\n computationAccount: {\n value: input.computationAccount ?? null,\n isWritable: true,\n },\n compDefAccount: { value: input.compDefAccount ?? null, isWritable: false },\n clusterAccount: { value: input.clusterAccount ?? null, isWritable: true },\n poolAccount: { value: input.poolAccount ?? null, isWritable: true },\n clockAccount: { value: input.clockAccount ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n arciumProgram: { value: input.arciumProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.poolAccount.value) {\n accounts.poolAccount.value =\n 'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC' as Address<'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC'>;\n }\n if (!accounts.clockAccount.value) {\n accounts.clockAccount.value =\n '7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot' as Address<'7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n if (!accounts.arciumProgram.value) {\n accounts.arciumProgram.value =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ' as Address<'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.signerTokenAccount),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.signPdaAccount),\n getAccountMeta(accounts.mxeAccount),\n getAccountMeta(accounts.mempoolAccount),\n getAccountMeta(accounts.executingPool),\n getAccountMeta(accounts.computationAccount),\n getAccountMeta(accounts.compDefAccount),\n getAccountMeta(accounts.clusterAccount),\n getAccountMeta(accounts.poolAccount),\n getAccountMeta(accounts.clockAccount),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.arciumProgram),\n ],\n data: getStakeInstructionDataEncoder().encode(\n args as StakeInstructionDataArgs\n ),\n programAddress,\n } as StakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountPayer,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >);\n}\n\nexport type ParsedStakeInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n payer: TAccountMetas[1];\n market: TAccountMetas[2];\n stakeAccount: TAccountMetas[3];\n tokenMint: TAccountMetas[4];\n /** Funds the stake. */\n signerTokenAccount: TAccountMetas[5];\n marketTokenAta: TAccountMetas[6];\n tokenProgram: TAccountMetas[7];\n signPdaAccount: TAccountMetas[8];\n mxeAccount: TAccountMetas[9];\n mempoolAccount: TAccountMetas[10];\n executingPool: TAccountMetas[11];\n computationAccount: TAccountMetas[12];\n compDefAccount: TAccountMetas[13];\n clusterAccount: TAccountMetas[14];\n poolAccount: TAccountMetas[15];\n clockAccount: TAccountMetas[16];\n systemProgram: TAccountMetas[17];\n arciumProgram: TAccountMetas[18];\n };\n data: StakeInstructionData;\n};\n\nexport function parseStakeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedStakeInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 19) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n payer: getNextAccount(),\n market: getNextAccount(),\n stakeAccount: getNextAccount(),\n tokenMint: getNextAccount(),\n signerTokenAccount: getNextAccount(),\n marketTokenAta: getNextAccount(),\n tokenProgram: getNextAccount(),\n signPdaAccount: getNextAccount(),\n mxeAccount: getNextAccount(),\n mempoolAccount: getNextAccount(),\n executingPool: getNextAccount(),\n computationAccount: getNextAccount(),\n compDefAccount: getNextAccount(),\n clusterAccount: getNextAccount(),\n poolAccount: getNextAccount(),\n clockAccount: getNextAccount(),\n systemProgram: getNextAccount(),\n arciumProgram: getNextAccount(),\n },\n data: getStakeInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getU8Decoder,\n getU8Encoder,\n getUnitDecoder,\n getUnitEncoder,\n transformEncoder,\n type AccountMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getStakeOutputDecoder,\n getStakeOutputEncoder,\n type StakeOutput,\n type StakeOutputArgs,\n} from '../types';\n\nexport const STAKE_CALLBACK_DISCRIMINATOR = new Uint8Array([\n 40, 220, 36, 47, 6, 116, 132, 89,\n]);\n\nexport function getStakeCallbackDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n STAKE_CALLBACK_DISCRIMINATOR\n );\n}\n\nexport type StakeCallbackInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountArciumProgram extends string | AccountMeta<string> =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ',\n TAccountCompDefAccount extends string | AccountMeta<string> = string,\n TAccountMxeAccount extends string | AccountMeta<string> = string,\n TAccountComputationAccount extends string | AccountMeta<string> = string,\n TAccountClusterAccount extends string | AccountMeta<string> = string,\n TAccountInstructionsSysvar extends string | AccountMeta<string> =\n 'Sysvar1nstructions1111111111111111111111111',\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountArciumProgram extends string\n ? ReadonlyAccount<TAccountArciumProgram>\n : TAccountArciumProgram,\n TAccountCompDefAccount extends string\n ? ReadonlyAccount<TAccountCompDefAccount>\n : TAccountCompDefAccount,\n TAccountMxeAccount extends string\n ? ReadonlyAccount<TAccountMxeAccount>\n : TAccountMxeAccount,\n TAccountComputationAccount extends string\n ? ReadonlyAccount<TAccountComputationAccount>\n : TAccountComputationAccount,\n TAccountClusterAccount extends string\n ? ReadonlyAccount<TAccountClusterAccount>\n : TAccountClusterAccount,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type StakeCallbackInstructionData = {\n discriminator: ReadonlyUint8Array;\n output:\n | { __kind: 'Success'; fields: readonly [StakeOutput, Array<number>] }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [StakeOutput];\n };\n};\n\nexport type StakeCallbackInstructionDataArgs = {\n output:\n | { __kind: 'Success'; fields: readonly [StakeOutputArgs, Array<number>] }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [StakeOutputArgs];\n };\n};\n\nexport function getStakeCallbackInstructionDataEncoder(): Encoder<StakeCallbackInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n [\n 'output',\n getDiscriminatedUnionEncoder([\n [\n 'Success',\n getStructEncoder([\n [\n 'fields',\n getTupleEncoder([\n getStakeOutputEncoder(),\n getArrayEncoder(getU8Encoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitEncoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructEncoder([\n ['fields', getTupleEncoder([getStakeOutputEncoder()])],\n ]),\n ],\n ]),\n ],\n ]),\n (value) => ({ ...value, discriminator: STAKE_CALLBACK_DISCRIMINATOR })\n );\n}\n\nexport function getStakeCallbackInstructionDataDecoder(): Decoder<StakeCallbackInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n [\n 'output',\n getDiscriminatedUnionDecoder([\n [\n 'Success',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([\n getStakeOutputDecoder(),\n getArrayDecoder(getU8Decoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitDecoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructDecoder([\n ['fields', getTupleDecoder([getStakeOutputDecoder()])],\n ]),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getStakeCallbackInstructionDataCodec(): Codec<\n StakeCallbackInstructionDataArgs,\n StakeCallbackInstructionData\n> {\n return combineCodec(\n getStakeCallbackInstructionDataEncoder(),\n getStakeCallbackInstructionDataDecoder()\n );\n}\n\nexport type StakeCallbackInput<\n TAccountArciumProgram extends string = string,\n TAccountCompDefAccount extends string = string,\n TAccountMxeAccount extends string = string,\n TAccountComputationAccount extends string = string,\n TAccountClusterAccount extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountMarket extends string = string,\n> = {\n arciumProgram?: Address<TAccountArciumProgram>;\n compDefAccount: Address<TAccountCompDefAccount>;\n mxeAccount: Address<TAccountMxeAccount>;\n computationAccount: Address<TAccountComputationAccount>;\n clusterAccount: Address<TAccountClusterAccount>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n stakeAccount: Address<TAccountStakeAccount>;\n market: Address<TAccountMarket>;\n output: StakeCallbackInstructionDataArgs['output'];\n};\n\nexport function getStakeCallbackInstruction<\n TAccountArciumProgram extends string,\n TAccountCompDefAccount extends string,\n TAccountMxeAccount extends string,\n TAccountComputationAccount extends string,\n TAccountClusterAccount extends string,\n TAccountInstructionsSysvar extends string,\n TAccountStakeAccount extends string,\n TAccountMarket extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: StakeCallbackInput<\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountStakeAccount,\n TAccountMarket\n >,\n config?: { programAddress?: TProgramAddress }\n): StakeCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountStakeAccount,\n TAccountMarket\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n arciumProgram: { value: input.arciumProgram ?? null, isWritable: false },\n compDefAccount: { value: input.compDefAccount ?? null, isWritable: false },\n mxeAccount: { value: input.mxeAccount ?? null, isWritable: false },\n computationAccount: {\n value: input.computationAccount ?? null,\n isWritable: false,\n },\n clusterAccount: { value: input.clusterAccount ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.arciumProgram.value) {\n accounts.arciumProgram.value =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ' as Address<'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ'>;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n 'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.arciumProgram),\n getAccountMeta(accounts.compDefAccount),\n getAccountMeta(accounts.mxeAccount),\n getAccountMeta(accounts.computationAccount),\n getAccountMeta(accounts.clusterAccount),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.market),\n ],\n data: getStakeCallbackInstructionDataEncoder().encode(\n args as StakeCallbackInstructionDataArgs\n ),\n programAddress,\n } as StakeCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountStakeAccount,\n TAccountMarket\n >);\n}\n\nexport type ParsedStakeCallbackInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n arciumProgram: TAccountMetas[0];\n compDefAccount: TAccountMetas[1];\n mxeAccount: TAccountMetas[2];\n computationAccount: TAccountMetas[3];\n clusterAccount: TAccountMetas[4];\n instructionsSysvar: TAccountMetas[5];\n stakeAccount: TAccountMetas[6];\n market: TAccountMetas[7];\n };\n data: StakeCallbackInstructionData;\n};\n\nexport function parseStakeCallbackInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedStakeCallbackInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 8) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n arciumProgram: getNextAccount(),\n compDefAccount: getNextAccount(),\n mxeAccount: getNextAccount(),\n computationAccount: getNextAccount(),\n clusterAccount: getNextAccount(),\n instructionsSysvar: getNextAccount(),\n stakeAccount: getNextAccount(),\n market: getNextAccount(),\n },\n data: getStakeCallbackInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const STAKE_COMP_DEF_DISCRIMINATOR = new Uint8Array([\n 156, 5, 60, 126, 142, 149, 1, 130,\n]);\n\nexport function getStakeCompDefDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n STAKE_COMP_DEF_DISCRIMINATOR\n );\n}\n\nexport type StakeCompDefInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountMxeAccount extends string | AccountMeta<string> = string,\n TAccountCompDefAccount extends string | AccountMeta<string> = string,\n TAccountAddressLookupTable extends string | AccountMeta<string> = string,\n TAccountLutProgram extends string | AccountMeta<string> =\n 'AddressLookupTab1e1111111111111111111111111',\n TAccountArciumProgram extends string | AccountMeta<string> =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ',\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountMxeAccount extends string\n ? WritableAccount<TAccountMxeAccount>\n : TAccountMxeAccount,\n TAccountCompDefAccount extends string\n ? WritableAccount<TAccountCompDefAccount>\n : TAccountCompDefAccount,\n TAccountAddressLookupTable extends string\n ? WritableAccount<TAccountAddressLookupTable>\n : TAccountAddressLookupTable,\n TAccountLutProgram extends string\n ? ReadonlyAccount<TAccountLutProgram>\n : TAccountLutProgram,\n TAccountArciumProgram extends string\n ? ReadonlyAccount<TAccountArciumProgram>\n : TAccountArciumProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type StakeCompDefInstructionData = { discriminator: ReadonlyUint8Array };\n\nexport type StakeCompDefInstructionDataArgs = {};\n\nexport function getStakeCompDefInstructionDataEncoder(): FixedSizeEncoder<StakeCompDefInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: STAKE_COMP_DEF_DISCRIMINATOR })\n );\n}\n\nexport function getStakeCompDefInstructionDataDecoder(): FixedSizeDecoder<StakeCompDefInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getStakeCompDefInstructionDataCodec(): FixedSizeCodec<\n StakeCompDefInstructionDataArgs,\n StakeCompDefInstructionData\n> {\n return combineCodec(\n getStakeCompDefInstructionDataEncoder(),\n getStakeCompDefInstructionDataDecoder()\n );\n}\n\nexport type StakeCompDefInput<\n TAccountPayer extends string = string,\n TAccountMxeAccount extends string = string,\n TAccountCompDefAccount extends string = string,\n TAccountAddressLookupTable extends string = string,\n TAccountLutProgram extends string = string,\n TAccountArciumProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n mxeAccount: Address<TAccountMxeAccount>;\n compDefAccount: Address<TAccountCompDefAccount>;\n addressLookupTable: Address<TAccountAddressLookupTable>;\n lutProgram?: Address<TAccountLutProgram>;\n arciumProgram?: Address<TAccountArciumProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport function getStakeCompDefInstruction<\n TAccountPayer extends string,\n TAccountMxeAccount extends string,\n TAccountCompDefAccount extends string,\n TAccountAddressLookupTable extends string,\n TAccountLutProgram extends string,\n TAccountArciumProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: StakeCompDefInput<\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): StakeCompDefInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n mxeAccount: { value: input.mxeAccount ?? null, isWritable: true },\n compDefAccount: { value: input.compDefAccount ?? null, isWritable: true },\n addressLookupTable: {\n value: input.addressLookupTable ?? null,\n isWritable: true,\n },\n lutProgram: { value: input.lutProgram ?? null, isWritable: false },\n arciumProgram: { value: input.arciumProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.lutProgram.value) {\n accounts.lutProgram.value =\n 'AddressLookupTab1e1111111111111111111111111' as Address<'AddressLookupTab1e1111111111111111111111111'>;\n }\n if (!accounts.arciumProgram.value) {\n accounts.arciumProgram.value =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ' as Address<'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.mxeAccount),\n getAccountMeta(accounts.compDefAccount),\n getAccountMeta(accounts.addressLookupTable),\n getAccountMeta(accounts.lutProgram),\n getAccountMeta(accounts.arciumProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getStakeCompDefInstructionDataEncoder().encode({}),\n programAddress,\n } as StakeCompDefInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedStakeCompDefInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n payer: TAccountMetas[0];\n mxeAccount: TAccountMetas[1];\n compDefAccount: TAccountMetas[2];\n addressLookupTable: TAccountMetas[3];\n lutProgram: TAccountMetas[4];\n arciumProgram: TAccountMetas[5];\n systemProgram: TAccountMetas[6];\n };\n data: StakeCompDefInstructionData;\n};\n\nexport function parseStakeCompDefInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedStakeCompDefInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n mxeAccount: getNextAccount(),\n compDefAccount: getNextAccount(),\n addressLookupTable: getNextAccount(),\n lutProgram: getNextAccount(),\n arciumProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getStakeCompDefInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const UNSTAKE_DISCRIMINATOR = new Uint8Array([\n 90, 95, 107, 42, 205, 124, 50, 225,\n]);\n\nexport function getUnstakeDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(UNSTAKE_DISCRIMINATOR);\n}\n\nexport type UnstakeInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountOwner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountOwnerTokenAccount extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? WritableSignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountOwner extends string\n ? ReadonlyAccount<TAccountOwner>\n : TAccountOwner,\n TAccountMarket extends string\n ? ReadonlyAccount<TAccountMarket>\n : TAccountMarket,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountOwnerTokenAccount extends string\n ? WritableAccount<TAccountOwnerTokenAccount>\n : TAccountOwnerTokenAccount,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UnstakeInstructionData = {\n discriminator: ReadonlyUint8Array;\n stakeAccountId: number;\n};\n\nexport type UnstakeInstructionDataArgs = { stakeAccountId: number };\n\nexport function getUnstakeInstructionDataEncoder(): FixedSizeEncoder<UnstakeInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['stakeAccountId', getU32Encoder()],\n ]),\n (value) => ({ ...value, discriminator: UNSTAKE_DISCRIMINATOR })\n );\n}\n\nexport function getUnstakeInstructionDataDecoder(): FixedSizeDecoder<UnstakeInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['stakeAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getUnstakeInstructionDataCodec(): FixedSizeCodec<\n UnstakeInstructionDataArgs,\n UnstakeInstructionData\n> {\n return combineCodec(\n getUnstakeInstructionDataEncoder(),\n getUnstakeInstructionDataDecoder()\n );\n}\n\nexport type UnstakeAsyncInput<\n TAccountSigner extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountOwnerTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n owner: Address<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount?: Address<TAccountStakeAccount>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n /** Owner's token account to receive staked tokens */\n ownerTokenAccount: Address<TAccountOwnerTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n stakeAccountId: UnstakeInstructionDataArgs['stakeAccountId'];\n};\n\nexport async function getUnstakeInstructionAsync<\n TAccountSigner extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountOwnerTokenAccount extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: UnstakeAsyncInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n UnstakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: false },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n ownerTokenAccount: {\n value: input.ownerTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.stakeAccount.value) {\n accounts.stakeAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 116, 97, 107, 101, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.owner.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU32Encoder().encode(expectSome(args.stakeAccountId)),\n ],\n });\n }\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.ownerTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getUnstakeInstructionDataEncoder().encode(\n args as UnstakeInstructionDataArgs\n ),\n programAddress,\n } as UnstakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type UnstakeInput<\n TAccountSigner extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountOwnerTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n owner: Address<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta: Address<TAccountMarketTokenAta>;\n /** Owner's token account to receive staked tokens */\n ownerTokenAccount: Address<TAccountOwnerTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n stakeAccountId: UnstakeInstructionDataArgs['stakeAccountId'];\n};\n\nexport function getUnstakeInstruction<\n TAccountSigner extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountOwnerTokenAccount extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: UnstakeInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): UnstakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: false },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n ownerTokenAccount: {\n value: input.ownerTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.ownerTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getUnstakeInstructionDataEncoder().encode(\n args as UnstakeInstructionDataArgs\n ),\n programAddress,\n } as UnstakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedUnstakeInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n owner: TAccountMetas[1];\n market: TAccountMetas[2];\n stakeAccount: TAccountMetas[3];\n tokenMint: TAccountMetas[4];\n marketTokenAta: TAccountMetas[5];\n /** Owner's token account to receive staked tokens */\n ownerTokenAccount: TAccountMetas[6];\n tokenProgram: TAccountMetas[7];\n systemProgram: TAccountMetas[8];\n };\n data: UnstakeInstructionData;\n};\n\nexport function parseUnstakeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedUnstakeInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 9) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n owner: getNextAccount(),\n market: getNextAccount(),\n stakeAccount: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n ownerTokenAccount: getNextAccount(),\n tokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getUnstakeInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_PLATFORM_CONFIG_DISCRIMINATOR = new Uint8Array([\n 195, 60, 76, 129, 146, 45, 67, 143,\n]);\n\nexport function getUpdatePlatformConfigDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n UPDATE_PLATFORM_CONFIG_DISCRIMINATOR\n );\n}\n\nexport type UpdatePlatformConfigInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountUpdateAuthority extends string | AccountMeta<string> = string,\n TAccountPlatformConfig extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountUpdateAuthority extends string\n ? ReadonlySignerAccount<TAccountUpdateAuthority> &\n AccountSignerMeta<TAccountUpdateAuthority>\n : TAccountUpdateAuthority,\n TAccountPlatformConfig extends string\n ? WritableAccount<TAccountPlatformConfig>\n : TAccountPlatformConfig,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UpdatePlatformConfigInstructionData = {\n discriminator: ReadonlyUint8Array;\n platformFeeBp: number;\n rewardPoolFeeBp: number;\n creatorFeeBp: number;\n minTimeToStakeSeconds: bigint;\n minRevealPeriodSeconds: bigint;\n maxRevealPeriodSeconds: bigint;\n marketResolutionDeadlineSeconds: bigint;\n};\n\nexport type UpdatePlatformConfigInstructionDataArgs = {\n platformFeeBp: number;\n rewardPoolFeeBp: number;\n creatorFeeBp: number;\n minTimeToStakeSeconds: number | bigint;\n minRevealPeriodSeconds: number | bigint;\n maxRevealPeriodSeconds: number | bigint;\n marketResolutionDeadlineSeconds: number | bigint;\n};\n\nexport function getUpdatePlatformConfigInstructionDataEncoder(): FixedSizeEncoder<UpdatePlatformConfigInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['platformFeeBp', getU16Encoder()],\n ['rewardPoolFeeBp', getU16Encoder()],\n ['creatorFeeBp', getU16Encoder()],\n ['minTimeToStakeSeconds', getU64Encoder()],\n ['minRevealPeriodSeconds', getU64Encoder()],\n ['maxRevealPeriodSeconds', getU64Encoder()],\n ['marketResolutionDeadlineSeconds', getU64Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: UPDATE_PLATFORM_CONFIG_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUpdatePlatformConfigInstructionDataDecoder(): FixedSizeDecoder<UpdatePlatformConfigInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['platformFeeBp', getU16Decoder()],\n ['rewardPoolFeeBp', getU16Decoder()],\n ['creatorFeeBp', getU16Decoder()],\n ['minTimeToStakeSeconds', getU64Decoder()],\n ['minRevealPeriodSeconds', getU64Decoder()],\n ['maxRevealPeriodSeconds', getU64Decoder()],\n ['marketResolutionDeadlineSeconds', getU64Decoder()],\n ]);\n}\n\nexport function getUpdatePlatformConfigInstructionDataCodec(): FixedSizeCodec<\n UpdatePlatformConfigInstructionDataArgs,\n UpdatePlatformConfigInstructionData\n> {\n return combineCodec(\n getUpdatePlatformConfigInstructionDataEncoder(),\n getUpdatePlatformConfigInstructionDataDecoder()\n );\n}\n\nexport type UpdatePlatformConfigInput<\n TAccountUpdateAuthority extends string = string,\n TAccountPlatformConfig extends string = string,\n> = {\n updateAuthority: TransactionSigner<TAccountUpdateAuthority>;\n platformConfig: Address<TAccountPlatformConfig>;\n platformFeeBp: UpdatePlatformConfigInstructionDataArgs['platformFeeBp'];\n rewardPoolFeeBp: UpdatePlatformConfigInstructionDataArgs['rewardPoolFeeBp'];\n creatorFeeBp: UpdatePlatformConfigInstructionDataArgs['creatorFeeBp'];\n minTimeToStakeSeconds: UpdatePlatformConfigInstructionDataArgs['minTimeToStakeSeconds'];\n minRevealPeriodSeconds: UpdatePlatformConfigInstructionDataArgs['minRevealPeriodSeconds'];\n maxRevealPeriodSeconds: UpdatePlatformConfigInstructionDataArgs['maxRevealPeriodSeconds'];\n marketResolutionDeadlineSeconds: UpdatePlatformConfigInstructionDataArgs['marketResolutionDeadlineSeconds'];\n};\n\nexport function getUpdatePlatformConfigInstruction<\n TAccountUpdateAuthority extends string,\n TAccountPlatformConfig extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: UpdatePlatformConfigInput<\n TAccountUpdateAuthority,\n TAccountPlatformConfig\n >,\n config?: { programAddress?: TProgramAddress }\n): UpdatePlatformConfigInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n updateAuthority: {\n value: input.updateAuthority ?? null,\n isWritable: false,\n },\n platformConfig: { value: input.platformConfig ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.updateAuthority),\n getAccountMeta(accounts.platformConfig),\n ],\n data: getUpdatePlatformConfigInstructionDataEncoder().encode(\n args as UpdatePlatformConfigInstructionDataArgs\n ),\n programAddress,\n } as UpdatePlatformConfigInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig\n >);\n}\n\nexport type ParsedUpdatePlatformConfigInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n updateAuthority: TAccountMetas[0];\n platformConfig: TAccountMetas[1];\n };\n data: UpdatePlatformConfigInstructionData;\n};\n\nexport function parseUpdatePlatformConfigInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedUpdatePlatformConfigInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n updateAuthority: getNextAccount(),\n platformConfig: getNextAccount(),\n },\n data: getUpdatePlatformConfigInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const WITHDRAW_REWARD_DISCRIMINATOR = new Uint8Array([\n 191, 187, 176, 137, 9, 25, 187, 244,\n]);\n\nexport function getWithdrawRewardDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n WITHDRAW_REWARD_DISCRIMINATOR\n );\n}\n\nexport type WithdrawRewardInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSponsor extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountSponsorAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountRefundTokenAccount extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSponsor extends string\n ? WritableSignerAccount<TAccountSponsor> &\n AccountSignerMeta<TAccountSponsor>\n : TAccountSponsor,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountSponsorAccount extends string\n ? WritableAccount<TAccountSponsorAccount>\n : TAccountSponsorAccount,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountRefundTokenAccount extends string\n ? WritableAccount<TAccountRefundTokenAccount>\n : TAccountRefundTokenAccount,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type WithdrawRewardInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type WithdrawRewardInstructionDataArgs = {};\n\nexport function getWithdrawRewardInstructionDataEncoder(): FixedSizeEncoder<WithdrawRewardInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: WITHDRAW_REWARD_DISCRIMINATOR })\n );\n}\n\nexport function getWithdrawRewardInstructionDataDecoder(): FixedSizeDecoder<WithdrawRewardInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getWithdrawRewardInstructionDataCodec(): FixedSizeCodec<\n WithdrawRewardInstructionDataArgs,\n WithdrawRewardInstructionData\n> {\n return combineCodec(\n getWithdrawRewardInstructionDataEncoder(),\n getWithdrawRewardInstructionDataDecoder()\n );\n}\n\nexport type WithdrawRewardAsyncInput<\n TAccountSponsor extends string = string,\n TAccountMarket extends string = string,\n TAccountSponsorAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountRefundTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n sponsor: TransactionSigner<TAccountSponsor>;\n market: Address<TAccountMarket>;\n sponsorAccount?: Address<TAccountSponsorAccount>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n /** Sponsor's destination for refunded reward tokens */\n refundTokenAccount: Address<TAccountRefundTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport async function getWithdrawRewardInstructionAsync<\n TAccountSponsor extends string,\n TAccountMarket extends string,\n TAccountSponsorAccount extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountRefundTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: WithdrawRewardAsyncInput<\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n WithdrawRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sponsor: { value: input.sponsor ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n sponsorAccount: { value: input.sponsorAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n refundTokenAccount: {\n value: input.refundTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.sponsorAccount.value) {\n accounts.sponsorAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([115, 112, 111, 110, 115, 111, 114])\n ),\n getAddressEncoder().encode(expectAddress(accounts.sponsor.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n ],\n });\n }\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.sponsor),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.sponsorAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.refundTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getWithdrawRewardInstructionDataEncoder().encode({}),\n programAddress,\n } as WithdrawRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type WithdrawRewardInput<\n TAccountSponsor extends string = string,\n TAccountMarket extends string = string,\n TAccountSponsorAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountRefundTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n sponsor: TransactionSigner<TAccountSponsor>;\n market: Address<TAccountMarket>;\n sponsorAccount: Address<TAccountSponsorAccount>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta: Address<TAccountMarketTokenAta>;\n /** Sponsor's destination for refunded reward tokens */\n refundTokenAccount: Address<TAccountRefundTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport function getWithdrawRewardInstruction<\n TAccountSponsor extends string,\n TAccountMarket extends string,\n TAccountSponsorAccount extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountRefundTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: WithdrawRewardInput<\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): WithdrawRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sponsor: { value: input.sponsor ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n sponsorAccount: { value: input.sponsorAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n refundTokenAccount: {\n value: input.refundTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.sponsor),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.sponsorAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.refundTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getWithdrawRewardInstructionDataEncoder().encode({}),\n programAddress,\n } as WithdrawRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type ParsedWithdrawRewardInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n sponsor: TAccountMetas[0];\n market: TAccountMetas[1];\n sponsorAccount: TAccountMetas[2];\n tokenMint: TAccountMetas[3];\n marketTokenAta: TAccountMetas[4];\n /** Sponsor's destination for refunded reward tokens */\n refundTokenAccount: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n };\n data: WithdrawRewardInstructionData;\n};\n\nexport function parseWithdrawRewardInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedWithdrawRewardInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n sponsor: getNextAccount(),\n market: getNextAccount(),\n sponsorAccount: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n refundTokenAccount: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getWithdrawRewardInstructionDataDecoder().decode(instruction.data),\n };\n}\n","import { randomBytes } from \"crypto\";\n\n/**\n * Generates a random computation offset for Arcium computations.\n * Returns a BigInt from 8 random bytes.\n */\nexport function randomComputationOffset(): bigint {\n return BigInt(\"0x\" + randomBytes(8).toString(\"hex\"));\n}\n\n/**\n * Generates a random u128 state nonce for encrypted token account initialization.\n * Returns a BigInt from 16 random bytes.\n */\nexport function randomStateNonce(): bigint {\n return BigInt(\"0x\" + randomBytes(16).toString(\"hex\"));\n}\n\n/**\n * Type that accepts either a number[] or Uint8Array for byte array parameters.\n * Use with toNumberArray() to convert before passing to generated instructions.\n */\nexport type ByteArray = number[] | Uint8Array<ArrayBufferLike>;\n\n/**\n * Converts a ByteArray (number[] or Uint8Array) to number[].\n * Generated Codama instructions expect number[], but Uint8Array is often more convenient.\n */\nexport function toNumberArray(bytes: ByteArray): number[] {\n if (Array.isArray(bytes)) {\n return bytes;\n }\n return Array.from(bytes);\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getCreateMarketInstructionAsync,\n type CreateMarketInstruction,\n} from \"../generated\";\nimport { type ByteArray, toNumberArray } from \"../utils\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface CreateMarketParams extends BaseInstructionParams {\n creator: TransactionSigner;\n platformConfig: Address;\n tokenMint: Address;\n tokenProgram: Address;\n marketIndex: bigint;\n marketAuthority: Address;\n allowUnstakingEarly: boolean;\n authorizedReaderPubkey: ByteArray;\n revealPeriodAuthority: Address;\n earlinessCutoffSeconds: bigint;\n earlinessMultiplier: number;\n minStakeAmount: bigint;\n creatorFeeClaimer: Address;\n}\n\nexport async function createMarket(\n input: CreateMarketParams,\n): Promise<CreateMarketInstruction<string>> {\n const {\n programAddress,\n authorizedReaderPubkey,\n ...rest\n } = input;\n\n return getCreateMarketInstructionAsync(\n {\n ...rest,\n authorizedReaderPubkey: toNumberArray(authorizedReaderPubkey),\n },\n programAddress ? { programAddress } : undefined,\n );\n}\n","import {\n type TransactionSigner,\n type Address,\n address,\n type Instruction,\n SolanaRpcApi,\n Rpc,\n assertAccountExists,\n fetchEncodedAccount,\n} from \"@solana/kit\";\nimport {\n getMXEAccAddress,\n getCompDefAccAddress,\n getCompDefAccOffset,\n getLookupTableAddress,\n} from \"@arcium-hq/client\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport {\n getStakeCompDefInstruction,\n getRevealStakeCompDefInstruction,\n OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n getMXEAccountDecoder,\n} from \"../generated\";\nimport { BN } from \"bn.js\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport type CompDefCircuitName =\n | \"stake\"\n | \"reveal_stake\";\n\nexport const ALL_COMP_DEF_CIRCUITS: CompDefCircuitName[] = [\n \"stake\",\n \"reveal_stake\",\n];\n\n\nfunction toAddress(pubkey: { toBase58(): string }): Address {\n return address(pubkey.toBase58());\n}\n\nexport interface InitCompDefConfig extends BaseInstructionParams {}\n\nexport async function getMxeAccount(rpc: Rpc<SolanaRpcApi>, programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS) {\n const programIdLegacy = new PublicKey(programId);\n const mxeAddress = toAddress(getMXEAccAddress(programIdLegacy));\n const encoded = await fetchEncodedAccount(rpc, mxeAddress);\n assertAccountExists(encoded);\n const data = getMXEAccountDecoder().decode(encoded.data.slice(8));\n return { address: mxeAddress, data };\n}\n\nexport function getCompDefAccount(\n circuitName: CompDefCircuitName,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Address {\n const programIdLegacy = new PublicKey(programId);\n const offset = getCompDefAccOffset(circuitName);\n return toAddress(\n getCompDefAccAddress(programIdLegacy, Buffer.from(offset).readUInt32LE())\n );\n}\n\n\nexport function getCompDefOffsetNumber(circuitName: CompDefCircuitName): number {\n const offset = getCompDefAccOffset(circuitName);\n return Buffer.from(offset).readUInt32LE();\n}\n\n\nexport async function getInitCompDefInstruction(\n rpc: Rpc<SolanaRpcApi>,\n payer: TransactionSigner,\n circuitName: CompDefCircuitName,\n config: InitCompDefConfig = {}\n): Promise<Instruction> {\n const programId = config.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n const mxeAccount = await getMxeAccount(rpc, programId);\n const compDefAccount = getCompDefAccount(circuitName, programId);\n const lutAddress = getLookupTableAddress(\n new PublicKey(programId.toString()),\n new BN(mxeAccount.data.lutOffsetSlot)\n );\n\n const baseInput = {\n payer,\n mxeAccount: mxeAccount.address,\n compDefAccount,\n addressLookupTable: toAddress(lutAddress),\n\n };\n\n switch (circuitName) {\n case \"stake\":\n return getStakeCompDefInstruction(baseInput, { programAddress: programId });\n\n case \"reveal_stake\":\n return getRevealStakeCompDefInstruction(baseInput, { programAddress: programId });\n\n default:\n throw new Error(`Unknown circuit: ${circuitName}`);\n }\n}\n","import { address, Address } from \"@solana/kit\";\nimport {\n getMXEAccAddress,\n getMempoolAccAddress,\n getExecutingPoolAccAddress,\n getComputationAccAddress,\n getClusterAccAddress,\n getCompDefAccAddress,\n getCompDefAccOffset,\n} from \"@arcium-hq/client\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport BN from \"bn.js\";\nimport {\n OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n} from \"../generated\";\n\nfunction toAddress(pubkey: { toBase58(): string }): Address {\n return address(pubkey.toBase58());\n}\nexport interface ArciumConfig {\n clusterOffset: number;\n computationOffset: bigint;\n programId?: Address;\n}\n\nexport function getComputeAccounts(ixName: string, config: ArciumConfig) {\n const programId = config.programId ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n const programIdLegacy = new PublicKey(programId)\n const { clusterOffset, computationOffset } = config;\n const mxeAccount = toAddress(getMXEAccAddress(programIdLegacy));\n const clusterAccount = toAddress(getClusterAccAddress(clusterOffset));\n const mempoolAccount = toAddress(getMempoolAccAddress(clusterOffset));\n const executingPool = toAddress(getExecutingPoolAccAddress(clusterOffset));\n\n // Convert bigint to BN correctly - BN doesn't support native bigint directly\n const computationOffsetBN = new BN(computationOffset.toString());\n\n const computationAccount = toAddress(\n getComputationAccAddress(clusterOffset, computationOffsetBN)\n );\n const compDefAccount = toAddress(\n getCompDefAccAddress(\n programIdLegacy,\n Buffer.from(getCompDefAccOffset(ixName)).readUInt32LE()\n )\n );\n\n return {\n mxeAccount,\n clusterAccount,\n mempoolAccount,\n executingPool,\n computationAccount,\n compDefAccount,\n computationOffset,\n }\n}","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getStakeInstructionAsync,\n type StakeInstruction,\n} from \"../generated\";\nimport { type ArciumConfig, getComputeAccounts } from \"../arcium/computeAccounts\";\nimport { type ByteArray, toNumberArray } from \"../utils\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface StakeParams extends BaseInstructionParams {\n signer: TransactionSigner;\n payer: TransactionSigner;\n market: Address;\n /** PDA of the stake_account being staked into. Use `getStakeAccountAddress(owner, market, id)`. */\n stakeAccount: Address;\n stakeAccountId: number;\n tokenMint: Address;\n signerTokenAccount: Address;\n tokenProgram: Address;\n /** Gross amount (net + fee). Fee is deducted on-chain and routed to the fee vault ATA. */\n amount: bigint;\n selectedOptionCiphertext: ByteArray;\n inputNonce: bigint;\n authorizedReaderNonce: bigint;\n /** User's x25519 public key (NOT their Solana wallet pubkey). */\n userPubkey: ByteArray;\n /** u128 nonce committed to encrypted-state derivation. */\n stateNonce: bigint;\n}\n\nexport async function stake(\n input: StakeParams,\n config: ArciumConfig,\n): Promise<StakeInstruction<string>> {\n const {\n programAddress,\n signer,\n payer,\n market,\n stakeAccount,\n stakeAccountId,\n tokenMint,\n signerTokenAccount,\n tokenProgram,\n amount,\n selectedOptionCiphertext,\n inputNonce,\n authorizedReaderNonce,\n userPubkey,\n stateNonce,\n } = input;\n\n return getStakeInstructionAsync(\n {\n ...getComputeAccounts(\"stake\", config),\n signer,\n payer,\n market,\n stakeAccount,\n stakeAccountId,\n tokenMint,\n signerTokenAccount,\n tokenProgram,\n amount,\n selectedOptionCiphertext: toNumberArray(selectedOptionCiphertext),\n inputNonce,\n authorizedReaderNonce,\n userPubkey: toNumberArray(userPubkey),\n stateNonce,\n },\n programAddress ? { programAddress } : undefined,\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getRevealStakeInstructionAsync,\n type RevealStakeInstruction,\n} from \"../generated\";\nimport { type ArciumConfig, getComputeAccounts } from \"../arcium/computeAccounts\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface RevealStakeParams extends BaseInstructionParams {\n signer: TransactionSigner;\n owner: Address;\n market: Address;\n stakeAccountId: number;\n}\n\nexport async function revealStake(\n input: RevealStakeParams,\n config: ArciumConfig\n): Promise<RevealStakeInstruction<string>> {\n const { programAddress, signer, owner, market, stakeAccountId } = input;\n\n return getRevealStakeInstructionAsync(\n {\n ...getComputeAccounts(\"reveal_stake\", config),\n signer,\n owner,\n market,\n stakeAccountId,\n },\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getAddMarketOptionInstructionAsync,\n type AddMarketOptionInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface AddMarketOptionParams extends BaseInstructionParams {\n signer: TransactionSigner;\n market: Address;\n optionId: number | bigint;\n}\n\nexport async function addMarketOption(\n input: AddMarketOptionParams\n): Promise<AddMarketOptionInstruction<string>> {\n const { programAddress, ...params } = input;\n return getAddMarketOptionInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getOpenMarketInstruction,\n type OpenMarketInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface OpenMarketParams extends BaseInstructionParams {\n marketAuthority: TransactionSigner;\n market: Address;\n platformConfig: Address;\n timeToStake: bigint;\n}\n\nexport function openMarket(\n input: OpenMarketParams\n): OpenMarketInstruction<string> {\n const { programAddress, ...params } = input;\n return getOpenMarketInstruction(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getPauseStakingInstruction,\n type PauseStakingInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface PauseStakingParams extends BaseInstructionParams {\n marketAuthority: TransactionSigner;\n market: Address;\n}\n\nexport function pauseStaking(\n input: PauseStakingParams,\n): PauseStakingInstruction<string> {\n const { programAddress, ...params } = input;\n return getPauseStakingInstruction(\n params,\n programAddress ? { programAddress } : undefined,\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getResumeStakingInstruction,\n type ResumeStakingInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface ResumeStakingParams extends BaseInstructionParams {\n marketAuthority: TransactionSigner;\n market: Address;\n}\n\nexport function resumeStaking(\n input: ResumeStakingParams,\n): ResumeStakingInstruction<string> {\n const { programAddress, ...params } = input;\n return getResumeStakingInstruction(\n params,\n programAddress ? { programAddress } : undefined,\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getSetWinningOptionInstructionAsync,\n type SetWinningOptionInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface SetWinningOptionParams extends BaseInstructionParams {\n marketAuthority: TransactionSigner;\n market: Address;\n optionId: number | bigint;\n rewardBp: number;\n}\n\nexport async function setWinningOption(\n input: SetWinningOptionParams,\n): Promise<SetWinningOptionInstruction<string>> {\n const { programAddress, ...params } = input;\n return getSetWinningOptionInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined,\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getResolveMarketInstruction,\n type ResolveMarketInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface ResolveMarketParams extends BaseInstructionParams {\n marketAuthority: TransactionSigner;\n market: Address;\n}\n\nexport function resolveMarket(\n input: ResolveMarketParams,\n): ResolveMarketInstruction<string> {\n const { programAddress, ...params } = input;\n return getResolveMarketInstruction(\n params,\n programAddress ? { programAddress } : undefined,\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getEndRevealPeriodInstruction,\n type EndRevealPeriodInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface EndRevealPeriodParams extends BaseInstructionParams {\n signer: TransactionSigner;\n market: Address;\n}\n\nexport function endRevealPeriod(\n input: EndRevealPeriodParams\n): EndRevealPeriodInstruction<string> {\n const { programAddress, ...params } = input;\n return getEndRevealPeriodInstruction(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getAddRewardInstructionAsync,\n type AddRewardInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface AddRewardParams extends BaseInstructionParams {\n sponsor: TransactionSigner;\n market: Address;\n tokenMint: Address;\n sponsorTokenAccount: Address;\n tokenProgram: Address;\n amount: bigint;\n lock: boolean;\n}\n\nexport async function addReward(\n input: AddRewardParams\n): Promise<AddRewardInstruction<string>> {\n const { programAddress, ...params } = input;\n return getAddRewardInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getInitStakeAccountInstructionAsync,\n type InitStakeAccountInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface InitStakeAccountParams extends BaseInstructionParams {\n payer: TransactionSigner;\n owner: Address;\n market: Address;\n stakeAccountId: number;\n}\n\nexport async function initStakeAccount(\n input: InitStakeAccountParams\n): Promise<InitStakeAccountInstruction<string>> {\n const { programAddress, ...params } = input;\n return getInitStakeAccountInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getInitAllowedMintInstructionAsync,\n type InitAllowedMintInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface InitAllowedMintParams extends BaseInstructionParams {\n updateAuthority: TransactionSigner;\n platformConfig: Address;\n tokenMint: Address;\n}\n\nexport async function initAllowedMint(\n input: InitAllowedMintParams,\n): Promise<InitAllowedMintInstruction<string>> {\n const { programAddress, ...params } = input;\n return getInitAllowedMintInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined,\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getCloseStakeAccountInstructionAsync,\n type CloseStakeAccountInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface CloseStakeAccountParams extends BaseInstructionParams {\n owner: TransactionSigner;\n market: Address;\n tokenMint: Address;\n ownerTokenAccount: Address;\n tokenProgram: Address;\n optionId: number | bigint;\n stakeAccountId: number;\n}\n\nexport async function closeStakeAccount(\n input: CloseStakeAccountParams\n): Promise<CloseStakeAccountInstruction<string>> {\n const { programAddress, ...params } = input;\n return getCloseStakeAccountInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getCloseStuckStakeAccountInstructionAsync,\n type CloseStuckStakeAccountInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface CloseStuckStakeAccountParams extends BaseInstructionParams {\n signer: TransactionSigner;\n market: Address;\n tokenMint: Address;\n signerTokenAccount: Address;\n tokenProgram: Address;\n stakeAccountId: number;\n}\n\nexport async function closeStuckStakeAccount(\n input: CloseStuckStakeAccountParams\n): Promise<CloseStuckStakeAccountInstruction<string>> {\n const { programAddress, ...params } = input;\n return getCloseStuckStakeAccountInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getCloseOptionAccountInstructionAsync,\n type CloseOptionAccountInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface CloseOptionAccountParams extends BaseInstructionParams {\n signer: TransactionSigner;\n creator: Address;\n market: Address;\n optionId: number | bigint;\n}\n\nexport async function closeOptionAccount(\n input: CloseOptionAccountParams\n): Promise<CloseOptionAccountInstruction<string>> {\n const { programAddress, ...params } = input;\n return getCloseOptionAccountInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getUnstakeInstructionAsync,\n type UnstakeInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface UnstakeParams extends BaseInstructionParams {\n signer: TransactionSigner;\n owner: Address;\n market: Address;\n tokenMint: Address;\n ownerTokenAccount: Address;\n tokenProgram: Address;\n stakeAccountId: number;\n}\n\nexport async function unstake(\n input: UnstakeParams,\n): Promise<UnstakeInstruction<string>> {\n const { programAddress, ...params } = input;\n\n return getUnstakeInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getFinalizeRevealStakeInstructionAsync,\n type FinalizeRevealStakeInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface FinalizeRevealStakeParams extends BaseInstructionParams {\n signer: TransactionSigner;\n owner: Address;\n market: Address;\n optionId: number | bigint;\n stakeAccountId: number;\n}\n\nexport async function finalizeRevealStake(\n input: FinalizeRevealStakeParams\n): Promise<FinalizeRevealStakeInstruction<string>> {\n const { programAddress, ...params } = input;\n return getFinalizeRevealStakeInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import {\n type Address,\n getAddressEncoder,\n getProgramDerivedAddress,\n getUtf8Encoder,\n type ProgramDerivedAddress,\n} from \"@solana/kit\";\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from \"../generated\";\n\nexport const PLATFORM_CONFIG_SEED = \"platform_config\";\n\nexport async function getPlatformConfigAddress(\n authority: Address,\n name: string,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n PLATFORM_CONFIG_SEED,\n getAddressEncoder().encode(authority),\n getUtf8Encoder().encode(name),\n ],\n });\n}\n","import { type TransactionSigner, type Address, type Instruction } from \"@solana/kit\";\nimport {\n fetchMaybePlatformConfig,\n getInitPlatformConfigInstructionAsync,\n} from \"../generated\";\nimport { getPlatformConfigAddress } from \"../accounts/platformConfig\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface CreatePlatformConfigParams extends BaseInstructionParams {\n signer: TransactionSigner;\n name: string;\n platformFeeBp: number;\n rewardPoolFeeBp: number;\n creatorFeeBp: number;\n feeClaimAuthority: Address;\n minTimeToStakeSeconds: bigint;\n minRevealPeriodSeconds: bigint;\n maxRevealPeriodSeconds: bigint;\n marketResolutionDeadlineSeconds: bigint;\n}\n\nexport async function createPlatformConfig(\n rpc: Parameters<typeof fetchMaybePlatformConfig>[0],\n params: CreatePlatformConfigParams,\n): Promise<Instruction> {\n const {\n programAddress,\n signer,\n name,\n platformFeeBp,\n rewardPoolFeeBp,\n creatorFeeBp,\n feeClaimAuthority,\n minTimeToStakeSeconds,\n minRevealPeriodSeconds,\n maxRevealPeriodSeconds,\n marketResolutionDeadlineSeconds,\n } = params;\n\n const [platformConfigAddress] = await getPlatformConfigAddress(\n signer.address,\n name,\n programAddress,\n );\n const existing = await fetchMaybePlatformConfig(rpc, platformConfigAddress);\n if (existing.exists) {\n throw new Error(\n `Platform config already exists for (${signer.address}, \"${name}\") at ${platformConfigAddress}`,\n );\n }\n\n return getInitPlatformConfigInstructionAsync(\n {\n payer: signer,\n name,\n platformFeeBp,\n rewardPoolFeeBp,\n creatorFeeBp,\n feeClaimAuthority,\n minTimeToStakeSeconds,\n minRevealPeriodSeconds,\n maxRevealPeriodSeconds,\n marketResolutionDeadlineSeconds,\n },\n programAddress ? { programAddress } : undefined,\n ) as Promise<Instruction>;\n}\n","import { type TransactionSigner, type Instruction } from \"@solana/kit\";\nimport {\n fetchMaybePlatformConfig,\n getUpdatePlatformConfigInstruction,\n} from \"../generated\";\nimport { getPlatformConfigAddress } from \"../accounts/platformConfig\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface UpdatePlatformConfigParams extends BaseInstructionParams {\n signer: TransactionSigner;\n name: string;\n platformFeeBp: number;\n rewardPoolFeeBp: number;\n creatorFeeBp: number;\n minTimeToStakeSeconds: bigint;\n minRevealPeriodSeconds: bigint;\n maxRevealPeriodSeconds: bigint;\n marketResolutionDeadlineSeconds: bigint;\n}\n\nexport async function updatePlatformConfig(\n rpc: Parameters<typeof fetchMaybePlatformConfig>[0],\n params: UpdatePlatformConfigParams,\n): Promise<Instruction> {\n const {\n programAddress,\n signer,\n name,\n platformFeeBp,\n rewardPoolFeeBp,\n creatorFeeBp,\n minTimeToStakeSeconds,\n minRevealPeriodSeconds,\n maxRevealPeriodSeconds,\n marketResolutionDeadlineSeconds,\n } = params;\n\n const [platformConfigAddress] = await getPlatformConfigAddress(\n signer.address,\n name,\n programAddress,\n );\n const existing = await fetchMaybePlatformConfig(rpc, platformConfigAddress);\n if (!existing.exists) {\n throw new Error(\n `Platform config does not exist for (${signer.address}, \"${name}\") at ${platformConfigAddress}`,\n );\n }\n\n return getUpdatePlatformConfigInstruction(\n {\n updateAuthority: signer,\n platformConfig: platformConfigAddress,\n platformFeeBp,\n rewardPoolFeeBp,\n creatorFeeBp,\n minTimeToStakeSeconds,\n minRevealPeriodSeconds,\n maxRevealPeriodSeconds,\n marketResolutionDeadlineSeconds,\n },\n programAddress ? { programAddress } : undefined,\n ) as Instruction;\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getClaimFeesInstructionAsync,\n type ClaimFeesInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface ClaimFeesParams extends BaseInstructionParams {\n signer: TransactionSigner;\n market: Address;\n platformConfig: Address;\n tokenMint: Address;\n destinationTokenAccount: Address;\n tokenProgram: Address;\n}\n\nexport async function claimFees(\n input: ClaimFeesParams\n): Promise<ClaimFeesInstruction<string>> {\n const { programAddress, ...params } = input;\n return getClaimFeesInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getClaimCreatorFeesInstructionAsync,\n type ClaimCreatorFeesInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface ClaimCreatorFeesParams extends BaseInstructionParams {\n signer: TransactionSigner;\n market: Address;\n tokenMint: Address;\n destinationTokenAccount: Address;\n tokenProgram: Address;\n}\n\nexport async function claimCreatorFees(\n input: ClaimCreatorFeesParams\n): Promise<ClaimCreatorFeesInstruction<string>> {\n const { programAddress, ...params } = input;\n return getClaimCreatorFeesInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getWithdrawRewardInstructionAsync,\n type WithdrawRewardInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface WithdrawRewardParams extends BaseInstructionParams {\n sponsor: TransactionSigner;\n market: Address;\n tokenMint: Address;\n refundTokenAccount: Address;\n tokenProgram: Address;\n}\n\nexport async function withdrawReward(\n input: WithdrawRewardParams\n): Promise<WithdrawRewardInstruction<string>> {\n const { programAddress, ...params } = input;\n return getWithdrawRewardInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getSetUpdateAuthorityInstruction,\n type SetUpdateAuthorityInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface SetUpdateAuthorityParams extends BaseInstructionParams {\n updateAuthority: TransactionSigner;\n platformConfig: Address;\n newAuthority: Address;\n}\n\nexport function setUpdateAuthority(\n input: SetUpdateAuthorityParams,\n): SetUpdateAuthorityInstruction<string> {\n const { programAddress, ...params } = input;\n return getSetUpdateAuthorityInstruction(\n params,\n programAddress ? { programAddress } : undefined,\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getSetFeeClaimAuthorityInstruction,\n type SetFeeClaimAuthorityInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface SetFeeClaimAuthorityParams extends BaseInstructionParams {\n updateAuthority: TransactionSigner;\n platformConfig: Address;\n newFeeClaimAuthority: Address;\n}\n\nexport function setFeeClaimAuthority(\n input: SetFeeClaimAuthorityParams,\n): SetFeeClaimAuthorityInstruction<string> {\n const { programAddress, ...params } = input;\n return getSetFeeClaimAuthorityInstruction(\n params,\n programAddress ? { programAddress } : undefined,\n );\n}\n","import {\n type Address,\n getAddressEncoder,\n getProgramDerivedAddress,\n type ProgramDerivedAddress,\n} from \"@solana/kit\";\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from \"../generated\";\n\nexport const ALLOWED_MINT_SEED = \"allowed_mint\";\n\nexport async function getAllowedMintAddress(\n platformConfig: Address,\n mint: Address,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n): Promise<ProgramDerivedAddress> {\n const enc = getAddressEncoder();\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [ALLOWED_MINT_SEED, enc.encode(platformConfig), enc.encode(mint)],\n });\n}\n","import {\n type Address,\n getAddressEncoder,\n getU64Encoder,\n getProgramDerivedAddress,\n type ProgramDerivedAddress,\n} from \"@solana/kit\";\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from \"../generated\";\n\nexport const OPPORTUNITY_MARKET_SEED = \"opportunity_market\";\n\nexport async function getOpportunityMarketAddress(\n platformConfig: Address,\n creator: Address,\n marketIndex: bigint | number,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n OPPORTUNITY_MARKET_SEED,\n getAddressEncoder().encode(platformConfig),\n getAddressEncoder().encode(creator),\n getU64Encoder().encode(BigInt(marketIndex)),\n ],\n });\n}\n","import {\n type Address,\n getAddressEncoder,\n getU64Encoder,\n getProgramDerivedAddress,\n type ProgramDerivedAddress,\n} from \"@solana/kit\";\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from \"../generated\";\n\nexport const OPPORTUNITY_MARKET_OPTION_SEED = \"option\";\n\nexport async function getOpportunityMarketOptionAddress(\n market: Address,\n optionId: number | bigint,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n OPPORTUNITY_MARKET_OPTION_SEED,\n getAddressEncoder().encode(market),\n getU64Encoder().encode(optionId),\n ],\n });\n}\n","import {\n type Address,\n getAddressEncoder,\n getProgramDerivedAddress,\n type ProgramDerivedAddress,\n} from \"@solana/kit\";\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from \"../generated\";\n\nexport const SPONSOR_SEED = \"sponsor\";\n\nexport async function getOpportunityMarketSponsorAddress(\n sponsor: Address,\n market: Address,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n const addressEncoder = getAddressEncoder();\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n SPONSOR_SEED,\n addressEncoder.encode(sponsor),\n addressEncoder.encode(market),\n ],\n });\n}\n","import {\n type Address,\n getAddressEncoder,\n getProgramDerivedAddress,\n type ProgramDerivedAddress,\n} from \"@solana/kit\";\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from \"../generated\";\n\nexport const STAKE_ACCOUNT_SEED = \"stake_account\";\n\nexport async function getStakeAccountAddress(\n owner: Address,\n market: Address,\n stakeAccountId: number,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n const addressEncoder = getAddressEncoder();\n const idBytes = new Uint8Array(4);\n new DataView(idBytes.buffer).setUint32(0, stakeAccountId, true);\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n STAKE_ACCOUNT_SEED,\n addressEncoder.encode(owner),\n addressEncoder.encode(market),\n idBytes,\n ],\n });\n}\n","// Adapted from:\n// https://github.com/quiknode-labs/arcium-election/blob/main/tests/arcium-solana-kit/helpers.ts\n\nimport { type Address, getAddressEncoder, type Rpc, type SolanaRpcApi} from \"@solana/kit\";\nimport { ARCIUM_PROGRAM_ID } from \"./constants\";\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from \"../generated\";\n\n\n/**\n * Event discriminator for FinalizeComputationEvent from Arcium IDL.\n * Computed as first 8 bytes of SHA256(\"event:FinalizeComputationEvent\")\n */\nconst FINALIZE_COMPUTATION_EVENT_DISCRIMINATOR = new Uint8Array([27, 75, 117, 221, 191, 213, 253, 249]);\n\n/**\n * Serializes a bigint to a little-endian byte array of specified length.\n */\nfunction serializeLE(val: bigint, lengthInBytes: number): Uint8Array {\n const result = new Uint8Array(lengthInBytes);\n let tempVal = val;\n for (let i = 0; i < lengthInBytes; i++) {\n result[i] = Number(tempVal & BigInt(255));\n tempVal >>= BigInt(8);\n }\n return result;\n}\n\nfunction bytesEqual(a: ArrayLike<number>, b: ArrayLike<number>): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\n\n\nexport interface AwaitComputationOptions {\n commitment?: \"processed\" | \"confirmed\" | \"finalized\";\n mxeProgramId?: Address;\n transactionCountLimit?: number;\n pollInterval?: number;\n maxAttempts?: number;\n}\n\nexport interface ComputationResult {\n signature: string;\n error?: string;\n}\n\n/**\n * Waits for multiple computations to be finalized on the Arcium network.\n * Returns a map of computationOffset -> ComputationResult for all found computations.\n * If a computation's callback transaction failed, the error field will be populated.\n */\nexport const awaitBatchComputationFinalization = async (\n rpc: Rpc<SolanaRpcApi>,\n computationOffsets: bigint[],\n options?: AwaitComputationOptions\n): Promise<Map<bigint, ComputationResult>> => {\n if (computationOffsets.length === 0) {\n return new Map();\n }\n\n const mxeProgramId = options?.mxeProgramId ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n const commitment = options?.commitment ?? \"confirmed\";\n const mxeProgramIdBytes = getAddressEncoder().encode(mxeProgramId);\n\n const transactionCountLimit = options?.transactionCountLimit ?? 100;\n const pollInterval = options?.pollInterval ?? 1000;\n const maxAttempts = options?.maxAttempts ?? 120;\n\n // Pre-compute offset bytes for all offsets\n const offsetBytesMap = new Map<bigint, Uint8Array>();\n for (const offset of computationOffsets) {\n offsetBytesMap.set(offset, serializeLE(offset, 8));\n }\n\n // Track which offsets we've found\n const foundResults = new Map<bigint, ComputationResult>();\n const remainingOffsets = new Set(computationOffsets);\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n try {\n const signatures = await rpc.getSignaturesForAddress(\n ARCIUM_PROGRAM_ID,\n { limit: transactionCountLimit }\n ).send();\n\n for (const sigInfo of signatures) {\n const tx = await rpc.getTransaction(sigInfo.signature, {\n commitment,\n encoding: \"json\",\n maxSupportedTransactionVersion: 0,\n }).send();\n\n if (!tx) continue;\n\n const logs = tx.meta?.logMessages || [];\n\n for (const log of logs) {\n if (log.includes('Program data:')) {\n const base64Data = log.split('Program data: ')[1];\n if (!base64Data) continue;\n\n try {\n const eventData = Uint8Array.from(atob(base64Data), c => c.charCodeAt(0));\n\n if (eventData.length >= 48 &&\n bytesEqual(eventData.subarray(0, 8), FINALIZE_COMPUTATION_EVENT_DISCRIMINATOR)) {\n\n const eventOffsetBytes = eventData.subarray(8, 16);\n const eventMxeProgramId = eventData.subarray(16, 48);\n\n if (!bytesEqual(eventMxeProgramId, mxeProgramIdBytes)) continue;\n\n // Check against all remaining offsets\n for (const offset of remainingOffsets) {\n const expectedBytes = offsetBytesMap.get(offset)!;\n if (bytesEqual(eventOffsetBytes, expectedBytes)) {\n // Check if transaction failed (callback error)\n const txError = tx.meta?.err;\n let errorMessage: string | undefined;\n\n if (txError) {\n // Extract error message from logs if available\n const errorLog = logs.find(l => l.includes('Error') || l.includes('failed'));\n errorMessage = errorLog || JSON.stringify(txError);\n }\n\n foundResults.set(offset, {\n signature: sigInfo.signature,\n error: errorMessage,\n });\n remainingOffsets.delete(offset);\n break;\n }\n }\n }\n } catch {\n continue;\n }\n }\n }\n\n // Early exit if all found\n if (remainingOffsets.size === 0) {\n return foundResults;\n }\n }\n\n // Check if done\n if (remainingOffsets.size === 0) {\n return foundResults;\n }\n\n await new Promise(resolve => setTimeout(resolve, pollInterval));\n } catch (error) {\n await new Promise(resolve => setTimeout(resolve, pollInterval));\n }\n }\n\n const missingOffsets = Array.from(remainingOffsets).join(', ');\n throw new Error(\n `Computation finalization timed out after ${maxAttempts} attempts. Missing offsets: ${missingOffsets}`\n );\n};\n\n/**\n * Waits for a single computation to be finalized on the Arcium network.\n * Returns a ComputationResult with the signature and an optional error if the callback failed.\n */\nexport const awaitComputationFinalization = async (\n rpc: Rpc<SolanaRpcApi>,\n computationOffset: bigint,\n options?: AwaitComputationOptions\n): Promise<ComputationResult> => {\n const results = await awaitBatchComputationFinalization(rpc, [computationOffset], options);\n return results.get(computationOffset)!;\n};\n","import { Address } from \"@solana/kit\";\n\nexport const ARCIUM_PROGRAM_ID = \"Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ\" as Address<\"Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ\">;","import { RescueCipher, x25519 } from \"@arcium-hq/client\";\nimport { BN } from \"bn.js\";\nimport { createHash } from \"crypto\";\n\nexport interface X25519Keypair {\n publicKey: Uint8Array;\n secretKey: Uint8Array;\n}\n\n/**\n * Generates a new X25519 keypair.\n * Used for encrypted computations with Arcium.\n */\nexport function generateX25519Keypair(): X25519Keypair {\n const secretKey = x25519.utils.randomSecretKey();\n const publicKey = x25519.getPublicKey(secretKey);\n return { publicKey, secretKey };\n}\n\n/**\n * Derives an X25519 keypair deterministically from a signature\n */\nexport function deriveX25519KeypairFromSignature(signature: Uint8Array): X25519Keypair {\n const secretKey = new Uint8Array(createHash(\"sha256\").update(signature).digest());\n const publicKey = x25519.getPublicKey(secretKey);\n return { secretKey, publicKey };\n}\n\n/**\n * Derives the shared secret between a user's secret key and the MXE public key.\n * Use this to create a RescueCipher for encryption/decryption.\n */\nexport function deriveSharedSecret(userSecretKey: Uint8Array, mxePublicKey: Uint8Array): Uint8Array {\n return x25519.getSharedSecret(userSecretKey, mxePublicKey);\n}\n\n/**\n * Creates a RescueCipher from a user's secret key and MXE public key.\n * Convenience function combining deriveSharedSecret + RescueCipher creation.\n */\nexport function createCipher(userSecretKey: Uint8Array, mxePublicKey: Uint8Array): RescueCipher {\n const sharedSecret = deriveSharedSecret(userSecretKey, mxePublicKey);\n return new RescueCipher(sharedSecret);\n}\n\nexport function nonceToBytes(nonce: bigint): Uint8Array {\n return Uint8Array.from(new BN(nonce.toString()).toArray(\"le\", 16));\n}\n"],"mappings":"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","names":["address","assertAccountExists","assertAccountsExist","combineCodec","decodeAccount","fetchEncodedAccount","fetchEncodedAccounts","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","getU8Decoder","getU8Encoder","transformEncoder","address","assertAccountExists","assertAccountsExist","combineCodec","decodeAccount","fetchEncodedAccount","fetchEncodedAccounts","fixDecoderSize","fixEncoderSize","getAddressDecoder","getAddressEncoder","getArrayDecoder","getArrayEncoder","getBooleanDecoder","getBooleanEncoder","getBytesDecoder","getBytesEncoder","getOptionDecoder","getOptionEncoder","getStructDecoder","getStructEncoder","getU16Decoder","getU16Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","transformEncoder","combineCodec","getStructDecoder","getStructEncoder","getStructEncoder","getStructDecoder","combineCodec","combineCodec","getAddressDecoder","getAddressEncoder","getStructDecoder","getStructEncoder","combineCodec","getU8Decoder","getU8Encoder","combineCodec","getStructDecoder","getStructEncoder","getTupleDecoder","getTupleEncoder","getStructEncoder","getTupleEncoder","getStructDecoder","getTupleDecoder","combineCodec","combineCodec","getStructDecoder","getStructEncoder","getU8Decoder","getU8Encoder","getStructEncoder","getU8Encoder","getStructDecoder","getU8Decoder","combineCodec","combineCodec","getAddressDecoder","getAddressEncoder","getArrayDecoder","getArrayEncoder","getDiscriminatedUnionDecoder","getDiscriminatedUnionEncoder","getStructDecoder","getStructEncoder","getTupleDecoder","getTupleEncoder","getU8Decoder","getU8Encoder","getStructEncoder","getAddressEncoder","getArrayEncoder","getDiscriminatedUnionEncoder","getTupleEncoder","getU8Encoder","getStructDecoder","getAddressDecoder","getArrayDecoder","getDiscriminatedUnionDecoder","getTupleDecoder","getU8Decoder","combineCodec","combineCodec","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","getArrayDecoder","getArrayEncoder","getOptionDecoder","getOptionEncoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","getStructEncoder","getOptionEncoder","getU64Encoder","getU8Encoder","getArrayEncoder","getStructDecoder","getOptionDecoder","getU64Decoder","getU8Decoder","getArrayDecoder","combineCodec","combineCodec","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getStructEncoder","getU32Encoder","getStructDecoder","getU32Decoder","combineCodec","combineCodec","getArrayDecoder","getArrayEncoder","getStructDecoder","getStructEncoder","getStructEncoder","getArrayEncoder","getStructDecoder","getArrayDecoder","combineCodec","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","getTupleDecoder","getTupleEncoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","combineCodec","getStructDecoder","getStructEncoder","getU8Decoder","getU8Encoder","combineCodec","getStructDecoder","getStructEncoder","getU16Decoder","getU16Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","LocalCircuitSource","combineCodec","getAddressDecoder","getAddressEncoder","getArrayDecoder","getArrayEncoder","getBooleanDecoder","getBooleanEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU16Decoder","getU16Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","getStructEncoder","getAddressEncoder","getU64Encoder","getU16Encoder","getArrayEncoder","getU8Encoder","getBooleanEncoder","getI64Encoder","getStructDecoder","getAddressDecoder","getU64Decoder","getU16Decoder","getArrayDecoder","getU8Decoder","getBooleanDecoder","getI64Decoder","combineCodec","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","combineCodec","getAddressDecoder","getAddressEncoder","getArrayDecoder","getArrayEncoder","getBooleanDecoder","getBooleanEncoder","getDiscriminatedUnionDecoder","getDiscriminatedUnionEncoder","getOptionDecoder","getOptionEncoder","getStructDecoder","getStructEncoder","getTupleDecoder","getTupleEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","getStructEncoder","getU8Encoder","getU32Encoder","getU64Encoder","getAddressEncoder","getOptionEncoder","getDiscriminatedUnionEncoder","getTupleEncoder","getArrayEncoder","getBooleanEncoder","getStructDecoder","getU8Decoder","getU32Decoder","getU64Decoder","getAddressDecoder","getOptionDecoder","getDiscriminatedUnionDecoder","getTupleDecoder","getArrayDecoder","getBooleanDecoder","combineCodec","combineCodec","getEnumDecoder","getEnumEncoder","MxeStatus","combineCodec","getArrayDecoder","getArrayEncoder","getStructDecoder","getStructEncoder","getU8Decoder","getU8Encoder","combineCodec","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","combineCodec","getArrayDecoder","getArrayEncoder","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU8Decoder","getU8Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getBooleanDecoder","getBooleanEncoder","getStructDecoder","getStructEncoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","getEnumDecoder","getEnumEncoder","Output","combineCodec","getEnumDecoder","getEnumEncoder","Parameter","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","combineCodec","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getBooleanDecoder","getBooleanEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getArrayDecoder","getArrayEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU128Decoder","getU128Encoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","combineCodec","getStructDecoder","getStructEncoder","getStructEncoder","getStructDecoder","combineCodec","combineCodec","getArrayDecoder","getArrayEncoder","getStructDecoder","getStructEncoder","getU128Decoder","getU128Encoder","getU8Decoder","getU8Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","combineCodec","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","combineCodec","getArrayDecoder","getArrayEncoder","getStructDecoder","getStructEncoder","getU8Decoder","getU8Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU16Decoder","getU16Encoder","getU64Decoder","getU64Encoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU8Encoder","getAddressEncoder","getU64Encoder","getOptionEncoder","getU16Encoder","getBooleanEncoder","getArrayEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU8Decoder","getAddressDecoder","getU64Decoder","getOptionDecoder","getU16Decoder","getBooleanDecoder","getArrayDecoder","combineCodec","decodeAccount","address","assertAccountExists","fetchEncodedAccount","assertAccountsExist","fetchEncodedAccounts","assertAccountExists","assertAccountsExist","combineCodec","decodeAccount","fetchEncodedAccount","fetchEncodedAccounts","fixDecoderSize","fixEncoderSize","getAddressDecoder","getAddressEncoder","getBytesDecoder","getBytesEncoder","getOptionDecoder","getOptionEncoder","getStructDecoder","getStructEncoder","getU128Decoder","getU128Encoder","getU16Decoder","getU16Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","transformEncoder","address","assertAccountExists","assertAccountsExist","combineCodec","decodeAccount","fetchEncodedAccount","fetchEncodedAccounts","fixDecoderSize","fixEncoderSize","getAddressDecoder","getAddressEncoder","getBooleanDecoder","getBooleanEncoder","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","transformEncoder","address","addDecoderSizePrefix","addEncoderSizePrefix","assertAccountExists","assertAccountsExist","combineCodec","decodeAccount","fetchEncodedAccount","fetchEncodedAccounts","fixDecoderSize","fixEncoderSize","getAddressDecoder","getAddressEncoder","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","getUtf8Decoder","getUtf8Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU8Encoder","addEncoderSizePrefix","getUtf8Encoder","getU32Encoder","getAddressEncoder","getU64Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU8Decoder","addDecoderSizePrefix","getUtf8Decoder","getU32Decoder","getAddressDecoder","getU64Decoder","combineCodec","decodeAccount","address","assertAccountExists","fetchEncodedAccount","assertAccountsExist","fetchEncodedAccounts","assertAccountExists","assertAccountsExist","combineCodec","decodeAccount","fetchEncodedAccount","fetchEncodedAccounts","fixDecoderSize","fixEncoderSize","getAddressDecoder","getAddressEncoder","getArrayDecoder","getArrayEncoder","getBooleanDecoder","getBooleanEncoder","getBytesDecoder","getBytesEncoder","getOptionDecoder","getOptionEncoder","getStructDecoder","getStructEncoder","getU128Decoder","getU128Encoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getArrayEncoder","getU8Encoder","getU128Encoder","getAddressEncoder","getOptionEncoder","getU64Encoder","getBooleanEncoder","getU32Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getArrayDecoder","getU8Decoder","getU128Decoder","getAddressDecoder","getOptionDecoder","getU64Decoder","getBooleanDecoder","getU32Decoder","combineCodec","decodeAccount","address","assertAccountExists","fetchEncodedAccount","assertAccountsExist","fetchEncodedAccounts","fixEncoderSize","getBytesEncoder","OpportunityMarketAccount","OpportunityMarketInstruction","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","combineCodec","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBooleanDecoder","getBooleanEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getBooleanEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","getBooleanDecoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getU32Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","getU32Decoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU32Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU32Decoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressDecoder","getAddressEncoder","getArrayDecoder","getArrayEncoder","getBooleanDecoder","getBooleanEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU16Decoder","getU16Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getAddressEncoder","getBooleanEncoder","getArrayEncoder","getU8Encoder","getU16Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","getAddressDecoder","getBooleanDecoder","getArrayDecoder","getU8Decoder","getU16Decoder","combineCodec","getProgramDerivedAddress","combineCodec","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getU32Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","getU32Decoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","addDecoderSizePrefix","addEncoderSizePrefix","combineCodec","fixDecoderSize","fixEncoderSize","getAddressDecoder","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU16Decoder","getU16Encoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","getUtf8Decoder","getUtf8Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","addEncoderSizePrefix","getUtf8Encoder","getU32Encoder","getU16Encoder","getAddressEncoder","getU64Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","addDecoderSizePrefix","getUtf8Decoder","getU32Decoder","getU16Decoder","getAddressDecoder","getU64Decoder","combineCodec","getProgramDerivedAddress","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU32Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU32Decoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getU32Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","getU32Decoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getArrayDecoder","getArrayEncoder","getBytesDecoder","getBytesEncoder","getDiscriminatedUnionDecoder","getDiscriminatedUnionEncoder","getStructDecoder","getStructEncoder","getTupleDecoder","getTupleEncoder","getU8Decoder","getU8Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getDiscriminatedUnionEncoder","getTupleEncoder","getArrayEncoder","getU8Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getDiscriminatedUnionDecoder","getTupleDecoder","getArrayDecoder","getU8Decoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU16Decoder","getU16Encoder","getU64Decoder","getU64Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getU16Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","getU16Decoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getArrayDecoder","getArrayEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU128Decoder","getU128Encoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getU32Encoder","getArrayEncoder","getU8Encoder","getU128Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","getU32Decoder","getArrayDecoder","getU8Decoder","getU128Decoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getArrayDecoder","getArrayEncoder","getBytesDecoder","getBytesEncoder","getDiscriminatedUnionDecoder","getDiscriminatedUnionEncoder","getStructDecoder","getStructEncoder","getTupleDecoder","getTupleEncoder","getU8Decoder","getU8Encoder","getUnitDecoder","getUnitEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getDiscriminatedUnionEncoder","getTupleEncoder","getArrayEncoder","getU8Encoder","getUnitEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getDiscriminatedUnionDecoder","getTupleDecoder","getArrayDecoder","getU8Decoder","getUnitDecoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU32Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU32Decoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","getU16Decoder","getU16Encoder","getU64Decoder","getU64Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU16Encoder","getU64Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU16Decoder","getU64Decoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","assertAccountExists","fetchEncodedAccount","fetchEncodedAccount","assertAccountExists","address","getMXEAccAddress","getCompDefAccAddress","getCompDefAccOffset","PublicKey","BN","toAddress","address","PublicKey","getMXEAccAddress","BN","getCompDefAccAddress","getCompDefAccOffset","getAddressEncoder","getProgramDerivedAddress","getUtf8Encoder","getProgramDerivedAddress","getAddressEncoder","getUtf8Encoder","getAddressEncoder","getProgramDerivedAddress","getAddressEncoder","getProgramDerivedAddress","getAddressEncoder","getU64Encoder","getProgramDerivedAddress","getProgramDerivedAddress","getAddressEncoder","getU64Encoder","getAddressEncoder","getU64Encoder","getProgramDerivedAddress","getProgramDerivedAddress","getAddressEncoder","getU64Encoder","getAddressEncoder","getProgramDerivedAddress","getAddressEncoder","getProgramDerivedAddress","getAddressEncoder","getProgramDerivedAddress","getAddressEncoder","getProgramDerivedAddress","getAddressEncoder","getAddressEncoder","BN"]}
|
|
1
|
+
{"version":3,"sources":["../src/generated/accounts/allowedMint.ts","../src/generated/accounts/arciumSignerAccount.ts","../src/generated/accounts/opportunityMarket.ts","../src/generated/types/activation.ts","../src/generated/types/allowedMintInitializedEvent.ts","../src/generated/types/bN254G2BLSPublicKey.ts","../src/generated/types/circuitSource.ts","../src/generated/types/clockAccount.ts","../src/generated/types/cluster.ts","../src/generated/types/collectedFees.ts","../src/generated/types/computationDefinitionAccount.ts","../src/generated/types/computationDefinitionMeta.ts","../src/generated/types/computationSignature.ts","../src/generated/types/creatorFeesClaimedEvent.ts","../src/generated/types/epoch.ts","../src/generated/types/feeClaimAuthorityChangedEvent.ts","../src/generated/types/feePool.ts","../src/generated/types/feeRates.ts","../src/generated/types/feesClaimedEvent.ts","../src/generated/types/localCircuitSource.ts","../src/generated/types/marketCreatedEvent.ts","../src/generated/types/marketOpenedEvent.ts","../src/generated/types/marketOptionCreatedEvent.ts","../src/generated/types/marketResolvedEvent.ts","../src/generated/types/mXEAccount.ts","../src/generated/types/mxeStatus.ts","../src/generated/types/nodeMetadata.ts","../src/generated/types/nodeRef.ts","../src/generated/types/offChainCircuitSource.ts","../src/generated/types/onChainCircuitSource.ts","../src/generated/types/optionClosedEvent.ts","../src/generated/types/output.ts","../src/generated/types/parameter.ts","../src/generated/types/revealPeriodEndedEvent.ts","../src/generated/types/revealStakeFinalizedEvent.ts","../src/generated/types/revealStakeOutput.ts","../src/generated/types/rewardAddedEvent.ts","../src/generated/types/rewardsClaimedEvent.ts","../src/generated/types/rewardWithdrawnEvent.ts","../src/generated/types/stakeAccountClosedEvent.ts","../src/generated/types/stakeAccountInitializedEvent.ts","../src/generated/types/stakedEvent.ts","../src/generated/types/stakeOutput.ts","../src/generated/types/stakeOutputStruct0.ts","../src/generated/types/stakeRevealedEvent.ts","../src/generated/types/stuckStakeClosedEvent.ts","../src/generated/types/timestamp.ts","../src/generated/types/unstakedEvent.ts","../src/generated/types/updateAuthorityChangedEvent.ts","../src/generated/types/utilityPubkeys.ts","../src/generated/types/winningOptionSetEvent.ts","../src/generated/accounts/opportunityMarketOption.ts","../src/generated/accounts/opportunityMarketSponsor.ts","../src/generated/accounts/platformConfig.ts","../src/generated/accounts/stakeAccount.ts","../src/generated/errors/opportunityMarket.ts","../src/generated/programs/opportunityMarket.ts","../src/generated/instructions/addMarketOption.ts","../src/generated/shared/index.ts","../src/generated/instructions/addReward.ts","../src/generated/instructions/claimCreatorFees.ts","../src/generated/instructions/claimFees.ts","../src/generated/instructions/claimRewards.ts","../src/generated/instructions/closeOptionAccount.ts","../src/generated/instructions/closeStakeAccount.ts","../src/generated/instructions/closeStuckStakeAccount.ts","../src/generated/instructions/closeUnrevealedStakeAccount.ts","../src/generated/instructions/createMarket.ts","../src/generated/instructions/endRevealPeriod.ts","../src/generated/instructions/finalizeRevealStake.ts","../src/generated/instructions/initAllowedMint.ts","../src/generated/instructions/initPlatformConfig.ts","../src/generated/instructions/initStakeAccount.ts","../src/generated/instructions/openMarket.ts","../src/generated/instructions/resolveMarket.ts","../src/generated/instructions/revealStake.ts","../src/generated/instructions/revealStakeCallback.ts","../src/generated/instructions/revealStakeCompDef.ts","../src/generated/instructions/setFeeClaimAuthority.ts","../src/generated/instructions/setUpdateAuthority.ts","../src/generated/instructions/setWinningOption.ts","../src/generated/instructions/stake.ts","../src/generated/instructions/stakeCallback.ts","../src/generated/instructions/stakeCompDef.ts","../src/generated/instructions/unstake.ts","../src/generated/instructions/updatePlatformConfig.ts","../src/generated/instructions/withdrawReward.ts","../src/utils.ts","../src/instructions/createMarket.ts","../src/instructions/initCompDef.ts","../src/arcium/computeAccounts.ts","../src/arcium/awaitFinalizeComputation.ts","../src/instructions/stake.ts","../src/instructions/revealStake.ts","../src/instructions/addMarketOption.ts","../src/instructions/openMarket.ts","../src/instructions/setWinningOption.ts","../src/instructions/resolveMarket.ts","../src/instructions/endRevealPeriod.ts","../src/instructions/addReward.ts","../src/instructions/initStakeAccount.ts","../src/instructions/initAllowedMint.ts","../src/instructions/claimRewards.ts","../src/instructions/closeStakeAccount.ts","../src/instructions/closeUnrevealedStakeAccount.ts","../src/instructions/closeStuckStakeAccount.ts","../src/instructions/closeOptionAccount.ts","../src/instructions/unstake.ts","../src/instructions/finalizeRevealStake.ts","../src/accounts/platformConfig.ts","../src/instructions/createPlatformConfig.ts","../src/instructions/updatePlatformConfig.ts","../src/instructions/claimFees.ts","../src/instructions/claimCreatorFees.ts","../src/instructions/withdrawReward.ts","../src/instructions/setUpdateAuthority.ts","../src/instructions/setFeeClaimAuthority.ts","../src/accounts/allowedMint.ts","../src/accounts/opportunityMarket.ts","../src/accounts/opportunityMarketOption.ts","../src/accounts/opportunityMarketSponsor.ts","../src/accounts/stakeAccount.ts","../src/x25519/keypair.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 {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type EncodedAccount,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const ALLOWED_MINT_DISCRIMINATOR = new Uint8Array([\n 173, 229, 179, 46, 121, 164, 247, 6,\n]);\n\nexport function getAllowedMintDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n ALLOWED_MINT_DISCRIMINATOR\n );\n}\n\nexport type AllowedMint = {\n discriminator: ReadonlyUint8Array;\n bump: number;\n platform: Address;\n mint: Address;\n};\n\nexport type AllowedMintArgs = {\n bump: number;\n platform: Address;\n mint: Address;\n};\n\nexport function getAllowedMintEncoder(): FixedSizeEncoder<AllowedMintArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['platform', getAddressEncoder()],\n ['mint', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: ALLOWED_MINT_DISCRIMINATOR })\n );\n}\n\nexport function getAllowedMintDecoder(): FixedSizeDecoder<AllowedMint> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ['platform', getAddressDecoder()],\n ['mint', getAddressDecoder()],\n ]);\n}\n\nexport function getAllowedMintCodec(): FixedSizeCodec<\n AllowedMintArgs,\n AllowedMint\n> {\n return combineCodec(getAllowedMintEncoder(), getAllowedMintDecoder());\n}\n\nexport function decodeAllowedMint<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<AllowedMint, TAddress>;\nexport function decodeAllowedMint<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<AllowedMint, TAddress>;\nexport function decodeAllowedMint<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<AllowedMint, TAddress> | MaybeAccount<AllowedMint, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getAllowedMintDecoder()\n );\n}\n\nexport async function fetchAllowedMint<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<AllowedMint, TAddress>> {\n const maybeAccount = await fetchMaybeAllowedMint(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeAllowedMint<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<AllowedMint, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeAllowedMint(maybeAccount);\n}\n\nexport async function fetchAllAllowedMint(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<AllowedMint>[]> {\n const maybeAccounts = await fetchAllMaybeAllowedMint(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeAllowedMint(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<AllowedMint>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeAllowedMint(maybeAccount));\n}\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 {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type EncodedAccount,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const ARCIUM_SIGNER_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 214, 157, 122, 114, 117, 44, 214, 74,\n]);\n\nexport function getArciumSignerAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n ARCIUM_SIGNER_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type ArciumSignerAccount = {\n discriminator: ReadonlyUint8Array;\n bump: number;\n};\n\nexport type ArciumSignerAccountArgs = { bump: number };\n\nexport function getArciumSignerAccountEncoder(): FixedSizeEncoder<ArciumSignerAccountArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: ARCIUM_SIGNER_ACCOUNT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getArciumSignerAccountDecoder(): FixedSizeDecoder<ArciumSignerAccount> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ]);\n}\n\nexport function getArciumSignerAccountCodec(): FixedSizeCodec<\n ArciumSignerAccountArgs,\n ArciumSignerAccount\n> {\n return combineCodec(\n getArciumSignerAccountEncoder(),\n getArciumSignerAccountDecoder()\n );\n}\n\nexport function decodeArciumSignerAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<ArciumSignerAccount, TAddress>;\nexport function decodeArciumSignerAccount<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<ArciumSignerAccount, TAddress>;\nexport function decodeArciumSignerAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n | Account<ArciumSignerAccount, TAddress>\n | MaybeAccount<ArciumSignerAccount, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getArciumSignerAccountDecoder()\n );\n}\n\nexport async function fetchArciumSignerAccount<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<ArciumSignerAccount, TAddress>> {\n const maybeAccount = await fetchMaybeArciumSignerAccount(\n rpc,\n address,\n config\n );\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeArciumSignerAccount<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<ArciumSignerAccount, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeArciumSignerAccount(maybeAccount);\n}\n\nexport async function fetchAllArciumSignerAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<ArciumSignerAccount>[]> {\n const maybeAccounts = await fetchAllMaybeArciumSignerAccount(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeArciumSignerAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<ArciumSignerAccount>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeArciumSignerAccount(maybeAccount)\n );\n}\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 {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type Option,\n type OptionOrNullable,\n type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n getFeeRatesDecoder,\n getFeeRatesEncoder,\n type FeeRates,\n type FeeRatesArgs,\n} from '../types';\n\nexport const OPPORTUNITY_MARKET_DISCRIMINATOR = new Uint8Array([\n 207, 103, 169, 160, 157, 215, 97, 224,\n]);\n\nexport function getOpportunityMarketDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n OPPORTUNITY_MARKET_DISCRIMINATOR\n );\n}\n\nexport type OpportunityMarket = {\n discriminator: ReadonlyUint8Array;\n bump: number;\n creator: Address;\n index: bigint;\n totalOptions: bigint;\n platform: Address;\n stakeEndTimestamp: Option<bigint>;\n resolvedAtTimestamp: Option<bigint>;\n winningOptionAllocation: number;\n winningOptionActiveBp: number;\n rewardAmount: bigint;\n marketAuthority: Address;\n mint: Address;\n earlinessCutoffSeconds: bigint;\n earlinessMultiplier: number;\n authorizedReaderPubkey: Array<number>;\n feeRates: FeeRates;\n collectedPlatformFees: bigint;\n collectedCreatorFees: bigint;\n creatorFeeClaimer: Address;\n marketResolutionDeadlineSeconds: bigint;\n revealPeriodSeconds: bigint;\n revealEnded: boolean;\n minStakeAmount: bigint;\n};\n\nexport type OpportunityMarketArgs = {\n bump: number;\n creator: Address;\n index: number | bigint;\n totalOptions: number | bigint;\n platform: Address;\n stakeEndTimestamp: OptionOrNullable<number | bigint>;\n resolvedAtTimestamp: OptionOrNullable<number | bigint>;\n winningOptionAllocation: number;\n winningOptionActiveBp: number;\n rewardAmount: number | bigint;\n marketAuthority: Address;\n mint: Address;\n earlinessCutoffSeconds: number | bigint;\n earlinessMultiplier: number;\n authorizedReaderPubkey: Array<number>;\n feeRates: FeeRatesArgs;\n collectedPlatformFees: number | bigint;\n collectedCreatorFees: number | bigint;\n creatorFeeClaimer: Address;\n marketResolutionDeadlineSeconds: number | bigint;\n revealPeriodSeconds: number | bigint;\n revealEnded: boolean;\n minStakeAmount: number | bigint;\n};\n\nexport function getOpportunityMarketEncoder(): Encoder<OpportunityMarketArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['creator', getAddressEncoder()],\n ['index', getU64Encoder()],\n ['totalOptions', getU64Encoder()],\n ['platform', getAddressEncoder()],\n ['stakeEndTimestamp', getOptionEncoder(getU64Encoder())],\n ['resolvedAtTimestamp', getOptionEncoder(getU64Encoder())],\n ['winningOptionAllocation', getU16Encoder()],\n ['winningOptionActiveBp', getU16Encoder()],\n ['rewardAmount', getU64Encoder()],\n ['marketAuthority', getAddressEncoder()],\n ['mint', getAddressEncoder()],\n ['earlinessCutoffSeconds', getU64Encoder()],\n ['earlinessMultiplier', getU16Encoder()],\n ['authorizedReaderPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['feeRates', getFeeRatesEncoder()],\n ['collectedPlatformFees', getU64Encoder()],\n ['collectedCreatorFees', getU64Encoder()],\n ['creatorFeeClaimer', getAddressEncoder()],\n ['marketResolutionDeadlineSeconds', getU64Encoder()],\n ['revealPeriodSeconds', getU64Encoder()],\n ['revealEnded', getBooleanEncoder()],\n ['minStakeAmount', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: OPPORTUNITY_MARKET_DISCRIMINATOR })\n );\n}\n\nexport function getOpportunityMarketDecoder(): Decoder<OpportunityMarket> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ['creator', getAddressDecoder()],\n ['index', getU64Decoder()],\n ['totalOptions', getU64Decoder()],\n ['platform', getAddressDecoder()],\n ['stakeEndTimestamp', getOptionDecoder(getU64Decoder())],\n ['resolvedAtTimestamp', getOptionDecoder(getU64Decoder())],\n ['winningOptionAllocation', getU16Decoder()],\n ['winningOptionActiveBp', getU16Decoder()],\n ['rewardAmount', getU64Decoder()],\n ['marketAuthority', getAddressDecoder()],\n ['mint', getAddressDecoder()],\n ['earlinessCutoffSeconds', getU64Decoder()],\n ['earlinessMultiplier', getU16Decoder()],\n ['authorizedReaderPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['feeRates', getFeeRatesDecoder()],\n ['collectedPlatformFees', getU64Decoder()],\n ['collectedCreatorFees', getU64Decoder()],\n ['creatorFeeClaimer', getAddressDecoder()],\n ['marketResolutionDeadlineSeconds', getU64Decoder()],\n ['revealPeriodSeconds', getU64Decoder()],\n ['revealEnded', getBooleanDecoder()],\n ['minStakeAmount', getU64Decoder()],\n ]);\n}\n\nexport function getOpportunityMarketCodec(): Codec<\n OpportunityMarketArgs,\n OpportunityMarket\n> {\n return combineCodec(\n getOpportunityMarketEncoder(),\n getOpportunityMarketDecoder()\n );\n}\n\nexport function decodeOpportunityMarket<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<OpportunityMarket, TAddress>;\nexport function decodeOpportunityMarket<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<OpportunityMarket, TAddress>;\nexport function decodeOpportunityMarket<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n | Account<OpportunityMarket, TAddress>\n | MaybeAccount<OpportunityMarket, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getOpportunityMarketDecoder()\n );\n}\n\nexport async function fetchOpportunityMarket<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<OpportunityMarket, TAddress>> {\n const maybeAccount = await fetchMaybeOpportunityMarket(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeOpportunityMarket<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<OpportunityMarket, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeOpportunityMarket(maybeAccount);\n}\n\nexport async function fetchAllOpportunityMarket(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<OpportunityMarket>[]> {\n const maybeAccounts = await fetchAllMaybeOpportunityMarket(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeOpportunityMarket(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<OpportunityMarket>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeOpportunityMarket(maybeAccount)\n );\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\nimport {\n getEpochDecoder,\n getEpochEncoder,\n type Epoch,\n type EpochArgs,\n} from '.';\n\nexport type Activation = { activationEpoch: Epoch; deactivationEpoch: Epoch };\n\nexport type ActivationArgs = {\n activationEpoch: EpochArgs;\n deactivationEpoch: EpochArgs;\n};\n\nexport function getActivationEncoder(): FixedSizeEncoder<ActivationArgs> {\n return getStructEncoder([\n ['activationEpoch', getEpochEncoder()],\n ['deactivationEpoch', getEpochEncoder()],\n ]);\n}\n\nexport function getActivationDecoder(): FixedSizeDecoder<Activation> {\n return getStructDecoder([\n ['activationEpoch', getEpochDecoder()],\n ['deactivationEpoch', getEpochDecoder()],\n ]);\n}\n\nexport function getActivationCodec(): FixedSizeCodec<\n ActivationArgs,\n Activation\n> {\n return combineCodec(getActivationEncoder(), getActivationDecoder());\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type AllowedMintInitializedEvent = {\n allowedMint: Address;\n platform: Address;\n mint: Address;\n timestamp: bigint;\n};\n\nexport type AllowedMintInitializedEventArgs = {\n allowedMint: Address;\n platform: Address;\n mint: Address;\n timestamp: number | bigint;\n};\n\nexport function getAllowedMintInitializedEventEncoder(): FixedSizeEncoder<AllowedMintInitializedEventArgs> {\n return getStructEncoder([\n ['allowedMint', getAddressEncoder()],\n ['platform', getAddressEncoder()],\n ['mint', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getAllowedMintInitializedEventDecoder(): FixedSizeDecoder<AllowedMintInitializedEvent> {\n return getStructDecoder([\n ['allowedMint', getAddressDecoder()],\n ['platform', getAddressDecoder()],\n ['mint', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getAllowedMintInitializedEventCodec(): FixedSizeCodec<\n AllowedMintInitializedEventArgs,\n AllowedMintInitializedEvent\n> {\n return combineCodec(\n getAllowedMintInitializedEventEncoder(),\n getAllowedMintInitializedEventDecoder()\n );\n}\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 {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type BN254G2BLSPublicKey = readonly [Array<number>];\n\nexport type BN254G2BLSPublicKeyArgs = BN254G2BLSPublicKey;\n\nexport function getBN254G2BLSPublicKeyEncoder(): FixedSizeEncoder<BN254G2BLSPublicKeyArgs> {\n return getTupleEncoder([getArrayEncoder(getU8Encoder(), { size: 64 })]);\n}\n\nexport function getBN254G2BLSPublicKeyDecoder(): FixedSizeDecoder<BN254G2BLSPublicKey> {\n return getTupleDecoder([getArrayDecoder(getU8Decoder(), { size: 64 })]);\n}\n\nexport function getBN254G2BLSPublicKeyCodec(): FixedSizeCodec<\n BN254G2BLSPublicKeyArgs,\n BN254G2BLSPublicKey\n> {\n return combineCodec(\n getBN254G2BLSPublicKeyEncoder(),\n getBN254G2BLSPublicKeyDecoder()\n );\n}\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 {\n combineCodec,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n type Codec,\n type Decoder,\n type Encoder,\n type GetDiscriminatedUnionVariant,\n type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n getLocalCircuitSourceDecoder,\n getLocalCircuitSourceEncoder,\n getOffChainCircuitSourceDecoder,\n getOffChainCircuitSourceEncoder,\n getOnChainCircuitSourceDecoder,\n getOnChainCircuitSourceEncoder,\n type LocalCircuitSource,\n type LocalCircuitSourceArgs,\n type OffChainCircuitSource,\n type OffChainCircuitSourceArgs,\n type OnChainCircuitSource,\n type OnChainCircuitSourceArgs,\n} from '.';\n\nexport type CircuitSource =\n | { __kind: 'Local'; fields: readonly [LocalCircuitSource] }\n | { __kind: 'OnChain'; fields: readonly [OnChainCircuitSource] }\n | { __kind: 'OffChain'; fields: readonly [OffChainCircuitSource] };\n\nexport type CircuitSourceArgs =\n | { __kind: 'Local'; fields: readonly [LocalCircuitSourceArgs] }\n | { __kind: 'OnChain'; fields: readonly [OnChainCircuitSourceArgs] }\n | { __kind: 'OffChain'; fields: readonly [OffChainCircuitSourceArgs] };\n\nexport function getCircuitSourceEncoder(): Encoder<CircuitSourceArgs> {\n return getDiscriminatedUnionEncoder([\n [\n 'Local',\n getStructEncoder([\n ['fields', getTupleEncoder([getLocalCircuitSourceEncoder()])],\n ]),\n ],\n [\n 'OnChain',\n getStructEncoder([\n ['fields', getTupleEncoder([getOnChainCircuitSourceEncoder()])],\n ]),\n ],\n [\n 'OffChain',\n getStructEncoder([\n ['fields', getTupleEncoder([getOffChainCircuitSourceEncoder()])],\n ]),\n ],\n ]);\n}\n\nexport function getCircuitSourceDecoder(): Decoder<CircuitSource> {\n return getDiscriminatedUnionDecoder([\n [\n 'Local',\n getStructDecoder([\n ['fields', getTupleDecoder([getLocalCircuitSourceDecoder()])],\n ]),\n ],\n [\n 'OnChain',\n getStructDecoder([\n ['fields', getTupleDecoder([getOnChainCircuitSourceDecoder()])],\n ]),\n ],\n [\n 'OffChain',\n getStructDecoder([\n ['fields', getTupleDecoder([getOffChainCircuitSourceDecoder()])],\n ]),\n ],\n ]);\n}\n\nexport function getCircuitSourceCodec(): Codec<\n CircuitSourceArgs,\n CircuitSource\n> {\n return combineCodec(getCircuitSourceEncoder(), getCircuitSourceDecoder());\n}\n\n// Data Enum Helpers.\nexport function circuitSource(\n kind: 'Local',\n data: GetDiscriminatedUnionVariantContent<\n CircuitSourceArgs,\n '__kind',\n 'Local'\n >['fields']\n): GetDiscriminatedUnionVariant<CircuitSourceArgs, '__kind', 'Local'>;\nexport function circuitSource(\n kind: 'OnChain',\n data: GetDiscriminatedUnionVariantContent<\n CircuitSourceArgs,\n '__kind',\n 'OnChain'\n >['fields']\n): GetDiscriminatedUnionVariant<CircuitSourceArgs, '__kind', 'OnChain'>;\nexport function circuitSource(\n kind: 'OffChain',\n data: GetDiscriminatedUnionVariantContent<\n CircuitSourceArgs,\n '__kind',\n 'OffChain'\n >['fields']\n): GetDiscriminatedUnionVariant<CircuitSourceArgs, '__kind', 'OffChain'>;\nexport function circuitSource<K extends CircuitSourceArgs['__kind'], Data>(\n kind: K,\n data?: Data\n) {\n return Array.isArray(data)\n ? { __kind: kind, fields: data }\n : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isCircuitSource<K extends CircuitSource['__kind']>(\n kind: K,\n value: CircuitSource\n): value is CircuitSource & { __kind: K } {\n return value.__kind === kind;\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\nimport {\n getEpochDecoder,\n getEpochEncoder,\n getTimestampDecoder,\n getTimestampEncoder,\n type Epoch,\n type EpochArgs,\n type Timestamp,\n type TimestampArgs,\n} from '.';\n\n/** An account storing the current network epoch */\nexport type ClockAccount = {\n startEpoch: Epoch;\n currentEpoch: Epoch;\n startEpochTimestamp: Timestamp;\n bump: number;\n};\n\nexport type ClockAccountArgs = {\n startEpoch: EpochArgs;\n currentEpoch: EpochArgs;\n startEpochTimestamp: TimestampArgs;\n bump: number;\n};\n\nexport function getClockAccountEncoder(): FixedSizeEncoder<ClockAccountArgs> {\n return getStructEncoder([\n ['startEpoch', getEpochEncoder()],\n ['currentEpoch', getEpochEncoder()],\n ['startEpochTimestamp', getTimestampEncoder()],\n ['bump', getU8Encoder()],\n ]);\n}\n\nexport function getClockAccountDecoder(): FixedSizeDecoder<ClockAccount> {\n return getStructDecoder([\n ['startEpoch', getEpochDecoder()],\n ['currentEpoch', getEpochDecoder()],\n ['startEpochTimestamp', getTimestampDecoder()],\n ['bump', getU8Decoder()],\n ]);\n}\n\nexport function getClockAccountCodec(): FixedSizeCodec<\n ClockAccountArgs,\n ClockAccount\n> {\n return combineCodec(getClockAccountEncoder(), getClockAccountDecoder());\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getU16Decoder,\n getU16Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Option,\n type OptionOrNullable,\n} from '@solana/kit';\nimport {\n getActivationDecoder,\n getActivationEncoder,\n getBN254G2BLSPublicKeyDecoder,\n getBN254G2BLSPublicKeyEncoder,\n getEpochDecoder,\n getEpochEncoder,\n getNodeMetadataDecoder,\n getNodeMetadataEncoder,\n getNodeRefDecoder,\n getNodeRefEncoder,\n type Activation,\n type ActivationArgs,\n type BN254G2BLSPublicKey,\n type BN254G2BLSPublicKeyArgs,\n type Epoch,\n type EpochArgs,\n type NodeMetadata,\n type NodeMetadataArgs,\n type NodeRef,\n type NodeRefArgs,\n} from '.';\n\nexport type Cluster = {\n tdInfo: Option<NodeMetadata>;\n authority: Option<Address>;\n clusterSize: number;\n activation: Activation;\n maxCapacity: bigint;\n cuPrice: bigint;\n cuPriceProposals: Array<bigint>;\n lastUpdatedEpoch: Epoch;\n nodes: Array<NodeRef>;\n pendingNodes: Array<number>;\n blsPublicKey:\n | { __kind: 'Set'; fields: readonly [BN254G2BLSPublicKey] }\n | {\n __kind: 'Unset';\n fields: readonly [BN254G2BLSPublicKey, Array<boolean>];\n };\n bump: number;\n};\n\nexport type ClusterArgs = {\n tdInfo: OptionOrNullable<NodeMetadataArgs>;\n authority: OptionOrNullable<Address>;\n clusterSize: number;\n activation: ActivationArgs;\n maxCapacity: number | bigint;\n cuPrice: number | bigint;\n cuPriceProposals: Array<number | bigint>;\n lastUpdatedEpoch: EpochArgs;\n nodes: Array<NodeRefArgs>;\n pendingNodes: Array<number>;\n blsPublicKey:\n | { __kind: 'Set'; fields: readonly [BN254G2BLSPublicKeyArgs] }\n | {\n __kind: 'Unset';\n fields: readonly [BN254G2BLSPublicKeyArgs, Array<boolean>];\n };\n bump: number;\n};\n\nexport function getClusterEncoder(): Encoder<ClusterArgs> {\n return getStructEncoder([\n ['tdInfo', getOptionEncoder(getNodeMetadataEncoder())],\n ['authority', getOptionEncoder(getAddressEncoder())],\n ['clusterSize', getU16Encoder()],\n ['activation', getActivationEncoder()],\n ['maxCapacity', getU64Encoder()],\n ['cuPrice', getU64Encoder()],\n ['cuPriceProposals', getArrayEncoder(getU64Encoder(), { size: 32 })],\n ['lastUpdatedEpoch', getEpochEncoder()],\n ['nodes', getArrayEncoder(getNodeRefEncoder())],\n ['pendingNodes', getArrayEncoder(getU32Encoder())],\n [\n 'blsPublicKey',\n getDiscriminatedUnionEncoder([\n [\n 'Set',\n getStructEncoder([\n ['fields', getTupleEncoder([getBN254G2BLSPublicKeyEncoder()])],\n ]),\n ],\n [\n 'Unset',\n getStructEncoder([\n [\n 'fields',\n getTupleEncoder([\n getBN254G2BLSPublicKeyEncoder(),\n getArrayEncoder(getBooleanEncoder()),\n ]),\n ],\n ]),\n ],\n ]),\n ],\n ['bump', getU8Encoder()],\n ]);\n}\n\nexport function getClusterDecoder(): Decoder<Cluster> {\n return getStructDecoder([\n ['tdInfo', getOptionDecoder(getNodeMetadataDecoder())],\n ['authority', getOptionDecoder(getAddressDecoder())],\n ['clusterSize', getU16Decoder()],\n ['activation', getActivationDecoder()],\n ['maxCapacity', getU64Decoder()],\n ['cuPrice', getU64Decoder()],\n ['cuPriceProposals', getArrayDecoder(getU64Decoder(), { size: 32 })],\n ['lastUpdatedEpoch', getEpochDecoder()],\n ['nodes', getArrayDecoder(getNodeRefDecoder())],\n ['pendingNodes', getArrayDecoder(getU32Decoder())],\n [\n 'blsPublicKey',\n getDiscriminatedUnionDecoder([\n [\n 'Set',\n getStructDecoder([\n ['fields', getTupleDecoder([getBN254G2BLSPublicKeyDecoder()])],\n ]),\n ],\n [\n 'Unset',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([\n getBN254G2BLSPublicKeyDecoder(),\n getArrayDecoder(getBooleanDecoder()),\n ]),\n ],\n ]),\n ],\n ]),\n ],\n ['bump', getU8Decoder()],\n ]);\n}\n\nexport function getClusterCodec(): Codec<ClusterArgs, Cluster> {\n return combineCodec(getClusterEncoder(), getClusterDecoder());\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type CollectedFees = {\n platformFee: bigint;\n rewardPoolFee: bigint;\n creatorFee: bigint;\n};\n\nexport type CollectedFeesArgs = {\n platformFee: number | bigint;\n rewardPoolFee: number | bigint;\n creatorFee: number | bigint;\n};\n\nexport function getCollectedFeesEncoder(): FixedSizeEncoder<CollectedFeesArgs> {\n return getStructEncoder([\n ['platformFee', getU64Encoder()],\n ['rewardPoolFee', getU64Encoder()],\n ['creatorFee', getU64Encoder()],\n ]);\n}\n\nexport function getCollectedFeesDecoder(): FixedSizeDecoder<CollectedFees> {\n return getStructDecoder([\n ['platformFee', getU64Decoder()],\n ['rewardPoolFee', getU64Decoder()],\n ['creatorFee', getU64Decoder()],\n ]);\n}\n\nexport function getCollectedFeesCodec(): FixedSizeCodec<\n CollectedFeesArgs,\n CollectedFees\n> {\n return combineCodec(getCollectedFeesEncoder(), getCollectedFeesDecoder());\n}\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 {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type Option,\n type OptionOrNullable,\n} from '@solana/kit';\nimport {\n getCircuitSourceDecoder,\n getCircuitSourceEncoder,\n getComputationDefinitionMetaDecoder,\n getComputationDefinitionMetaEncoder,\n type CircuitSource,\n type CircuitSourceArgs,\n type ComputationDefinitionMeta,\n type ComputationDefinitionMetaArgs,\n} from '.';\n\n/** An account representing a [ComputationDefinition] in a MXE. */\nexport type ComputationDefinitionAccount = {\n deactivationSlot: Option<bigint>;\n cuAmount: bigint;\n definition: ComputationDefinitionMeta;\n circuitSource: CircuitSource;\n bump: number;\n padding: Array<number>;\n};\n\nexport type ComputationDefinitionAccountArgs = {\n deactivationSlot: OptionOrNullable<number | bigint>;\n cuAmount: number | bigint;\n definition: ComputationDefinitionMetaArgs;\n circuitSource: CircuitSourceArgs;\n bump: number;\n padding: Array<number>;\n};\n\nexport function getComputationDefinitionAccountEncoder(): Encoder<ComputationDefinitionAccountArgs> {\n return getStructEncoder([\n ['deactivationSlot', getOptionEncoder(getU64Encoder())],\n ['cuAmount', getU64Encoder()],\n ['definition', getComputationDefinitionMetaEncoder()],\n ['circuitSource', getCircuitSourceEncoder()],\n ['bump', getU8Encoder()],\n ['padding', getArrayEncoder(getU8Encoder(), { size: 24 })],\n ]);\n}\n\nexport function getComputationDefinitionAccountDecoder(): Decoder<ComputationDefinitionAccount> {\n return getStructDecoder([\n ['deactivationSlot', getOptionDecoder(getU64Decoder())],\n ['cuAmount', getU64Decoder()],\n ['definition', getComputationDefinitionMetaDecoder()],\n ['circuitSource', getCircuitSourceDecoder()],\n ['bump', getU8Decoder()],\n ['padding', getArrayDecoder(getU8Decoder(), { size: 24 })],\n ]);\n}\n\nexport function getComputationDefinitionAccountCodec(): Codec<\n ComputationDefinitionAccountArgs,\n ComputationDefinitionAccount\n> {\n return combineCodec(\n getComputationDefinitionAccountEncoder(),\n getComputationDefinitionAccountDecoder()\n );\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\nimport {\n getComputationSignatureDecoder,\n getComputationSignatureEncoder,\n type ComputationSignature,\n type ComputationSignatureArgs,\n} from '.';\n\n/** A computation definition for execution in a MXE. */\nexport type ComputationDefinitionMeta = {\n circuitLen: number;\n signature: ComputationSignature;\n};\n\nexport type ComputationDefinitionMetaArgs = {\n circuitLen: number;\n signature: ComputationSignatureArgs;\n};\n\nexport function getComputationDefinitionMetaEncoder(): Encoder<ComputationDefinitionMetaArgs> {\n return getStructEncoder([\n ['circuitLen', getU32Encoder()],\n ['signature', getComputationSignatureEncoder()],\n ]);\n}\n\nexport function getComputationDefinitionMetaDecoder(): Decoder<ComputationDefinitionMeta> {\n return getStructDecoder([\n ['circuitLen', getU32Decoder()],\n ['signature', getComputationSignatureDecoder()],\n ]);\n}\n\nexport function getComputationDefinitionMetaCodec(): Codec<\n ComputationDefinitionMetaArgs,\n ComputationDefinitionMeta\n> {\n return combineCodec(\n getComputationDefinitionMetaEncoder(),\n getComputationDefinitionMetaDecoder()\n );\n}\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 {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\nimport {\n getOutputDecoder,\n getOutputEncoder,\n getParameterDecoder,\n getParameterEncoder,\n type Output,\n type OutputArgs,\n type Parameter,\n type ParameterArgs,\n} from '.';\n\n/** The signature of a computation defined in a [ComputationDefinition]. */\nexport type ComputationSignature = {\n parameters: Array<Parameter>;\n outputs: Array<Output>;\n};\n\nexport type ComputationSignatureArgs = {\n parameters: Array<ParameterArgs>;\n outputs: Array<OutputArgs>;\n};\n\nexport function getComputationSignatureEncoder(): Encoder<ComputationSignatureArgs> {\n return getStructEncoder([\n ['parameters', getArrayEncoder(getParameterEncoder())],\n ['outputs', getArrayEncoder(getOutputEncoder())],\n ]);\n}\n\nexport function getComputationSignatureDecoder(): Decoder<ComputationSignature> {\n return getStructDecoder([\n ['parameters', getArrayDecoder(getParameterDecoder())],\n ['outputs', getArrayDecoder(getOutputDecoder())],\n ]);\n}\n\nexport function getComputationSignatureCodec(): Codec<\n ComputationSignatureArgs,\n ComputationSignature\n> {\n return combineCodec(\n getComputationSignatureEncoder(),\n getComputationSignatureDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type CreatorFeesClaimedEvent = {\n market: Address;\n creatorFeeClaimer: Address;\n mint: Address;\n destination: Address;\n amount: bigint;\n timestamp: bigint;\n};\n\nexport type CreatorFeesClaimedEventArgs = {\n market: Address;\n creatorFeeClaimer: Address;\n mint: Address;\n destination: Address;\n amount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getCreatorFeesClaimedEventEncoder(): FixedSizeEncoder<CreatorFeesClaimedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['creatorFeeClaimer', getAddressEncoder()],\n ['mint', getAddressEncoder()],\n ['destination', getAddressEncoder()],\n ['amount', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getCreatorFeesClaimedEventDecoder(): FixedSizeDecoder<CreatorFeesClaimedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['creatorFeeClaimer', getAddressDecoder()],\n ['mint', getAddressDecoder()],\n ['destination', getAddressDecoder()],\n ['amount', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getCreatorFeesClaimedEventCodec(): FixedSizeCodec<\n CreatorFeesClaimedEventArgs,\n CreatorFeesClaimedEvent\n> {\n return combineCodec(\n getCreatorFeesClaimedEventEncoder(),\n getCreatorFeesClaimedEventDecoder()\n );\n}\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 {\n combineCodec,\n getTupleDecoder,\n getTupleEncoder,\n getU64Decoder,\n getU64Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\n/** The network epoch */\nexport type Epoch = readonly [bigint];\n\nexport type EpochArgs = readonly [number | bigint];\n\nexport function getEpochEncoder(): FixedSizeEncoder<EpochArgs> {\n return getTupleEncoder([getU64Encoder()]);\n}\n\nexport function getEpochDecoder(): FixedSizeDecoder<Epoch> {\n return getTupleDecoder([getU64Decoder()]);\n}\n\nexport function getEpochCodec(): FixedSizeCodec<EpochArgs, Epoch> {\n return combineCodec(getEpochEncoder(), getEpochDecoder());\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type FeeClaimAuthorityChangedEvent = {\n platformConfig: Address;\n oldValue: Address;\n newValue: Address;\n timestamp: bigint;\n};\n\nexport type FeeClaimAuthorityChangedEventArgs = {\n platformConfig: Address;\n oldValue: Address;\n newValue: Address;\n timestamp: number | bigint;\n};\n\nexport function getFeeClaimAuthorityChangedEventEncoder(): FixedSizeEncoder<FeeClaimAuthorityChangedEventArgs> {\n return getStructEncoder([\n ['platformConfig', getAddressEncoder()],\n ['oldValue', getAddressEncoder()],\n ['newValue', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getFeeClaimAuthorityChangedEventDecoder(): FixedSizeDecoder<FeeClaimAuthorityChangedEvent> {\n return getStructDecoder([\n ['platformConfig', getAddressDecoder()],\n ['oldValue', getAddressDecoder()],\n ['newValue', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getFeeClaimAuthorityChangedEventCodec(): FixedSizeCodec<\n FeeClaimAuthorityChangedEventArgs,\n FeeClaimAuthorityChangedEvent\n> {\n return combineCodec(\n getFeeClaimAuthorityChangedEventEncoder(),\n getFeeClaimAuthorityChangedEventDecoder()\n );\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type FeePool = { bump: number };\n\nexport type FeePoolArgs = FeePool;\n\nexport function getFeePoolEncoder(): FixedSizeEncoder<FeePoolArgs> {\n return getStructEncoder([['bump', getU8Encoder()]]);\n}\n\nexport function getFeePoolDecoder(): FixedSizeDecoder<FeePool> {\n return getStructDecoder([['bump', getU8Decoder()]]);\n}\n\nexport function getFeePoolCodec(): FixedSizeCodec<FeePoolArgs, FeePool> {\n return combineCodec(getFeePoolEncoder(), getFeePoolDecoder());\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type FeeRates = {\n platformFeeBp: number;\n rewardPoolFeeBp: number;\n creatorFeeBp: number;\n};\n\nexport type FeeRatesArgs = FeeRates;\n\nexport function getFeeRatesEncoder(): FixedSizeEncoder<FeeRatesArgs> {\n return getStructEncoder([\n ['platformFeeBp', getU16Encoder()],\n ['rewardPoolFeeBp', getU16Encoder()],\n ['creatorFeeBp', getU16Encoder()],\n ]);\n}\n\nexport function getFeeRatesDecoder(): FixedSizeDecoder<FeeRates> {\n return getStructDecoder([\n ['platformFeeBp', getU16Decoder()],\n ['rewardPoolFeeBp', getU16Decoder()],\n ['creatorFeeBp', getU16Decoder()],\n ]);\n}\n\nexport function getFeeRatesCodec(): FixedSizeCodec<FeeRatesArgs, FeeRates> {\n return combineCodec(getFeeRatesEncoder(), getFeeRatesDecoder());\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type FeesClaimedEvent = {\n market: Address;\n platform: Address;\n mint: Address;\n destination: Address;\n amount: bigint;\n timestamp: bigint;\n};\n\nexport type FeesClaimedEventArgs = {\n market: Address;\n platform: Address;\n mint: Address;\n destination: Address;\n amount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getFeesClaimedEventEncoder(): FixedSizeEncoder<FeesClaimedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['platform', getAddressEncoder()],\n ['mint', getAddressEncoder()],\n ['destination', getAddressEncoder()],\n ['amount', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getFeesClaimedEventDecoder(): FixedSizeDecoder<FeesClaimedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['platform', getAddressDecoder()],\n ['mint', getAddressDecoder()],\n ['destination', getAddressDecoder()],\n ['amount', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getFeesClaimedEventCodec(): FixedSizeCodec<\n FeesClaimedEventArgs,\n FeesClaimedEvent\n> {\n return combineCodec(\n getFeesClaimedEventEncoder(),\n getFeesClaimedEventDecoder()\n );\n}\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 {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport enum LocalCircuitSource {\n MxeKeygen,\n MxeKeyRecoveryInit,\n MxeKeyRecoveryFinalize,\n}\n\nexport type LocalCircuitSourceArgs = LocalCircuitSource;\n\nexport function getLocalCircuitSourceEncoder(): FixedSizeEncoder<LocalCircuitSourceArgs> {\n return getEnumEncoder(LocalCircuitSource);\n}\n\nexport function getLocalCircuitSourceDecoder(): FixedSizeDecoder<LocalCircuitSource> {\n return getEnumDecoder(LocalCircuitSource);\n}\n\nexport function getLocalCircuitSourceCodec(): FixedSizeCodec<\n LocalCircuitSourceArgs,\n LocalCircuitSource\n> {\n return combineCodec(\n getLocalCircuitSourceEncoder(),\n getLocalCircuitSourceDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\nimport {\n getFeeRatesDecoder,\n getFeeRatesEncoder,\n type FeeRates,\n type FeeRatesArgs,\n} from '.';\n\nexport type MarketCreatedEvent = {\n market: Address;\n creator: Address;\n platform: Address;\n index: bigint;\n mint: Address;\n earlinessCutoffSeconds: bigint;\n earlinessMultiplier: number;\n marketAuthority: Address;\n authorizedReaderPubkey: Array<number>;\n minStakeAmount: bigint;\n feeRates: FeeRates;\n creatorFeeClaimer: Address;\n marketResolutionDeadlineSeconds: bigint;\n revealPeriodSeconds: bigint;\n timestamp: bigint;\n};\n\nexport type MarketCreatedEventArgs = {\n market: Address;\n creator: Address;\n platform: Address;\n index: number | bigint;\n mint: Address;\n earlinessCutoffSeconds: number | bigint;\n earlinessMultiplier: number;\n marketAuthority: Address;\n authorizedReaderPubkey: Array<number>;\n minStakeAmount: number | bigint;\n feeRates: FeeRatesArgs;\n creatorFeeClaimer: Address;\n marketResolutionDeadlineSeconds: number | bigint;\n revealPeriodSeconds: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getMarketCreatedEventEncoder(): FixedSizeEncoder<MarketCreatedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['creator', getAddressEncoder()],\n ['platform', getAddressEncoder()],\n ['index', getU64Encoder()],\n ['mint', getAddressEncoder()],\n ['earlinessCutoffSeconds', getU64Encoder()],\n ['earlinessMultiplier', getU16Encoder()],\n ['marketAuthority', getAddressEncoder()],\n ['authorizedReaderPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['minStakeAmount', getU64Encoder()],\n ['feeRates', getFeeRatesEncoder()],\n ['creatorFeeClaimer', getAddressEncoder()],\n ['marketResolutionDeadlineSeconds', getU64Encoder()],\n ['revealPeriodSeconds', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getMarketCreatedEventDecoder(): FixedSizeDecoder<MarketCreatedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['creator', getAddressDecoder()],\n ['platform', getAddressDecoder()],\n ['index', getU64Decoder()],\n ['mint', getAddressDecoder()],\n ['earlinessCutoffSeconds', getU64Decoder()],\n ['earlinessMultiplier', getU16Decoder()],\n ['marketAuthority', getAddressDecoder()],\n ['authorizedReaderPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['minStakeAmount', getU64Decoder()],\n ['feeRates', getFeeRatesDecoder()],\n ['creatorFeeClaimer', getAddressDecoder()],\n ['marketResolutionDeadlineSeconds', getU64Decoder()],\n ['revealPeriodSeconds', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getMarketCreatedEventCodec(): FixedSizeCodec<\n MarketCreatedEventArgs,\n MarketCreatedEvent\n> {\n return combineCodec(\n getMarketCreatedEventEncoder(),\n getMarketCreatedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type MarketOpenedEvent = {\n market: Address;\n creator: Address;\n stakeEndTimestamp: bigint;\n timestamp: bigint;\n};\n\nexport type MarketOpenedEventArgs = {\n market: Address;\n creator: Address;\n stakeEndTimestamp: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getMarketOpenedEventEncoder(): FixedSizeEncoder<MarketOpenedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['creator', getAddressEncoder()],\n ['stakeEndTimestamp', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getMarketOpenedEventDecoder(): FixedSizeDecoder<MarketOpenedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['creator', getAddressDecoder()],\n ['stakeEndTimestamp', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getMarketOpenedEventCodec(): FixedSizeCodec<\n MarketOpenedEventArgs,\n MarketOpenedEvent\n> {\n return combineCodec(\n getMarketOpenedEventEncoder(),\n getMarketOpenedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type MarketOptionCreatedEvent = {\n option: Address;\n market: Address;\n signer: Address;\n id: bigint;\n timestamp: bigint;\n};\n\nexport type MarketOptionCreatedEventArgs = {\n option: Address;\n market: Address;\n signer: Address;\n id: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getMarketOptionCreatedEventEncoder(): FixedSizeEncoder<MarketOptionCreatedEventArgs> {\n return getStructEncoder([\n ['option', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['signer', getAddressEncoder()],\n ['id', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getMarketOptionCreatedEventDecoder(): FixedSizeDecoder<MarketOptionCreatedEvent> {\n return getStructDecoder([\n ['option', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['signer', getAddressDecoder()],\n ['id', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getMarketOptionCreatedEventCodec(): FixedSizeCodec<\n MarketOptionCreatedEventArgs,\n MarketOptionCreatedEvent\n> {\n return combineCodec(\n getMarketOptionCreatedEventEncoder(),\n getMarketOptionCreatedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type MarketResolvedEvent = {\n market: Address;\n marketAuthority: Address;\n timestamp: bigint;\n};\n\nexport type MarketResolvedEventArgs = {\n market: Address;\n marketAuthority: Address;\n timestamp: number | bigint;\n};\n\nexport function getMarketResolvedEventEncoder(): FixedSizeEncoder<MarketResolvedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['marketAuthority', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getMarketResolvedEventDecoder(): FixedSizeDecoder<MarketResolvedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['marketAuthority', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getMarketResolvedEventCodec(): FixedSizeCodec<\n MarketResolvedEventArgs,\n MarketResolvedEvent\n> {\n return combineCodec(\n getMarketResolvedEventEncoder(),\n getMarketResolvedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Option,\n type OptionOrNullable,\n} from '@solana/kit';\nimport {\n getMxeStatusDecoder,\n getMxeStatusEncoder,\n getUtilityPubkeysDecoder,\n getUtilityPubkeysEncoder,\n type MxeStatus,\n type MxeStatusArgs,\n type UtilityPubkeys,\n type UtilityPubkeysArgs,\n} from '.';\n\n/** A MPC Execution Environment. */\nexport type MXEAccount = {\n padding: number;\n cluster: number;\n keygenOffset: bigint;\n keyRecoveryInitOffset: bigint;\n mxeProgramId: Address;\n authority: Option<Address>;\n utilityPubkeys:\n | { __kind: 'Set'; fields: readonly [UtilityPubkeys] }\n | { __kind: 'Unset'; fields: readonly [UtilityPubkeys, Array<boolean>] };\n lutOffsetSlot: bigint;\n computationDefinitions: Array<number>;\n status: MxeStatus;\n bump: number;\n};\n\nexport type MXEAccountArgs = {\n padding: number;\n cluster: number;\n keygenOffset: number | bigint;\n keyRecoveryInitOffset: number | bigint;\n mxeProgramId: Address;\n authority: OptionOrNullable<Address>;\n utilityPubkeys:\n | { __kind: 'Set'; fields: readonly [UtilityPubkeysArgs] }\n | {\n __kind: 'Unset';\n fields: readonly [UtilityPubkeysArgs, Array<boolean>];\n };\n lutOffsetSlot: number | bigint;\n computationDefinitions: Array<number>;\n status: MxeStatusArgs;\n bump: number;\n};\n\nexport function getMXEAccountEncoder(): Encoder<MXEAccountArgs> {\n return getStructEncoder([\n ['padding', getU8Encoder()],\n ['cluster', getU32Encoder()],\n ['keygenOffset', getU64Encoder()],\n ['keyRecoveryInitOffset', getU64Encoder()],\n ['mxeProgramId', getAddressEncoder()],\n ['authority', getOptionEncoder(getAddressEncoder())],\n [\n 'utilityPubkeys',\n getDiscriminatedUnionEncoder([\n [\n 'Set',\n getStructEncoder([\n ['fields', getTupleEncoder([getUtilityPubkeysEncoder()])],\n ]),\n ],\n [\n 'Unset',\n getStructEncoder([\n [\n 'fields',\n getTupleEncoder([\n getUtilityPubkeysEncoder(),\n getArrayEncoder(getBooleanEncoder()),\n ]),\n ],\n ]),\n ],\n ]),\n ],\n ['lutOffsetSlot', getU64Encoder()],\n ['computationDefinitions', getArrayEncoder(getU32Encoder())],\n ['status', getMxeStatusEncoder()],\n ['bump', getU8Encoder()],\n ]);\n}\n\nexport function getMXEAccountDecoder(): Decoder<MXEAccount> {\n return getStructDecoder([\n ['padding', getU8Decoder()],\n ['cluster', getU32Decoder()],\n ['keygenOffset', getU64Decoder()],\n ['keyRecoveryInitOffset', getU64Decoder()],\n ['mxeProgramId', getAddressDecoder()],\n ['authority', getOptionDecoder(getAddressDecoder())],\n [\n 'utilityPubkeys',\n getDiscriminatedUnionDecoder([\n [\n 'Set',\n getStructDecoder([\n ['fields', getTupleDecoder([getUtilityPubkeysDecoder()])],\n ]),\n ],\n [\n 'Unset',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([\n getUtilityPubkeysDecoder(),\n getArrayDecoder(getBooleanDecoder()),\n ]),\n ],\n ]),\n ],\n ]),\n ],\n ['lutOffsetSlot', getU64Decoder()],\n ['computationDefinitions', getArrayDecoder(getU32Decoder())],\n ['status', getMxeStatusDecoder()],\n ['bump', getU8Decoder()],\n ]);\n}\n\nexport function getMXEAccountCodec(): Codec<MXEAccountArgs, MXEAccount> {\n return combineCodec(getMXEAccountEncoder(), getMXEAccountDecoder());\n}\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 {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\n/** The status of an MXE. */\nexport enum MxeStatus {\n Active,\n Migration,\n}\n\nexport type MxeStatusArgs = MxeStatus;\n\nexport function getMxeStatusEncoder(): FixedSizeEncoder<MxeStatusArgs> {\n return getEnumEncoder(MxeStatus);\n}\n\nexport function getMxeStatusDecoder(): FixedSizeDecoder<MxeStatus> {\n return getEnumDecoder(MxeStatus);\n}\n\nexport function getMxeStatusCodec(): FixedSizeCodec<MxeStatusArgs, MxeStatus> {\n return combineCodec(getMxeStatusEncoder(), getMxeStatusDecoder());\n}\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 {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\n/** location as [ISO 3166-1 alpha-2](https://www.iso.org/iso-3166-country-codes.html) country code */\nexport type NodeMetadata = {\n ip: Array<number>;\n peerId: Array<number>;\n location: number;\n};\n\nexport type NodeMetadataArgs = NodeMetadata;\n\nexport function getNodeMetadataEncoder(): FixedSizeEncoder<NodeMetadataArgs> {\n return getStructEncoder([\n ['ip', getArrayEncoder(getU8Encoder(), { size: 4 })],\n ['peerId', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['location', getU8Encoder()],\n ]);\n}\n\nexport function getNodeMetadataDecoder(): FixedSizeDecoder<NodeMetadata> {\n return getStructDecoder([\n ['ip', getArrayDecoder(getU8Decoder(), { size: 4 })],\n ['peerId', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['location', getU8Decoder()],\n ]);\n}\n\nexport function getNodeMetadataCodec(): FixedSizeCodec<\n NodeMetadataArgs,\n NodeMetadata\n> {\n return combineCodec(getNodeMetadataEncoder(), getNodeMetadataDecoder());\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\n/**\n * A reference to a node in the cluster.\n * The offset is to derive the Node Account.\n * The current_total_rewards is the total rewards the node has received so far in the current\n * epoch.\n */\nexport type NodeRef = {\n offset: number;\n currentTotalRewards: bigint;\n vote: number;\n};\n\nexport type NodeRefArgs = {\n offset: number;\n currentTotalRewards: number | bigint;\n vote: number;\n};\n\nexport function getNodeRefEncoder(): FixedSizeEncoder<NodeRefArgs> {\n return getStructEncoder([\n ['offset', getU32Encoder()],\n ['currentTotalRewards', getU64Encoder()],\n ['vote', getU8Encoder()],\n ]);\n}\n\nexport function getNodeRefDecoder(): FixedSizeDecoder<NodeRef> {\n return getStructDecoder([\n ['offset', getU32Decoder()],\n ['currentTotalRewards', getU64Decoder()],\n ['vote', getU8Decoder()],\n ]);\n}\n\nexport function getNodeRefCodec(): FixedSizeCodec<NodeRefArgs, NodeRef> {\n return combineCodec(getNodeRefEncoder(), getNodeRefDecoder());\n}\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 {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU8Decoder,\n getU8Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport type OffChainCircuitSource = { source: string; hash: Array<number> };\n\nexport type OffChainCircuitSourceArgs = OffChainCircuitSource;\n\nexport function getOffChainCircuitSourceEncoder(): Encoder<OffChainCircuitSourceArgs> {\n return getStructEncoder([\n ['source', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n ['hash', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ]);\n}\n\nexport function getOffChainCircuitSourceDecoder(): Decoder<OffChainCircuitSource> {\n return getStructDecoder([\n ['source', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ['hash', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ]);\n}\n\nexport function getOffChainCircuitSourceCodec(): Codec<\n OffChainCircuitSourceArgs,\n OffChainCircuitSource\n> {\n return combineCodec(\n getOffChainCircuitSourceEncoder(),\n getOffChainCircuitSourceDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type OnChainCircuitSource = {\n isCompleted: boolean;\n uploadAuth: Address;\n};\n\nexport type OnChainCircuitSourceArgs = OnChainCircuitSource;\n\nexport function getOnChainCircuitSourceEncoder(): FixedSizeEncoder<OnChainCircuitSourceArgs> {\n return getStructEncoder([\n ['isCompleted', getBooleanEncoder()],\n ['uploadAuth', getAddressEncoder()],\n ]);\n}\n\nexport function getOnChainCircuitSourceDecoder(): FixedSizeDecoder<OnChainCircuitSource> {\n return getStructDecoder([\n ['isCompleted', getBooleanDecoder()],\n ['uploadAuth', getAddressDecoder()],\n ]);\n}\n\nexport function getOnChainCircuitSourceCodec(): FixedSizeCodec<\n OnChainCircuitSourceArgs,\n OnChainCircuitSource\n> {\n return combineCodec(\n getOnChainCircuitSourceEncoder(),\n getOnChainCircuitSourceDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type OptionClosedEvent = {\n option: Address;\n optionId: bigint;\n signer: Address;\n creator: Address;\n market: Address;\n timestamp: bigint;\n};\n\nexport type OptionClosedEventArgs = {\n option: Address;\n optionId: number | bigint;\n signer: Address;\n creator: Address;\n market: Address;\n timestamp: number | bigint;\n};\n\nexport function getOptionClosedEventEncoder(): FixedSizeEncoder<OptionClosedEventArgs> {\n return getStructEncoder([\n ['option', getAddressEncoder()],\n ['optionId', getU64Encoder()],\n ['signer', getAddressEncoder()],\n ['creator', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getOptionClosedEventDecoder(): FixedSizeDecoder<OptionClosedEvent> {\n return getStructDecoder([\n ['option', getAddressDecoder()],\n ['optionId', getU64Decoder()],\n ['signer', getAddressDecoder()],\n ['creator', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getOptionClosedEventCodec(): FixedSizeCodec<\n OptionClosedEventArgs,\n OptionClosedEvent\n> {\n return combineCodec(\n getOptionClosedEventEncoder(),\n getOptionClosedEventDecoder()\n );\n}\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 {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\n/**\n * An output of a computation.\n * We currently don't support encrypted outputs yet since encrypted values are passed via\n * data objects.\n */\nexport enum Output {\n PlaintextBool,\n PlaintextU8,\n PlaintextU16,\n PlaintextU32,\n PlaintextU64,\n PlaintextU128,\n Ciphertext,\n ArcisX25519Pubkey,\n PlaintextFloat,\n PlaintextPoint,\n PlaintextI8,\n PlaintextI16,\n PlaintextI32,\n PlaintextI64,\n PlaintextI128,\n}\n\nexport type OutputArgs = Output;\n\nexport function getOutputEncoder(): FixedSizeEncoder<OutputArgs> {\n return getEnumEncoder(Output);\n}\n\nexport function getOutputDecoder(): FixedSizeDecoder<Output> {\n return getEnumDecoder(Output);\n}\n\nexport function getOutputCodec(): FixedSizeCodec<OutputArgs, Output> {\n return combineCodec(getOutputEncoder(), getOutputDecoder());\n}\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 {\n combineCodec,\n getEnumDecoder,\n getEnumEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\n/**\n * A parameter of a computation.\n * We differentiate between plaintext and encrypted parameters and data objects.\n * Plaintext parameters are directly provided as their value.\n * Encrypted parameters are provided as an offchain reference to the data.\n * Data objects are provided as a reference to the data object account.\n */\nexport enum Parameter {\n PlaintextBool,\n PlaintextU8,\n PlaintextU16,\n PlaintextU32,\n PlaintextU64,\n PlaintextU128,\n Ciphertext,\n ArcisX25519Pubkey,\n ArcisSignature,\n PlaintextFloat,\n PlaintextI8,\n PlaintextI16,\n PlaintextI32,\n PlaintextI64,\n PlaintextI128,\n PlaintextPoint,\n}\n\nexport type ParameterArgs = Parameter;\n\nexport function getParameterEncoder(): FixedSizeEncoder<ParameterArgs> {\n return getEnumEncoder(Parameter);\n}\n\nexport function getParameterDecoder(): FixedSizeDecoder<Parameter> {\n return getEnumDecoder(Parameter);\n}\n\nexport function getParameterCodec(): FixedSizeCodec<ParameterArgs, Parameter> {\n return combineCodec(getParameterEncoder(), getParameterDecoder());\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RevealPeriodEndedEvent = {\n market: Address;\n signer: Address;\n timestamp: bigint;\n};\n\nexport type RevealPeriodEndedEventArgs = {\n market: Address;\n signer: Address;\n timestamp: number | bigint;\n};\n\nexport function getRevealPeriodEndedEventEncoder(): FixedSizeEncoder<RevealPeriodEndedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['signer', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRevealPeriodEndedEventDecoder(): FixedSizeDecoder<RevealPeriodEndedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['signer', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRevealPeriodEndedEventCodec(): FixedSizeCodec<\n RevealPeriodEndedEventArgs,\n RevealPeriodEndedEvent\n> {\n return combineCodec(\n getRevealPeriodEndedEventEncoder(),\n getRevealPeriodEndedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RevealStakeFinalizedEvent = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n optionId: bigint;\n userStake: bigint;\n userScore: bigint;\n totalScore: bigint;\n totalStake: bigint;\n timestamp: bigint;\n};\n\nexport type RevealStakeFinalizedEventArgs = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n optionId: number | bigint;\n userStake: number | bigint;\n userScore: number | bigint;\n totalScore: number | bigint;\n totalStake: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getRevealStakeFinalizedEventEncoder(): FixedSizeEncoder<RevealStakeFinalizedEventArgs> {\n return getStructEncoder([\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['optionId', getU64Encoder()],\n ['userStake', getU64Encoder()],\n ['userScore', getU64Encoder()],\n ['totalScore', getU128Encoder()],\n ['totalStake', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRevealStakeFinalizedEventDecoder(): FixedSizeDecoder<RevealStakeFinalizedEvent> {\n return getStructDecoder([\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['stakeAccountId', getU32Decoder()],\n ['optionId', getU64Decoder()],\n ['userStake', getU64Decoder()],\n ['userScore', getU64Decoder()],\n ['totalScore', getU128Decoder()],\n ['totalStake', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRevealStakeFinalizedEventCodec(): FixedSizeCodec<\n RevealStakeFinalizedEventArgs,\n RevealStakeFinalizedEvent\n> {\n return combineCodec(\n getRevealStakeFinalizedEventEncoder(),\n getRevealStakeFinalizedEventDecoder()\n );\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\n/**\n * The output of the callback instruction. Provided as a struct with ordered fields\n * as anchor does not support tuples and tuple structs yet.\n */\nexport type RevealStakeOutput = { field0: bigint };\n\nexport type RevealStakeOutputArgs = { field0: number | bigint };\n\nexport function getRevealStakeOutputEncoder(): FixedSizeEncoder<RevealStakeOutputArgs> {\n return getStructEncoder([['field0', getU64Encoder()]]);\n}\n\nexport function getRevealStakeOutputDecoder(): FixedSizeDecoder<RevealStakeOutput> {\n return getStructDecoder([['field0', getU64Decoder()]]);\n}\n\nexport function getRevealStakeOutputCodec(): FixedSizeCodec<\n RevealStakeOutputArgs,\n RevealStakeOutput\n> {\n return combineCodec(\n getRevealStakeOutputEncoder(),\n getRevealStakeOutputDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RewardAddedEvent = {\n market: Address;\n sponsor: Address;\n amount: bigint;\n totalRewardAmount: bigint;\n timestamp: bigint;\n};\n\nexport type RewardAddedEventArgs = {\n market: Address;\n sponsor: Address;\n amount: number | bigint;\n totalRewardAmount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getRewardAddedEventEncoder(): FixedSizeEncoder<RewardAddedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['sponsor', getAddressEncoder()],\n ['amount', getU64Encoder()],\n ['totalRewardAmount', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRewardAddedEventDecoder(): FixedSizeDecoder<RewardAddedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['sponsor', getAddressDecoder()],\n ['amount', getU64Decoder()],\n ['totalRewardAmount', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRewardAddedEventCodec(): FixedSizeCodec<\n RewardAddedEventArgs,\n RewardAddedEvent\n> {\n return combineCodec(\n getRewardAddedEventEncoder(),\n getRewardAddedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RewardsClaimedEvent = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n optionId: bigint;\n rewardAmount: bigint;\n score: bigint;\n timestamp: bigint;\n};\n\nexport type RewardsClaimedEventArgs = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n optionId: number | bigint;\n rewardAmount: number | bigint;\n score: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getRewardsClaimedEventEncoder(): FixedSizeEncoder<RewardsClaimedEventArgs> {\n return getStructEncoder([\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['optionId', getU64Encoder()],\n ['rewardAmount', getU64Encoder()],\n ['score', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRewardsClaimedEventDecoder(): FixedSizeDecoder<RewardsClaimedEvent> {\n return getStructDecoder([\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['stakeAccountId', getU32Decoder()],\n ['optionId', getU64Decoder()],\n ['rewardAmount', getU64Decoder()],\n ['score', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRewardsClaimedEventCodec(): FixedSizeCodec<\n RewardsClaimedEventArgs,\n RewardsClaimedEvent\n> {\n return combineCodec(\n getRewardsClaimedEventEncoder(),\n getRewardsClaimedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RewardWithdrawnEvent = {\n market: Address;\n sponsor: Address;\n rewardAmount: bigint;\n refundTokenAccount: Address;\n timestamp: bigint;\n};\n\nexport type RewardWithdrawnEventArgs = {\n market: Address;\n sponsor: Address;\n rewardAmount: number | bigint;\n refundTokenAccount: Address;\n timestamp: number | bigint;\n};\n\nexport function getRewardWithdrawnEventEncoder(): FixedSizeEncoder<RewardWithdrawnEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['sponsor', getAddressEncoder()],\n ['rewardAmount', getU64Encoder()],\n ['refundTokenAccount', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRewardWithdrawnEventDecoder(): FixedSizeDecoder<RewardWithdrawnEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['sponsor', getAddressDecoder()],\n ['rewardAmount', getU64Decoder()],\n ['refundTokenAccount', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRewardWithdrawnEventCodec(): FixedSizeCodec<\n RewardWithdrawnEventArgs,\n RewardWithdrawnEvent\n> {\n return combineCodec(\n getRewardWithdrawnEventEncoder(),\n getRewardWithdrawnEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Option,\n type OptionOrNullable,\n} from '@solana/kit';\n\nexport type StakeAccountClosedEvent = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n optionId: Option<bigint>;\n stakeAmount: bigint;\n feeRefund: bigint;\n stakedAtTimestamp: bigint;\n stakeEndTimestamp: bigint;\n score: bigint;\n timestamp: bigint;\n};\n\nexport type StakeAccountClosedEventArgs = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n optionId: OptionOrNullable<number | bigint>;\n stakeAmount: number | bigint;\n feeRefund: number | bigint;\n stakedAtTimestamp: number | bigint;\n stakeEndTimestamp: number | bigint;\n score: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getStakeAccountClosedEventEncoder(): Encoder<StakeAccountClosedEventArgs> {\n return getStructEncoder([\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['optionId', getOptionEncoder(getU64Encoder())],\n ['stakeAmount', getU64Encoder()],\n ['feeRefund', getU64Encoder()],\n ['stakedAtTimestamp', getU64Encoder()],\n ['stakeEndTimestamp', getU64Encoder()],\n ['score', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakeAccountClosedEventDecoder(): Decoder<StakeAccountClosedEvent> {\n return getStructDecoder([\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['stakeAccountId', getU32Decoder()],\n ['optionId', getOptionDecoder(getU64Decoder())],\n ['stakeAmount', getU64Decoder()],\n ['feeRefund', getU64Decoder()],\n ['stakedAtTimestamp', getU64Decoder()],\n ['stakeEndTimestamp', getU64Decoder()],\n ['score', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakeAccountClosedEventCodec(): Codec<\n StakeAccountClosedEventArgs,\n StakeAccountClosedEvent\n> {\n return combineCodec(\n getStakeAccountClosedEventEncoder(),\n getStakeAccountClosedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StakeAccountInitializedEvent = {\n stakeAccount: Address;\n owner: Address;\n market: Address;\n accountId: number;\n timestamp: bigint;\n};\n\nexport type StakeAccountInitializedEventArgs = {\n stakeAccount: Address;\n owner: Address;\n market: Address;\n accountId: number;\n timestamp: number | bigint;\n};\n\nexport function getStakeAccountInitializedEventEncoder(): FixedSizeEncoder<StakeAccountInitializedEventArgs> {\n return getStructEncoder([\n ['stakeAccount', getAddressEncoder()],\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['accountId', getU32Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakeAccountInitializedEventDecoder(): FixedSizeDecoder<StakeAccountInitializedEvent> {\n return getStructDecoder([\n ['stakeAccount', getAddressDecoder()],\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['accountId', getU32Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakeAccountInitializedEventCodec(): FixedSizeCodec<\n StakeAccountInitializedEventArgs,\n StakeAccountInitializedEvent\n> {\n return combineCodec(\n getStakeAccountInitializedEventEncoder(),\n getStakeAccountInitializedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StakedEvent = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n stakeEncryptedOption: Array<number>;\n stakeStateNonce: bigint;\n stakeEncryptedOptionDisclosure: Array<number>;\n stakeStateDisclosureNonce: bigint;\n amount: bigint;\n timestamp: bigint;\n};\n\nexport type StakedEventArgs = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n stakeEncryptedOption: Array<number>;\n stakeStateNonce: number | bigint;\n stakeEncryptedOptionDisclosure: Array<number>;\n stakeStateDisclosureNonce: number | bigint;\n amount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getStakedEventEncoder(): FixedSizeEncoder<StakedEventArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['stakeEncryptedOption', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['stakeStateNonce', getU128Encoder()],\n [\n 'stakeEncryptedOptionDisclosure',\n getArrayEncoder(getU8Encoder(), { size: 32 }),\n ],\n ['stakeStateDisclosureNonce', getU128Encoder()],\n ['amount', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakedEventDecoder(): FixedSizeDecoder<StakedEvent> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['stakeAccountId', getU32Decoder()],\n ['stakeEncryptedOption', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['stakeStateNonce', getU128Decoder()],\n [\n 'stakeEncryptedOptionDisclosure',\n getArrayDecoder(getU8Decoder(), { size: 32 }),\n ],\n ['stakeStateDisclosureNonce', getU128Decoder()],\n ['amount', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakedEventCodec(): FixedSizeCodec<\n StakedEventArgs,\n StakedEvent\n> {\n return combineCodec(getStakedEventEncoder(), getStakedEventDecoder());\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\nimport {\n getStakeOutputStruct0Decoder,\n getStakeOutputStruct0Encoder,\n type StakeOutputStruct0,\n type StakeOutputStruct0Args,\n} from '.';\n\n/**\n * The output of the callback instruction. Provided as a struct with ordered fields\n * as anchor does not support tuples and tuple structs yet.\n */\nexport type StakeOutput = { field0: StakeOutputStruct0 };\n\nexport type StakeOutputArgs = { field0: StakeOutputStruct0Args };\n\nexport function getStakeOutputEncoder(): FixedSizeEncoder<StakeOutputArgs> {\n return getStructEncoder([['field0', getStakeOutputStruct0Encoder()]]);\n}\n\nexport function getStakeOutputDecoder(): FixedSizeDecoder<StakeOutput> {\n return getStructDecoder([['field0', getStakeOutputStruct0Decoder()]]);\n}\n\nexport function getStakeOutputCodec(): FixedSizeCodec<\n StakeOutputArgs,\n StakeOutput\n> {\n return combineCodec(getStakeOutputEncoder(), getStakeOutputDecoder());\n}\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 {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StakeOutputStruct0 = {\n field0: {\n encryptionKey: Array<number>;\n nonce: bigint;\n ciphertexts: Array<Array<number>>;\n };\n field1: {\n encryptionKey: Array<number>;\n nonce: bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport type StakeOutputStruct0Args = {\n field0: {\n encryptionKey: Array<number>;\n nonce: number | bigint;\n ciphertexts: Array<Array<number>>;\n };\n field1: {\n encryptionKey: Array<number>;\n nonce: number | bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport function getStakeOutputStruct0Encoder(): FixedSizeEncoder<StakeOutputStruct0Args> {\n return getStructEncoder([\n [\n 'field0',\n getStructEncoder([\n ['encryptionKey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['nonce', getU128Encoder()],\n [\n 'ciphertexts',\n getArrayEncoder(getArrayEncoder(getU8Encoder(), { size: 32 }), {\n size: 1,\n }),\n ],\n ]),\n ],\n [\n 'field1',\n getStructEncoder([\n ['encryptionKey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['nonce', getU128Encoder()],\n [\n 'ciphertexts',\n getArrayEncoder(getArrayEncoder(getU8Encoder(), { size: 32 }), {\n size: 1,\n }),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getStakeOutputStruct0Decoder(): FixedSizeDecoder<StakeOutputStruct0> {\n return getStructDecoder([\n [\n 'field0',\n getStructDecoder([\n ['encryptionKey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['nonce', getU128Decoder()],\n [\n 'ciphertexts',\n getArrayDecoder(getArrayDecoder(getU8Decoder(), { size: 32 }), {\n size: 1,\n }),\n ],\n ]),\n ],\n [\n 'field1',\n getStructDecoder([\n ['encryptionKey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['nonce', getU128Decoder()],\n [\n 'ciphertexts',\n getArrayDecoder(getArrayDecoder(getU8Decoder(), { size: 32 }), {\n size: 1,\n }),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getStakeOutputStruct0Codec(): FixedSizeCodec<\n StakeOutputStruct0Args,\n StakeOutputStruct0\n> {\n return combineCodec(\n getStakeOutputStruct0Encoder(),\n getStakeOutputStruct0Decoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StakeRevealedEvent = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n stakeAmount: bigint;\n selectedOption: bigint;\n timestamp: bigint;\n};\n\nexport type StakeRevealedEventArgs = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n stakeAmount: number | bigint;\n selectedOption: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getStakeRevealedEventEncoder(): FixedSizeEncoder<StakeRevealedEventArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['stakeAmount', getU64Encoder()],\n ['selectedOption', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakeRevealedEventDecoder(): FixedSizeDecoder<StakeRevealedEvent> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['stakeAccountId', getU32Decoder()],\n ['stakeAmount', getU64Decoder()],\n ['selectedOption', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakeRevealedEventCodec(): FixedSizeCodec<\n StakeRevealedEventArgs,\n StakeRevealedEvent\n> {\n return combineCodec(\n getStakeRevealedEventEncoder(),\n getStakeRevealedEventDecoder()\n );\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StuckStakeClosedEvent = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n refundedAmount: bigint;\n refundedPlatformFee: bigint;\n refundedRewardPoolFee: bigint;\n refundedCreatorFee: bigint;\n timestamp: bigint;\n};\n\nexport type StuckStakeClosedEventArgs = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n refundedAmount: number | bigint;\n refundedPlatformFee: number | bigint;\n refundedRewardPoolFee: number | bigint;\n refundedCreatorFee: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getStuckStakeClosedEventEncoder(): FixedSizeEncoder<StuckStakeClosedEventArgs> {\n return getStructEncoder([\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['refundedAmount', getU64Encoder()],\n ['refundedPlatformFee', getU64Encoder()],\n ['refundedRewardPoolFee', getU64Encoder()],\n ['refundedCreatorFee', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStuckStakeClosedEventDecoder(): FixedSizeDecoder<StuckStakeClosedEvent> {\n return getStructDecoder([\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['stakeAccountId', getU32Decoder()],\n ['refundedAmount', getU64Decoder()],\n ['refundedPlatformFee', getU64Decoder()],\n ['refundedRewardPoolFee', getU64Decoder()],\n ['refundedCreatorFee', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStuckStakeClosedEventCodec(): FixedSizeCodec<\n StuckStakeClosedEventArgs,\n StuckStakeClosedEvent\n> {\n return combineCodec(\n getStuckStakeClosedEventEncoder(),\n getStuckStakeClosedEventDecoder()\n );\n}\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 {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type Timestamp = { timestamp: bigint };\n\nexport type TimestampArgs = { timestamp: number | bigint };\n\nexport function getTimestampEncoder(): FixedSizeEncoder<TimestampArgs> {\n return getStructEncoder([['timestamp', getU64Encoder()]]);\n}\n\nexport function getTimestampDecoder(): FixedSizeDecoder<Timestamp> {\n return getStructDecoder([['timestamp', getU64Decoder()]]);\n}\n\nexport function getTimestampCodec(): FixedSizeCodec<TimestampArgs, Timestamp> {\n return combineCodec(getTimestampEncoder(), getTimestampDecoder());\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type UnstakedEvent = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n amount: bigint;\n timestamp: bigint;\n};\n\nexport type UnstakedEventArgs = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n amount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getUnstakedEventEncoder(): FixedSizeEncoder<UnstakedEventArgs> {\n return getStructEncoder([\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['amount', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getUnstakedEventDecoder(): FixedSizeDecoder<UnstakedEvent> {\n return getStructDecoder([\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['stakeAccountId', getU32Decoder()],\n ['amount', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getUnstakedEventCodec(): FixedSizeCodec<\n UnstakedEventArgs,\n UnstakedEvent\n> {\n return combineCodec(getUnstakedEventEncoder(), getUnstakedEventDecoder());\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type UpdateAuthorityChangedEvent = {\n platformConfig: Address;\n oldValue: Address;\n newValue: Address;\n timestamp: bigint;\n};\n\nexport type UpdateAuthorityChangedEventArgs = {\n platformConfig: Address;\n oldValue: Address;\n newValue: Address;\n timestamp: number | bigint;\n};\n\nexport function getUpdateAuthorityChangedEventEncoder(): FixedSizeEncoder<UpdateAuthorityChangedEventArgs> {\n return getStructEncoder([\n ['platformConfig', getAddressEncoder()],\n ['oldValue', getAddressEncoder()],\n ['newValue', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getUpdateAuthorityChangedEventDecoder(): FixedSizeDecoder<UpdateAuthorityChangedEvent> {\n return getStructDecoder([\n ['platformConfig', getAddressDecoder()],\n ['oldValue', getAddressDecoder()],\n ['newValue', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getUpdateAuthorityChangedEventCodec(): FixedSizeCodec<\n UpdateAuthorityChangedEventArgs,\n UpdateAuthorityChangedEvent\n> {\n return combineCodec(\n getUpdateAuthorityChangedEventEncoder(),\n getUpdateAuthorityChangedEventDecoder()\n );\n}\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 {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type UtilityPubkeys = {\n x25519Pubkey: Array<number>;\n ed25519VerifyingKey: Array<number>;\n elgamalPubkey: Array<number>;\n pubkeyValidityProof: Array<number>;\n};\n\nexport type UtilityPubkeysArgs = UtilityPubkeys;\n\nexport function getUtilityPubkeysEncoder(): FixedSizeEncoder<UtilityPubkeysArgs> {\n return getStructEncoder([\n ['x25519Pubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['ed25519VerifyingKey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['elgamalPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['pubkeyValidityProof', getArrayEncoder(getU8Encoder(), { size: 64 })],\n ]);\n}\n\nexport function getUtilityPubkeysDecoder(): FixedSizeDecoder<UtilityPubkeys> {\n return getStructDecoder([\n ['x25519Pubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['ed25519VerifyingKey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['elgamalPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['pubkeyValidityProof', getArrayDecoder(getU8Decoder(), { size: 64 })],\n ]);\n}\n\nexport function getUtilityPubkeysCodec(): FixedSizeCodec<\n UtilityPubkeysArgs,\n UtilityPubkeys\n> {\n return combineCodec(getUtilityPubkeysEncoder(), getUtilityPubkeysDecoder());\n}\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 {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type WinningOptionSetEvent = {\n market: Address;\n marketAuthority: Address;\n option: Address;\n optionId: bigint;\n rewardBp: number;\n winningOptionAllocation: number;\n timestamp: bigint;\n};\n\nexport type WinningOptionSetEventArgs = {\n market: Address;\n marketAuthority: Address;\n option: Address;\n optionId: number | bigint;\n rewardBp: number;\n winningOptionAllocation: number;\n timestamp: number | bigint;\n};\n\nexport function getWinningOptionSetEventEncoder(): FixedSizeEncoder<WinningOptionSetEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['marketAuthority', getAddressEncoder()],\n ['option', getAddressEncoder()],\n ['optionId', getU64Encoder()],\n ['rewardBp', getU16Encoder()],\n ['winningOptionAllocation', getU16Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getWinningOptionSetEventDecoder(): FixedSizeDecoder<WinningOptionSetEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['marketAuthority', getAddressDecoder()],\n ['option', getAddressDecoder()],\n ['optionId', getU64Decoder()],\n ['rewardBp', getU16Decoder()],\n ['winningOptionAllocation', getU16Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getWinningOptionSetEventCodec(): FixedSizeCodec<\n WinningOptionSetEventArgs,\n WinningOptionSetEvent\n> {\n return combineCodec(\n getWinningOptionSetEventEncoder(),\n getWinningOptionSetEventDecoder()\n );\n}\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 {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type EncodedAccount,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const OPPORTUNITY_MARKET_OPTION_DISCRIMINATOR = new Uint8Array([\n 220, 236, 171, 213, 170, 117, 10, 64,\n]);\n\nexport function getOpportunityMarketOptionDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n OPPORTUNITY_MARKET_OPTION_DISCRIMINATOR\n );\n}\n\nexport type OpportunityMarketOption = {\n discriminator: ReadonlyUint8Array;\n bump: number;\n id: bigint;\n creator: Address;\n createdAt: bigint;\n unclaimedStake: bigint;\n totalScore: bigint;\n /** Non-zero iff this option is a winner; share of pool in basis points (0–10_000). */\n rewardBp: number;\n /** Set on first finalize for a winning option; gates adding `reward_bp` to `winning_option_active_bp`. */\n includedInActiveBp: boolean;\n};\n\nexport type OpportunityMarketOptionArgs = {\n bump: number;\n id: number | bigint;\n creator: Address;\n createdAt: number | bigint;\n unclaimedStake: number | bigint;\n totalScore: number | bigint;\n /** Non-zero iff this option is a winner; share of pool in basis points (0–10_000). */\n rewardBp: number;\n /** Set on first finalize for a winning option; gates adding `reward_bp` to `winning_option_active_bp`. */\n includedInActiveBp: boolean;\n};\n\nexport function getOpportunityMarketOptionEncoder(): FixedSizeEncoder<OpportunityMarketOptionArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['id', getU64Encoder()],\n ['creator', getAddressEncoder()],\n ['createdAt', getU64Encoder()],\n ['unclaimedStake', getU64Encoder()],\n ['totalScore', getU128Encoder()],\n ['rewardBp', getU16Encoder()],\n ['includedInActiveBp', getBooleanEncoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: OPPORTUNITY_MARKET_OPTION_DISCRIMINATOR,\n })\n );\n}\n\nexport function getOpportunityMarketOptionDecoder(): FixedSizeDecoder<OpportunityMarketOption> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ['id', getU64Decoder()],\n ['creator', getAddressDecoder()],\n ['createdAt', getU64Decoder()],\n ['unclaimedStake', getU64Decoder()],\n ['totalScore', getU128Decoder()],\n ['rewardBp', getU16Decoder()],\n ['includedInActiveBp', getBooleanDecoder()],\n ]);\n}\n\nexport function getOpportunityMarketOptionCodec(): FixedSizeCodec<\n OpportunityMarketOptionArgs,\n OpportunityMarketOption\n> {\n return combineCodec(\n getOpportunityMarketOptionEncoder(),\n getOpportunityMarketOptionDecoder()\n );\n}\n\nexport function decodeOpportunityMarketOption<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<OpportunityMarketOption, TAddress>;\nexport function decodeOpportunityMarketOption<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<OpportunityMarketOption, TAddress>;\nexport function decodeOpportunityMarketOption<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n | Account<OpportunityMarketOption, TAddress>\n | MaybeAccount<OpportunityMarketOption, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getOpportunityMarketOptionDecoder()\n );\n}\n\nexport async function fetchOpportunityMarketOption<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<OpportunityMarketOption, TAddress>> {\n const maybeAccount = await fetchMaybeOpportunityMarketOption(\n rpc,\n address,\n config\n );\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeOpportunityMarketOption<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<OpportunityMarketOption, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeOpportunityMarketOption(maybeAccount);\n}\n\nexport async function fetchAllOpportunityMarketOption(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<OpportunityMarketOption>[]> {\n const maybeAccounts = await fetchAllMaybeOpportunityMarketOption(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeOpportunityMarketOption(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<OpportunityMarketOption>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeOpportunityMarketOption(maybeAccount)\n );\n}\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 {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type EncodedAccount,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const OPPORTUNITY_MARKET_SPONSOR_DISCRIMINATOR = new Uint8Array([\n 207, 139, 192, 91, 37, 190, 2, 192,\n]);\n\nexport function getOpportunityMarketSponsorDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n OPPORTUNITY_MARKET_SPONSOR_DISCRIMINATOR\n );\n}\n\nexport type OpportunityMarketSponsor = {\n discriminator: ReadonlyUint8Array;\n bump: number;\n sponsor: Address;\n market: Address;\n rewardDeposited: bigint;\n};\n\nexport type OpportunityMarketSponsorArgs = {\n bump: number;\n sponsor: Address;\n market: Address;\n rewardDeposited: number | bigint;\n};\n\nexport function getOpportunityMarketSponsorEncoder(): FixedSizeEncoder<OpportunityMarketSponsorArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['sponsor', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['rewardDeposited', getU64Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: OPPORTUNITY_MARKET_SPONSOR_DISCRIMINATOR,\n })\n );\n}\n\nexport function getOpportunityMarketSponsorDecoder(): FixedSizeDecoder<OpportunityMarketSponsor> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ['sponsor', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['rewardDeposited', getU64Decoder()],\n ]);\n}\n\nexport function getOpportunityMarketSponsorCodec(): FixedSizeCodec<\n OpportunityMarketSponsorArgs,\n OpportunityMarketSponsor\n> {\n return combineCodec(\n getOpportunityMarketSponsorEncoder(),\n getOpportunityMarketSponsorDecoder()\n );\n}\n\nexport function decodeOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<OpportunityMarketSponsor, TAddress>;\nexport function decodeOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<OpportunityMarketSponsor, TAddress>;\nexport function decodeOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n | Account<OpportunityMarketSponsor, TAddress>\n | MaybeAccount<OpportunityMarketSponsor, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getOpportunityMarketSponsorDecoder()\n );\n}\n\nexport async function fetchOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<OpportunityMarketSponsor, TAddress>> {\n const maybeAccount = await fetchMaybeOpportunityMarketSponsor(\n rpc,\n address,\n config\n );\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<OpportunityMarketSponsor, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeOpportunityMarketSponsor(maybeAccount);\n}\n\nexport async function fetchAllOpportunityMarketSponsor(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<OpportunityMarketSponsor>[]> {\n const maybeAccounts = await fetchAllMaybeOpportunityMarketSponsor(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeOpportunityMarketSponsor(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<OpportunityMarketSponsor>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeOpportunityMarketSponsor(maybeAccount)\n );\n}\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 {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n getFeeRatesDecoder,\n getFeeRatesEncoder,\n type FeeRates,\n type FeeRatesArgs,\n} from '../types';\n\nexport const PLATFORM_CONFIG_DISCRIMINATOR = new Uint8Array([\n 160, 78, 128, 0, 248, 83, 230, 160,\n]);\n\nexport function getPlatformConfigDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n PLATFORM_CONFIG_DISCRIMINATOR\n );\n}\n\nexport type PlatformConfig = {\n discriminator: ReadonlyUint8Array;\n bump: number;\n name: string;\n updateAuthority: Address;\n feeClaimAuthority: Address;\n feeRates: FeeRates;\n marketResolutionDeadlineSeconds: bigint;\n minTimeToStakeSeconds: bigint;\n revealAuthority: Address;\n revealPeriodSeconds: bigint;\n};\n\nexport type PlatformConfigArgs = {\n bump: number;\n name: string;\n updateAuthority: Address;\n feeClaimAuthority: Address;\n feeRates: FeeRatesArgs;\n marketResolutionDeadlineSeconds: number | bigint;\n minTimeToStakeSeconds: number | bigint;\n revealAuthority: Address;\n revealPeriodSeconds: number | bigint;\n};\n\nexport function getPlatformConfigEncoder(): Encoder<PlatformConfigArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n ['updateAuthority', getAddressEncoder()],\n ['feeClaimAuthority', getAddressEncoder()],\n ['feeRates', getFeeRatesEncoder()],\n ['marketResolutionDeadlineSeconds', getU64Encoder()],\n ['minTimeToStakeSeconds', getU64Encoder()],\n ['revealAuthority', getAddressEncoder()],\n ['revealPeriodSeconds', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: PLATFORM_CONFIG_DISCRIMINATOR })\n );\n}\n\nexport function getPlatformConfigDecoder(): Decoder<PlatformConfig> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ['updateAuthority', getAddressDecoder()],\n ['feeClaimAuthority', getAddressDecoder()],\n ['feeRates', getFeeRatesDecoder()],\n ['marketResolutionDeadlineSeconds', getU64Decoder()],\n ['minTimeToStakeSeconds', getU64Decoder()],\n ['revealAuthority', getAddressDecoder()],\n ['revealPeriodSeconds', getU64Decoder()],\n ]);\n}\n\nexport function getPlatformConfigCodec(): Codec<\n PlatformConfigArgs,\n PlatformConfig\n> {\n return combineCodec(getPlatformConfigEncoder(), getPlatformConfigDecoder());\n}\n\nexport function decodePlatformConfig<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<PlatformConfig, TAddress>;\nexport function decodePlatformConfig<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<PlatformConfig, TAddress>;\nexport function decodePlatformConfig<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<PlatformConfig, TAddress> | MaybeAccount<PlatformConfig, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getPlatformConfigDecoder()\n );\n}\n\nexport async function fetchPlatformConfig<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<PlatformConfig, TAddress>> {\n const maybeAccount = await fetchMaybePlatformConfig(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybePlatformConfig<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<PlatformConfig, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodePlatformConfig(maybeAccount);\n}\n\nexport async function fetchAllPlatformConfig(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<PlatformConfig>[]> {\n const maybeAccounts = await fetchAllMaybePlatformConfig(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybePlatformConfig(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<PlatformConfig>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodePlatformConfig(maybeAccount)\n );\n}\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 {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type Option,\n type OptionOrNullable,\n type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n getCollectedFeesDecoder,\n getCollectedFeesEncoder,\n type CollectedFees,\n type CollectedFeesArgs,\n} from '../types';\n\nexport const STAKE_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 80, 158, 67, 124, 50, 189, 192, 255,\n]);\n\nexport function getStakeAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n STAKE_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type StakeAccount = {\n discriminator: ReadonlyUint8Array;\n encryptedOption: Array<number>;\n stateNonce: bigint;\n bump: number;\n owner: Address;\n market: Address;\n userPubkey: Array<number>;\n encryptedOptionDisclosure: Array<number>;\n stateNonceDisclosure: bigint;\n stakedAtTimestamp: Option<bigint>;\n unstakedAtTimestamp: Option<bigint>;\n amount: bigint;\n collectedFees: CollectedFees;\n revealedOption: Option<bigint>;\n score: Option<bigint>;\n unstaked: boolean;\n rewardsClaimed: boolean;\n id: number;\n pendingStakeComputation: Option<Address>;\n pendingReveal: boolean;\n};\n\nexport type StakeAccountArgs = {\n encryptedOption: Array<number>;\n stateNonce: number | bigint;\n bump: number;\n owner: Address;\n market: Address;\n userPubkey: Array<number>;\n encryptedOptionDisclosure: Array<number>;\n stateNonceDisclosure: number | bigint;\n stakedAtTimestamp: OptionOrNullable<number | bigint>;\n unstakedAtTimestamp: OptionOrNullable<number | bigint>;\n amount: number | bigint;\n collectedFees: CollectedFeesArgs;\n revealedOption: OptionOrNullable<number | bigint>;\n score: OptionOrNullable<number | bigint>;\n unstaked: boolean;\n rewardsClaimed: boolean;\n id: number;\n pendingStakeComputation: OptionOrNullable<Address>;\n pendingReveal: boolean;\n};\n\nexport function getStakeAccountEncoder(): Encoder<StakeAccountArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['encryptedOption', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['stateNonce', getU128Encoder()],\n ['bump', getU8Encoder()],\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['userPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n [\n 'encryptedOptionDisclosure',\n getArrayEncoder(getU8Encoder(), { size: 32 }),\n ],\n ['stateNonceDisclosure', getU128Encoder()],\n ['stakedAtTimestamp', getOptionEncoder(getU64Encoder())],\n ['unstakedAtTimestamp', getOptionEncoder(getU64Encoder())],\n ['amount', getU64Encoder()],\n ['collectedFees', getCollectedFeesEncoder()],\n ['revealedOption', getOptionEncoder(getU64Encoder())],\n ['score', getOptionEncoder(getU64Encoder())],\n ['unstaked', getBooleanEncoder()],\n ['rewardsClaimed', getBooleanEncoder()],\n ['id', getU32Encoder()],\n ['pendingStakeComputation', getOptionEncoder(getAddressEncoder())],\n ['pendingReveal', getBooleanEncoder()],\n ]),\n (value) => ({ ...value, discriminator: STAKE_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getStakeAccountDecoder(): Decoder<StakeAccount> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['encryptedOption', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['stateNonce', getU128Decoder()],\n ['bump', getU8Decoder()],\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['userPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n [\n 'encryptedOptionDisclosure',\n getArrayDecoder(getU8Decoder(), { size: 32 }),\n ],\n ['stateNonceDisclosure', getU128Decoder()],\n ['stakedAtTimestamp', getOptionDecoder(getU64Decoder())],\n ['unstakedAtTimestamp', getOptionDecoder(getU64Decoder())],\n ['amount', getU64Decoder()],\n ['collectedFees', getCollectedFeesDecoder()],\n ['revealedOption', getOptionDecoder(getU64Decoder())],\n ['score', getOptionDecoder(getU64Decoder())],\n ['unstaked', getBooleanDecoder()],\n ['rewardsClaimed', getBooleanDecoder()],\n ['id', getU32Decoder()],\n ['pendingStakeComputation', getOptionDecoder(getAddressDecoder())],\n ['pendingReveal', getBooleanDecoder()],\n ]);\n}\n\nexport function getStakeAccountCodec(): Codec<StakeAccountArgs, StakeAccount> {\n return combineCodec(getStakeAccountEncoder(), getStakeAccountDecoder());\n}\n\nexport function decodeStakeAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<StakeAccount, TAddress>;\nexport function decodeStakeAccount<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<StakeAccount, TAddress>;\nexport function decodeStakeAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<StakeAccount, TAddress> | MaybeAccount<StakeAccount, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getStakeAccountDecoder()\n );\n}\n\nexport async function fetchStakeAccount<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<StakeAccount, TAddress>> {\n const maybeAccount = await fetchMaybeStakeAccount(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeStakeAccount<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<StakeAccount, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeStakeAccount(maybeAccount);\n}\n\nexport async function fetchAllStakeAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<StakeAccount>[]> {\n const maybeAccounts = await fetchAllMaybeStakeAccount(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeStakeAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<StakeAccount>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeStakeAccount(maybeAccount));\n}\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 {\n isProgramError,\n type Address,\n type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n type SolanaError,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\n\n/** AbortedComputation: Computation aborted */\nexport const OPPORTUNITY_MARKET_ERROR__ABORTED_COMPUTATION = 0x1770; // 6000\n/** Unauthorized: Unauthorized */\nexport const OPPORTUNITY_MARKET_ERROR__UNAUTHORIZED = 0x1771; // 6001\n/** InsufficientBalance: Insufficient balance */\nexport const OPPORTUNITY_MARKET_ERROR__INSUFFICIENT_BALANCE = 0x1772; // 6002\n/** InsufficientRewardFunding: Insufficient reward funding */\nexport const OPPORTUNITY_MARKET_ERROR__INSUFFICIENT_REWARD_FUNDING = 0x1773; // 6003\n/** InvalidParameters: Invalid parameters */\nexport const OPPORTUNITY_MARKET_ERROR__INVALID_PARAMETERS = 0x1774; // 6004\n/** MarketAlreadyOpen: Market is already open */\nexport const OPPORTUNITY_MARKET_ERROR__MARKET_ALREADY_OPEN = 0x1775; // 6005\n/** InvalidOptionId: Invalid option ID */\nexport const OPPORTUNITY_MARKET_ERROR__INVALID_OPTION_ID = 0x1776; // 6006\n/** MarketNotOpen: Market is not open */\nexport const OPPORTUNITY_MARKET_ERROR__MARKET_NOT_OPEN = 0x1777; // 6007\n/** TimeWindowMismatch: Operation called outside its permitted time window */\nexport const OPPORTUNITY_MARKET_ERROR__TIME_WINDOW_MISMATCH = 0x1778; // 6008\n/** NoStake: Stake account has no recorded stake */\nexport const OPPORTUNITY_MARKET_ERROR__NO_STAKE = 0x1779; // 6009\n/** WinnerAlreadySelected: Market winner already selected */\nexport const OPPORTUNITY_MARKET_ERROR__WINNER_ALREADY_SELECTED = 0x177a; // 6010\n/** AlreadyRevealed: Stake already revealed */\nexport const OPPORTUNITY_MARKET_ERROR__ALREADY_REVEALED = 0x177b; // 6011\n/** MarketNotResolved: Market not yet resolved */\nexport const OPPORTUNITY_MARKET_ERROR__MARKET_NOT_RESOLVED = 0x177c; // 6012\n/** NotRevealed: Stake not yet revealed */\nexport const OPPORTUNITY_MARKET_ERROR__NOT_REVEALED = 0x177d; // 6013\n/** TallyAlreadyIncremented: Tally already incremented for this stake account */\nexport const OPPORTUNITY_MARKET_ERROR__TALLY_ALREADY_INCREMENTED = 0x177e; // 6014\n/** Overflow: Arithmetic overflow */\nexport const OPPORTUNITY_MARKET_ERROR__OVERFLOW = 0x177f; // 6015\n/** RevealPeriodEnded: Reveal period has already ended */\nexport const OPPORTUNITY_MARKET_ERROR__REVEAL_PERIOD_ENDED = 0x1780; // 6016\n/** InvalidMint: Token mint does not match account mint */\nexport const OPPORTUNITY_MARKET_ERROR__INVALID_MINT = 0x1781; // 6017\n/** AlreadyUnstaked: Already unstaked */\nexport const OPPORTUNITY_MARKET_ERROR__ALREADY_UNSTAKED = 0x1782; // 6018\n/** AlreadyStaked: Already staked for this stake account */\nexport const OPPORTUNITY_MARKET_ERROR__ALREADY_STAKED = 0x1783; // 6019\n/** DepositBelowMinimum: Deposit amount below minimum required for option creation */\nexport const OPPORTUNITY_MARKET_ERROR__DEPOSIT_BELOW_MINIMUM = 0x1784; // 6020\n/** AddOptionStakeFailed: Add option stake failed: insufficient balance or below minimum deposit */\nexport const OPPORTUNITY_MARKET_ERROR__ADD_OPTION_STAKE_FAILED = 0x1785; // 6021\n/** Locked: Account is locked */\nexport const OPPORTUNITY_MARKET_ERROR__LOCKED = 0x1786; // 6022\n/** InvalidAccountState: Invalid account state */\nexport const OPPORTUNITY_MARKET_ERROR__INVALID_ACCOUNT_STATE = 0x1787; // 6023\n/** NoFeesToClaim: No fees to claim */\nexport const OPPORTUNITY_MARKET_ERROR__NO_FEES_TO_CLAIM = 0x1788; // 6024\n/** StakeNotStuck: Stake account is not in a stuck or failed state */\nexport const OPPORTUNITY_MARKET_ERROR__STAKE_NOT_STUCK = 0x1789; // 6025\n/** StakeBelowMinimum: Stake amount is below the market minimum */\nexport const OPPORTUNITY_MARKET_ERROR__STAKE_BELOW_MINIMUM = 0x178a; // 6026\n/** SelectOptionsDeadlinePassed: Deadline for selecting winning options has passed */\nexport const OPPORTUNITY_MARKET_ERROR__SELECT_OPTIONS_DEADLINE_PASSED = 0x178b; // 6027\n/** InvalidFeeRates: Invalid fee rates */\nexport const OPPORTUNITY_MARKET_ERROR__INVALID_FEE_RATES = 0x178c; // 6028\n/** OptionStillNeeded: Option still needed */\nexport const OPPORTUNITY_MARKET_ERROR__OPTION_STILL_NEEDED = 0x178d; // 6029\n/** CreatorMismatch: Creator mismatch */\nexport const OPPORTUNITY_MARKET_ERROR__CREATOR_MISMATCH = 0x178e; // 6030\n/** RevealPeriodNotOver: Reveal period not over */\nexport const OPPORTUNITY_MARKET_ERROR__REVEAL_PERIOD_NOT_OVER = 0x178f; // 6031\n/** NoFinalizedWinningOption: No winning option has a finalized stake */\nexport const OPPORTUNITY_MARKET_ERROR__NO_FINALIZED_WINNING_OPTION = 0x1790; // 6032\n/** NoRewardToClaim: No reward to claim */\nexport const OPPORTUNITY_MARKET_ERROR__NO_REWARD_TO_CLAIM = 0x1791; // 6033\n/** RewardAlreadyClaimed: Reward already claimed */\nexport const OPPORTUNITY_MARKET_ERROR__REWARD_ALREADY_CLAIMED = 0x1792; // 6034\n\nexport type OpportunityMarketError =\n | typeof OPPORTUNITY_MARKET_ERROR__ABORTED_COMPUTATION\n | typeof OPPORTUNITY_MARKET_ERROR__ADD_OPTION_STAKE_FAILED\n | typeof OPPORTUNITY_MARKET_ERROR__ALREADY_REVEALED\n | typeof OPPORTUNITY_MARKET_ERROR__ALREADY_STAKED\n | typeof OPPORTUNITY_MARKET_ERROR__ALREADY_UNSTAKED\n | typeof OPPORTUNITY_MARKET_ERROR__CREATOR_MISMATCH\n | typeof OPPORTUNITY_MARKET_ERROR__DEPOSIT_BELOW_MINIMUM\n | typeof OPPORTUNITY_MARKET_ERROR__INSUFFICIENT_BALANCE\n | typeof OPPORTUNITY_MARKET_ERROR__INSUFFICIENT_REWARD_FUNDING\n | typeof OPPORTUNITY_MARKET_ERROR__INVALID_ACCOUNT_STATE\n | typeof OPPORTUNITY_MARKET_ERROR__INVALID_FEE_RATES\n | typeof OPPORTUNITY_MARKET_ERROR__INVALID_MINT\n | typeof OPPORTUNITY_MARKET_ERROR__INVALID_OPTION_ID\n | typeof OPPORTUNITY_MARKET_ERROR__INVALID_PARAMETERS\n | typeof OPPORTUNITY_MARKET_ERROR__LOCKED\n | typeof OPPORTUNITY_MARKET_ERROR__MARKET_ALREADY_OPEN\n | typeof OPPORTUNITY_MARKET_ERROR__MARKET_NOT_OPEN\n | typeof OPPORTUNITY_MARKET_ERROR__MARKET_NOT_RESOLVED\n | typeof OPPORTUNITY_MARKET_ERROR__NO_FEES_TO_CLAIM\n | typeof OPPORTUNITY_MARKET_ERROR__NO_FINALIZED_WINNING_OPTION\n | typeof OPPORTUNITY_MARKET_ERROR__NO_REWARD_TO_CLAIM\n | typeof OPPORTUNITY_MARKET_ERROR__NO_STAKE\n | typeof OPPORTUNITY_MARKET_ERROR__NOT_REVEALED\n | typeof OPPORTUNITY_MARKET_ERROR__OPTION_STILL_NEEDED\n | typeof OPPORTUNITY_MARKET_ERROR__OVERFLOW\n | typeof OPPORTUNITY_MARKET_ERROR__REVEAL_PERIOD_ENDED\n | typeof OPPORTUNITY_MARKET_ERROR__REVEAL_PERIOD_NOT_OVER\n | typeof OPPORTUNITY_MARKET_ERROR__REWARD_ALREADY_CLAIMED\n | typeof OPPORTUNITY_MARKET_ERROR__SELECT_OPTIONS_DEADLINE_PASSED\n | typeof OPPORTUNITY_MARKET_ERROR__STAKE_BELOW_MINIMUM\n | typeof OPPORTUNITY_MARKET_ERROR__STAKE_NOT_STUCK\n | typeof OPPORTUNITY_MARKET_ERROR__TALLY_ALREADY_INCREMENTED\n | typeof OPPORTUNITY_MARKET_ERROR__TIME_WINDOW_MISMATCH\n | typeof OPPORTUNITY_MARKET_ERROR__UNAUTHORIZED\n | typeof OPPORTUNITY_MARKET_ERROR__WINNER_ALREADY_SELECTED;\n\nlet opportunityMarketErrorMessages:\n | Record<OpportunityMarketError, string>\n | undefined;\nif (process.env.NODE_ENV !== 'production') {\n opportunityMarketErrorMessages = {\n [OPPORTUNITY_MARKET_ERROR__ABORTED_COMPUTATION]: `Computation aborted`,\n [OPPORTUNITY_MARKET_ERROR__ADD_OPTION_STAKE_FAILED]: `Add option stake failed: insufficient balance or below minimum deposit`,\n [OPPORTUNITY_MARKET_ERROR__ALREADY_REVEALED]: `Stake already revealed`,\n [OPPORTUNITY_MARKET_ERROR__ALREADY_STAKED]: `Already staked for this stake account`,\n [OPPORTUNITY_MARKET_ERROR__ALREADY_UNSTAKED]: `Already unstaked`,\n [OPPORTUNITY_MARKET_ERROR__CREATOR_MISMATCH]: `Creator mismatch`,\n [OPPORTUNITY_MARKET_ERROR__DEPOSIT_BELOW_MINIMUM]: `Deposit amount below minimum required for option creation`,\n [OPPORTUNITY_MARKET_ERROR__INSUFFICIENT_BALANCE]: `Insufficient balance`,\n [OPPORTUNITY_MARKET_ERROR__INSUFFICIENT_REWARD_FUNDING]: `Insufficient reward funding`,\n [OPPORTUNITY_MARKET_ERROR__INVALID_ACCOUNT_STATE]: `Invalid account state`,\n [OPPORTUNITY_MARKET_ERROR__INVALID_FEE_RATES]: `Invalid fee rates`,\n [OPPORTUNITY_MARKET_ERROR__INVALID_MINT]: `Token mint does not match account mint`,\n [OPPORTUNITY_MARKET_ERROR__INVALID_OPTION_ID]: `Invalid option ID`,\n [OPPORTUNITY_MARKET_ERROR__INVALID_PARAMETERS]: `Invalid parameters`,\n [OPPORTUNITY_MARKET_ERROR__LOCKED]: `Account is locked`,\n [OPPORTUNITY_MARKET_ERROR__MARKET_ALREADY_OPEN]: `Market is already open`,\n [OPPORTUNITY_MARKET_ERROR__MARKET_NOT_OPEN]: `Market is not open`,\n [OPPORTUNITY_MARKET_ERROR__MARKET_NOT_RESOLVED]: `Market not yet resolved`,\n [OPPORTUNITY_MARKET_ERROR__NO_FEES_TO_CLAIM]: `No fees to claim`,\n [OPPORTUNITY_MARKET_ERROR__NO_FINALIZED_WINNING_OPTION]: `No winning option has a finalized stake`,\n [OPPORTUNITY_MARKET_ERROR__NO_REWARD_TO_CLAIM]: `No reward to claim`,\n [OPPORTUNITY_MARKET_ERROR__NO_STAKE]: `Stake account has no recorded stake`,\n [OPPORTUNITY_MARKET_ERROR__NOT_REVEALED]: `Stake not yet revealed`,\n [OPPORTUNITY_MARKET_ERROR__OPTION_STILL_NEEDED]: `Option still needed`,\n [OPPORTUNITY_MARKET_ERROR__OVERFLOW]: `Arithmetic overflow`,\n [OPPORTUNITY_MARKET_ERROR__REVEAL_PERIOD_ENDED]: `Reveal period has already ended`,\n [OPPORTUNITY_MARKET_ERROR__REVEAL_PERIOD_NOT_OVER]: `Reveal period not over`,\n [OPPORTUNITY_MARKET_ERROR__REWARD_ALREADY_CLAIMED]: `Reward already claimed`,\n [OPPORTUNITY_MARKET_ERROR__SELECT_OPTIONS_DEADLINE_PASSED]: `Deadline for selecting winning options has passed`,\n [OPPORTUNITY_MARKET_ERROR__STAKE_BELOW_MINIMUM]: `Stake amount is below the market minimum`,\n [OPPORTUNITY_MARKET_ERROR__STAKE_NOT_STUCK]: `Stake account is not in a stuck or failed state`,\n [OPPORTUNITY_MARKET_ERROR__TALLY_ALREADY_INCREMENTED]: `Tally already incremented for this stake account`,\n [OPPORTUNITY_MARKET_ERROR__TIME_WINDOW_MISMATCH]: `Operation called outside its permitted time window`,\n [OPPORTUNITY_MARKET_ERROR__UNAUTHORIZED]: `Unauthorized`,\n [OPPORTUNITY_MARKET_ERROR__WINNER_ALREADY_SELECTED]: `Market winner already selected`,\n };\n}\n\nexport function getOpportunityMarketErrorMessage(\n code: OpportunityMarketError\n): string {\n if (process.env.NODE_ENV !== 'production') {\n return (\n opportunityMarketErrorMessages as Record<OpportunityMarketError, string>\n )[code];\n }\n\n return 'Error message not available in production bundles.';\n}\n\nexport function isOpportunityMarketError<\n TProgramErrorCode extends OpportunityMarketError,\n>(\n error: unknown,\n transactionMessage: {\n instructions: Record<number, { programAddress: Address }>;\n },\n code?: TProgramErrorCode\n): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &\n Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n return isProgramError<TProgramErrorCode>(\n error,\n transactionMessage,\n OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n code\n );\n}\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 {\n containsBytes,\n fixEncoderSize,\n getBytesEncoder,\n type Address,\n type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n type ParsedAddMarketOptionInstruction,\n type ParsedAddRewardInstruction,\n type ParsedClaimCreatorFeesInstruction,\n type ParsedClaimFeesInstruction,\n type ParsedClaimRewardsInstruction,\n type ParsedCloseOptionAccountInstruction,\n type ParsedCloseStakeAccountInstruction,\n type ParsedCloseStuckStakeAccountInstruction,\n type ParsedCloseUnrevealedStakeAccountInstruction,\n type ParsedCreateMarketInstruction,\n type ParsedEndRevealPeriodInstruction,\n type ParsedFinalizeRevealStakeInstruction,\n type ParsedInitAllowedMintInstruction,\n type ParsedInitPlatformConfigInstruction,\n type ParsedInitStakeAccountInstruction,\n type ParsedOpenMarketInstruction,\n type ParsedResolveMarketInstruction,\n type ParsedRevealStakeCallbackInstruction,\n type ParsedRevealStakeCompDefInstruction,\n type ParsedRevealStakeInstruction,\n type ParsedSetFeeClaimAuthorityInstruction,\n type ParsedSetUpdateAuthorityInstruction,\n type ParsedSetWinningOptionInstruction,\n type ParsedStakeCallbackInstruction,\n type ParsedStakeCompDefInstruction,\n type ParsedStakeInstruction,\n type ParsedUnstakeInstruction,\n type ParsedUpdatePlatformConfigInstruction,\n type ParsedWithdrawRewardInstruction,\n} from '../instructions';\n\nexport const OPPORTUNITY_MARKET_PROGRAM_ADDRESS =\n 'bncqApu6NkUibDwnbfXR5oRPCLiYjwHgVuCdHRTD6rp' as Address<'bncqApu6NkUibDwnbfXR5oRPCLiYjwHgVuCdHRTD6rp'>;\n\nexport enum OpportunityMarketAccount {\n AllowedMint,\n ArciumSignerAccount,\n OpportunityMarket,\n OpportunityMarketOption,\n OpportunityMarketSponsor,\n PlatformConfig,\n StakeAccount,\n}\n\nexport function identifyOpportunityMarketAccount(\n account: { data: ReadonlyUint8Array } | ReadonlyUint8Array\n): OpportunityMarketAccount {\n const data = 'data' in account ? account.data : account;\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([173, 229, 179, 46, 121, 164, 247, 6])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.AllowedMint;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([214, 157, 122, 114, 117, 44, 214, 74])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.ArciumSignerAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([207, 103, 169, 160, 157, 215, 97, 224])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.OpportunityMarket;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([220, 236, 171, 213, 170, 117, 10, 64])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.OpportunityMarketOption;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([207, 139, 192, 91, 37, 190, 2, 192])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.OpportunityMarketSponsor;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([160, 78, 128, 0, 248, 83, 230, 160])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.PlatformConfig;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([80, 158, 67, 124, 50, 189, 192, 255])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.StakeAccount;\n }\n throw new Error(\n 'The provided account could not be identified as a opportunityMarket account.'\n );\n}\n\nexport enum OpportunityMarketInstruction {\n AddMarketOption,\n AddReward,\n ClaimCreatorFees,\n ClaimFees,\n ClaimRewards,\n CloseOptionAccount,\n CloseStakeAccount,\n CloseStuckStakeAccount,\n CloseUnrevealedStakeAccount,\n CreateMarket,\n EndRevealPeriod,\n FinalizeRevealStake,\n InitAllowedMint,\n InitPlatformConfig,\n InitStakeAccount,\n OpenMarket,\n ResolveMarket,\n RevealStake,\n RevealStakeCallback,\n RevealStakeCompDef,\n SetFeeClaimAuthority,\n SetUpdateAuthority,\n SetWinningOption,\n Stake,\n StakeCallback,\n StakeCompDef,\n Unstake,\n UpdatePlatformConfig,\n WithdrawReward,\n}\n\nexport function identifyOpportunityMarketInstruction(\n instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array\n): OpportunityMarketInstruction {\n const data = 'data' in instruction ? instruction.data : instruction;\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([76, 189, 93, 144, 50, 229, 250, 116])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.AddMarketOption;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([4, 114, 188, 164, 149, 249, 198, 237])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.AddReward;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([0, 23, 125, 234, 156, 118, 134, 89])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.ClaimCreatorFees;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([82, 251, 233, 156, 12, 52, 184, 202])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.ClaimFees;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([4, 144, 132, 71, 116, 23, 151, 80])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.ClaimRewards;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([46, 121, 107, 240, 123, 190, 229, 1])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.CloseOptionAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([246, 236, 59, 167, 115, 135, 122, 12])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.CloseStakeAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([41, 239, 108, 203, 185, 230, 165, 181])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.CloseStuckStakeAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([171, 229, 236, 216, 122, 118, 188, 103])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.CloseUnrevealedStakeAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([103, 226, 97, 235, 200, 188, 251, 254])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.CreateMarket;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([144, 81, 42, 65, 127, 60, 134, 92])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.EndRevealPeriod;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([92, 201, 94, 219, 117, 53, 255, 230])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.FinalizeRevealStake;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([215, 70, 3, 5, 42, 229, 151, 10])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.InitAllowedMint;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([101, 52, 47, 49, 156, 16, 32, 118])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.InitPlatformConfig;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([132, 171, 255, 149, 163, 37, 220, 45])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.InitStakeAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([116, 19, 123, 75, 217, 244, 69, 44])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.OpenMarket;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([155, 23, 80, 173, 46, 74, 23, 239])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.ResolveMarket;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([107, 229, 210, 77, 126, 255, 243, 188])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.RevealStake;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([79, 19, 120, 162, 232, 39, 206, 116])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.RevealStakeCallback;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([197, 20, 216, 132, 43, 99, 64, 0])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.RevealStakeCompDef;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([75, 250, 161, 197, 43, 196, 161, 3])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.SetFeeClaimAuthority;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([166, 198, 186, 255, 217, 170, 103, 155])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.SetUpdateAuthority;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([156, 73, 113, 33, 170, 115, 163, 206])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.SetWinningOption;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([206, 176, 202, 18, 200, 209, 179, 108])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.Stake;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([40, 220, 36, 47, 6, 116, 132, 89])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.StakeCallback;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([156, 5, 60, 126, 142, 149, 1, 130])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.StakeCompDef;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([90, 95, 107, 42, 205, 124, 50, 225])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.Unstake;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([195, 60, 76, 129, 146, 45, 67, 143])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.UpdatePlatformConfig;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([191, 187, 176, 137, 9, 25, 187, 244])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.WithdrawReward;\n }\n throw new Error(\n 'The provided instruction could not be identified as a opportunityMarket instruction.'\n );\n}\n\nexport type ParsedOpportunityMarketInstruction<\n TProgram extends string = 'bncqApu6NkUibDwnbfXR5oRPCLiYjwHgVuCdHRTD6rp',\n> =\n | ({\n instructionType: OpportunityMarketInstruction.AddMarketOption;\n } & ParsedAddMarketOptionInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.AddReward;\n } & ParsedAddRewardInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.ClaimCreatorFees;\n } & ParsedClaimCreatorFeesInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.ClaimFees;\n } & ParsedClaimFeesInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.ClaimRewards;\n } & ParsedClaimRewardsInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CloseOptionAccount;\n } & ParsedCloseOptionAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CloseStakeAccount;\n } & ParsedCloseStakeAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CloseStuckStakeAccount;\n } & ParsedCloseStuckStakeAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CloseUnrevealedStakeAccount;\n } & ParsedCloseUnrevealedStakeAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CreateMarket;\n } & ParsedCreateMarketInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.EndRevealPeriod;\n } & ParsedEndRevealPeriodInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.FinalizeRevealStake;\n } & ParsedFinalizeRevealStakeInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.InitAllowedMint;\n } & ParsedInitAllowedMintInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.InitPlatformConfig;\n } & ParsedInitPlatformConfigInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.InitStakeAccount;\n } & ParsedInitStakeAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.OpenMarket;\n } & ParsedOpenMarketInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.ResolveMarket;\n } & ParsedResolveMarketInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.RevealStake;\n } & ParsedRevealStakeInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.RevealStakeCallback;\n } & ParsedRevealStakeCallbackInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.RevealStakeCompDef;\n } & ParsedRevealStakeCompDefInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.SetFeeClaimAuthority;\n } & ParsedSetFeeClaimAuthorityInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.SetUpdateAuthority;\n } & ParsedSetUpdateAuthorityInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.SetWinningOption;\n } & ParsedSetWinningOptionInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.Stake;\n } & ParsedStakeInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.StakeCallback;\n } & ParsedStakeCallbackInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.StakeCompDef;\n } & ParsedStakeCompDefInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.Unstake;\n } & ParsedUnstakeInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.UpdatePlatformConfig;\n } & ParsedUpdatePlatformConfigInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.WithdrawReward;\n } & ParsedWithdrawRewardInstruction<TProgram>);\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const ADD_MARKET_OPTION_DISCRIMINATOR = new Uint8Array([\n 76, 189, 93, 144, 50, 229, 250, 116,\n]);\n\nexport function getAddMarketOptionDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n ADD_MARKET_OPTION_DISCRIMINATOR\n );\n}\n\nexport type AddMarketOptionInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountOption extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? WritableSignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountOption extends string\n ? WritableAccount<TAccountOption>\n : TAccountOption,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type AddMarketOptionInstructionData = {\n discriminator: ReadonlyUint8Array;\n optionId: bigint;\n};\n\nexport type AddMarketOptionInstructionDataArgs = { optionId: number | bigint };\n\nexport function getAddMarketOptionInstructionDataEncoder(): FixedSizeEncoder<AddMarketOptionInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['optionId', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: ADD_MARKET_OPTION_DISCRIMINATOR })\n );\n}\n\nexport function getAddMarketOptionInstructionDataDecoder(): FixedSizeDecoder<AddMarketOptionInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['optionId', getU64Decoder()],\n ]);\n}\n\nexport function getAddMarketOptionInstructionDataCodec(): FixedSizeCodec<\n AddMarketOptionInstructionDataArgs,\n AddMarketOptionInstructionData\n> {\n return combineCodec(\n getAddMarketOptionInstructionDataEncoder(),\n getAddMarketOptionInstructionDataDecoder()\n );\n}\n\nexport type AddMarketOptionAsyncInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountOption extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n option?: Address<TAccountOption>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionId: AddMarketOptionInstructionDataArgs['optionId'];\n};\n\nexport async function getAddMarketOptionInstructionAsync<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountOption extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: AddMarketOptionAsyncInput<\n TAccountSigner,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n AddMarketOptionInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.option.value) {\n accounts.option.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([111, 112, 116, 105, 111, 110])\n ),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU64Encoder().encode(expectSome(args.optionId)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getAddMarketOptionInstructionDataEncoder().encode(\n args as AddMarketOptionInstructionDataArgs\n ),\n programAddress,\n } as AddMarketOptionInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type AddMarketOptionInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountOption extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n option: Address<TAccountOption>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionId: AddMarketOptionInstructionDataArgs['optionId'];\n};\n\nexport function getAddMarketOptionInstruction<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountOption extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: AddMarketOptionInput<\n TAccountSigner,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): AddMarketOptionInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getAddMarketOptionInstructionDataEncoder().encode(\n args as AddMarketOptionInstructionDataArgs\n ),\n programAddress,\n } as AddMarketOptionInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedAddMarketOptionInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n market: TAccountMetas[1];\n option: TAccountMetas[2];\n systemProgram: TAccountMetas[3];\n };\n data: AddMarketOptionInstructionData;\n};\n\nexport function parseAddMarketOptionInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedAddMarketOptionInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 4) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n market: getNextAccount(),\n option: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getAddMarketOptionInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n AccountRole,\n isProgramDerivedAddress,\n isTransactionSigner as kitIsTransactionSigner,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type ProgramDerivedAddress,\n type TransactionSigner,\n upgradeRoleToSigner,\n} from '@solana/kit';\n\n/**\n * Asserts that the given value is not null or undefined.\n * @internal\n */\nexport function expectSome<T>(value: T | null | undefined): T {\n if (value === null || value === undefined) {\n throw new Error('Expected a value but received null or undefined.');\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a PublicKey.\n * @internal\n */\nexport function expectAddress<T extends string = string>(\n value:\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null\n | undefined\n): Address<T> {\n if (!value) {\n throw new Error('Expected a Address.');\n }\n if (typeof value === 'object' && 'address' in value) {\n return value.address;\n }\n if (Array.isArray(value)) {\n return value[0] as Address<T>;\n }\n return value as Address<T>;\n}\n\n/**\n * Asserts that the given value is a PDA.\n * @internal\n */\nexport function expectProgramDerivedAddress<T extends string = string>(\n value:\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null\n | undefined\n): ProgramDerivedAddress<T> {\n if (!value || !Array.isArray(value) || !isProgramDerivedAddress(value)) {\n throw new Error('Expected a ProgramDerivedAddress.');\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a TransactionSigner.\n * @internal\n */\nexport function expectTransactionSigner<T extends string = string>(\n value:\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null\n | undefined\n): TransactionSigner<T> {\n if (!value || !isTransactionSigner(value)) {\n throw new Error('Expected a TransactionSigner.');\n }\n return value;\n}\n\n/**\n * Defines an instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccount<\n T extends string = string,\n U extends\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null =\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null,\n> = {\n isWritable: boolean;\n value: U;\n};\n\n/**\n * Defines an instruction that stores additional bytes on-chain.\n * @internal\n */\nexport type InstructionWithByteDelta = {\n byteDelta: number;\n};\n\n/**\n * Get account metas and signers from resolved accounts.\n * @internal\n */\nexport function getAccountMetaFactory(\n programAddress: Address,\n optionalAccountStrategy: 'omitted' | 'programId'\n) {\n return (\n account: ResolvedAccount\n ): AccountMeta | AccountSignerMeta | undefined => {\n if (!account.value) {\n if (optionalAccountStrategy === 'omitted') return;\n return Object.freeze({\n address: programAddress,\n role: AccountRole.READONLY,\n });\n }\n\n const writableRole = account.isWritable\n ? AccountRole.WRITABLE\n : AccountRole.READONLY;\n return Object.freeze({\n address: expectAddress(account.value),\n role: isTransactionSigner(account.value)\n ? upgradeRoleToSigner(writableRole)\n : writableRole,\n ...(isTransactionSigner(account.value) ? { signer: account.value } : {}),\n });\n };\n}\n\nexport function isTransactionSigner<TAddress extends string = string>(\n value:\n | Address<TAddress>\n | ProgramDerivedAddress<TAddress>\n | TransactionSigner<TAddress>\n): value is TransactionSigner<TAddress> {\n return (\n !!value &&\n typeof value === 'object' &&\n 'address' in value &&\n kitIsTransactionSigner(value)\n );\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const ADD_REWARD_DISCRIMINATOR = new Uint8Array([\n 4, 114, 188, 164, 149, 249, 198, 237,\n]);\n\nexport function getAddRewardDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(ADD_REWARD_DISCRIMINATOR);\n}\n\nexport type AddRewardInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSponsor extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountSponsorAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountSponsorTokenAccount extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSponsor extends string\n ? WritableSignerAccount<TAccountSponsor> &\n AccountSignerMeta<TAccountSponsor>\n : TAccountSponsor,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountSponsorAccount extends string\n ? WritableAccount<TAccountSponsorAccount>\n : TAccountSponsorAccount,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountSponsorTokenAccount extends string\n ? WritableAccount<TAccountSponsorTokenAccount>\n : TAccountSponsorTokenAccount,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type AddRewardInstructionData = {\n discriminator: ReadonlyUint8Array;\n amount: bigint;\n};\n\nexport type AddRewardInstructionDataArgs = { amount: number | bigint };\n\nexport function getAddRewardInstructionDataEncoder(): FixedSizeEncoder<AddRewardInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['amount', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: ADD_REWARD_DISCRIMINATOR })\n );\n}\n\nexport function getAddRewardInstructionDataDecoder(): FixedSizeDecoder<AddRewardInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['amount', getU64Decoder()],\n ]);\n}\n\nexport function getAddRewardInstructionDataCodec(): FixedSizeCodec<\n AddRewardInstructionDataArgs,\n AddRewardInstructionData\n> {\n return combineCodec(\n getAddRewardInstructionDataEncoder(),\n getAddRewardInstructionDataDecoder()\n );\n}\n\nexport type AddRewardAsyncInput<\n TAccountSponsor extends string = string,\n TAccountMarket extends string = string,\n TAccountSponsorAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSponsorTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n sponsor: TransactionSigner<TAccountSponsor>;\n market: Address<TAccountMarket>;\n sponsorAccount?: Address<TAccountSponsorAccount>;\n tokenMint: Address<TAccountTokenMint>;\n sponsorTokenAccount: Address<TAccountSponsorTokenAccount>;\n /** Market-owned ATA holding all program-held tokens for this market. */\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n amount: AddRewardInstructionDataArgs['amount'];\n};\n\nexport async function getAddRewardInstructionAsync<\n TAccountSponsor extends string,\n TAccountMarket extends string,\n TAccountSponsorAccount extends string,\n TAccountTokenMint extends string,\n TAccountSponsorTokenAccount extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: AddRewardAsyncInput<\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n AddRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sponsor: { value: input.sponsor ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n sponsorAccount: { value: input.sponsorAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n sponsorTokenAccount: {\n value: input.sponsorTokenAccount ?? null,\n isWritable: true,\n },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.sponsorAccount.value) {\n accounts.sponsorAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([115, 112, 111, 110, 115, 111, 114])\n ),\n getAddressEncoder().encode(expectAddress(accounts.sponsor.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n ],\n });\n }\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.sponsor),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.sponsorAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.sponsorTokenAccount),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getAddRewardInstructionDataEncoder().encode(\n args as AddRewardInstructionDataArgs\n ),\n programAddress,\n } as AddRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type AddRewardInput<\n TAccountSponsor extends string = string,\n TAccountMarket extends string = string,\n TAccountSponsorAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSponsorTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n sponsor: TransactionSigner<TAccountSponsor>;\n market: Address<TAccountMarket>;\n sponsorAccount: Address<TAccountSponsorAccount>;\n tokenMint: Address<TAccountTokenMint>;\n sponsorTokenAccount: Address<TAccountSponsorTokenAccount>;\n /** Market-owned ATA holding all program-held tokens for this market. */\n marketTokenAta: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n amount: AddRewardInstructionDataArgs['amount'];\n};\n\nexport function getAddRewardInstruction<\n TAccountSponsor extends string,\n TAccountMarket extends string,\n TAccountSponsorAccount extends string,\n TAccountTokenMint extends string,\n TAccountSponsorTokenAccount extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: AddRewardInput<\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): AddRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sponsor: { value: input.sponsor ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n sponsorAccount: { value: input.sponsorAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n sponsorTokenAccount: {\n value: input.sponsorTokenAccount ?? null,\n isWritable: true,\n },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.sponsor),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.sponsorAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.sponsorTokenAccount),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getAddRewardInstructionDataEncoder().encode(\n args as AddRewardInstructionDataArgs\n ),\n programAddress,\n } as AddRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedAddRewardInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n sponsor: TAccountMetas[0];\n market: TAccountMetas[1];\n sponsorAccount: TAccountMetas[2];\n tokenMint: TAccountMetas[3];\n sponsorTokenAccount: TAccountMetas[4];\n /** Market-owned ATA holding all program-held tokens for this market. */\n marketTokenAta: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n systemProgram: TAccountMetas[7];\n };\n data: AddRewardInstructionData;\n};\n\nexport function parseAddRewardInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedAddRewardInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 8) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n sponsor: getNextAccount(),\n market: getNextAccount(),\n sponsorAccount: getNextAccount(),\n tokenMint: getNextAccount(),\n sponsorTokenAccount: getNextAccount(),\n marketTokenAta: getNextAccount(),\n tokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getAddRewardInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CLAIM_CREATOR_FEES_DISCRIMINATOR = new Uint8Array([\n 0, 23, 125, 234, 156, 118, 134, 89,\n]);\n\nexport function getClaimCreatorFeesDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLAIM_CREATOR_FEES_DISCRIMINATOR\n );\n}\n\nexport type ClaimCreatorFeesInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountDestinationTokenAccount extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? ReadonlySignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountDestinationTokenAccount extends string\n ? WritableAccount<TAccountDestinationTokenAccount>\n : TAccountDestinationTokenAccount,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ClaimCreatorFeesInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type ClaimCreatorFeesInstructionDataArgs = {};\n\nexport function getClaimCreatorFeesInstructionDataEncoder(): FixedSizeEncoder<ClaimCreatorFeesInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: CLAIM_CREATOR_FEES_DISCRIMINATOR })\n );\n}\n\nexport function getClaimCreatorFeesInstructionDataDecoder(): FixedSizeDecoder<ClaimCreatorFeesInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getClaimCreatorFeesInstructionDataCodec(): FixedSizeCodec<\n ClaimCreatorFeesInstructionDataArgs,\n ClaimCreatorFeesInstructionData\n> {\n return combineCodec(\n getClaimCreatorFeesInstructionDataEncoder(),\n getClaimCreatorFeesInstructionDataDecoder()\n );\n}\n\nexport type ClaimCreatorFeesAsyncInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport async function getClaimCreatorFeesInstructionAsync<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ClaimCreatorFeesAsyncInput<\n TAccountSigner,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n ClaimCreatorFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getClaimCreatorFeesInstructionDataEncoder().encode({}),\n programAddress,\n } as ClaimCreatorFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type ClaimCreatorFeesInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta: Address<TAccountMarketTokenAta>;\n destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport function getClaimCreatorFeesInstruction<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ClaimCreatorFeesInput<\n TAccountSigner,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): ClaimCreatorFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getClaimCreatorFeesInstructionDataEncoder().encode({}),\n programAddress,\n } as ClaimCreatorFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type ParsedClaimCreatorFeesInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n market: TAccountMetas[1];\n tokenMint: TAccountMetas[2];\n marketTokenAta: TAccountMetas[3];\n destinationTokenAccount: TAccountMetas[4];\n tokenProgram: TAccountMetas[5];\n };\n data: ClaimCreatorFeesInstructionData;\n};\n\nexport function parseClaimCreatorFeesInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedClaimCreatorFeesInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 6) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n market: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n destinationTokenAccount: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getClaimCreatorFeesInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CLAIM_FEES_DISCRIMINATOR = new Uint8Array([\n 82, 251, 233, 156, 12, 52, 184, 202,\n]);\n\nexport function getClaimFeesDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(CLAIM_FEES_DISCRIMINATOR);\n}\n\nexport type ClaimFeesInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountPlatformConfig extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountDestinationTokenAccount extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? ReadonlySignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountPlatformConfig extends string\n ? ReadonlyAccount<TAccountPlatformConfig>\n : TAccountPlatformConfig,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountDestinationTokenAccount extends string\n ? WritableAccount<TAccountDestinationTokenAccount>\n : TAccountDestinationTokenAccount,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ClaimFeesInstructionData = { discriminator: ReadonlyUint8Array };\n\nexport type ClaimFeesInstructionDataArgs = {};\n\nexport function getClaimFeesInstructionDataEncoder(): FixedSizeEncoder<ClaimFeesInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: CLAIM_FEES_DISCRIMINATOR })\n );\n}\n\nexport function getClaimFeesInstructionDataDecoder(): FixedSizeDecoder<ClaimFeesInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getClaimFeesInstructionDataCodec(): FixedSizeCodec<\n ClaimFeesInstructionDataArgs,\n ClaimFeesInstructionData\n> {\n return combineCodec(\n getClaimFeesInstructionDataEncoder(),\n getClaimFeesInstructionDataDecoder()\n );\n}\n\nexport type ClaimFeesAsyncInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n platformConfig: Address<TAccountPlatformConfig>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport async function getClaimFeesInstructionAsync<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountPlatformConfig extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ClaimFeesAsyncInput<\n TAccountSigner,\n TAccountMarket,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n ClaimFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getClaimFeesInstructionDataEncoder().encode({}),\n programAddress,\n } as ClaimFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type ClaimFeesInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n platformConfig: Address<TAccountPlatformConfig>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta: Address<TAccountMarketTokenAta>;\n destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport function getClaimFeesInstruction<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountPlatformConfig extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ClaimFeesInput<\n TAccountSigner,\n TAccountMarket,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): ClaimFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getClaimFeesInstructionDataEncoder().encode({}),\n programAddress,\n } as ClaimFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountDestinationTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type ParsedClaimFeesInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n market: TAccountMetas[1];\n platformConfig: TAccountMetas[2];\n tokenMint: TAccountMetas[3];\n marketTokenAta: TAccountMetas[4];\n destinationTokenAccount: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n };\n data: ClaimFeesInstructionData;\n};\n\nexport function parseClaimFeesInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedClaimFeesInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n market: getNextAccount(),\n platformConfig: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n destinationTokenAccount: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getClaimFeesInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CLAIM_REWARDS_DISCRIMINATOR = new Uint8Array([\n 4, 144, 132, 71, 116, 23, 151, 80,\n]);\n\nexport function getClaimRewardsDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLAIM_REWARDS_DISCRIMINATOR\n );\n}\n\nexport type ClaimRewardsInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountOwner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountOption extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountOwnerTokenAccount extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountOwner extends string\n ? WritableSignerAccount<TAccountOwner> &\n AccountSignerMeta<TAccountOwner>\n : TAccountOwner,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountOption extends string\n ? WritableAccount<TAccountOption>\n : TAccountOption,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountOwnerTokenAccount extends string\n ? WritableAccount<TAccountOwnerTokenAccount>\n : TAccountOwnerTokenAccount,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ClaimRewardsInstructionData = { discriminator: ReadonlyUint8Array };\n\nexport type ClaimRewardsInstructionDataArgs = {};\n\nexport function getClaimRewardsInstructionDataEncoder(): FixedSizeEncoder<ClaimRewardsInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: CLAIM_REWARDS_DISCRIMINATOR })\n );\n}\n\nexport function getClaimRewardsInstructionDataDecoder(): FixedSizeDecoder<ClaimRewardsInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getClaimRewardsInstructionDataCodec(): FixedSizeCodec<\n ClaimRewardsInstructionDataArgs,\n ClaimRewardsInstructionData\n> {\n return combineCodec(\n getClaimRewardsInstructionDataEncoder(),\n getClaimRewardsInstructionDataDecoder()\n );\n}\n\nexport type ClaimRewardsAsyncInput<\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountOption extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountOwnerTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n owner: TransactionSigner<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n option: Address<TAccountOption>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n ownerTokenAccount: Address<TAccountOwnerTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport async function getClaimRewardsInstructionAsync<\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountOption extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountOwnerTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ClaimRewardsAsyncInput<\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n ClaimRewardsInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n owner: { value: input.owner ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n ownerTokenAccount: {\n value: input.ownerTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.ownerTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getClaimRewardsInstructionDataEncoder().encode({}),\n programAddress,\n } as ClaimRewardsInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type ClaimRewardsInput<\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountOption extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountOwnerTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n owner: TransactionSigner<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n option: Address<TAccountOption>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta: Address<TAccountMarketTokenAta>;\n ownerTokenAccount: Address<TAccountOwnerTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport function getClaimRewardsInstruction<\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountOption extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountOwnerTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ClaimRewardsInput<\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): ClaimRewardsInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n owner: { value: input.owner ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n ownerTokenAccount: {\n value: input.ownerTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.ownerTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getClaimRewardsInstructionDataEncoder().encode({}),\n programAddress,\n } as ClaimRewardsInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type ParsedClaimRewardsInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n owner: TAccountMetas[0];\n market: TAccountMetas[1];\n stakeAccount: TAccountMetas[2];\n option: TAccountMetas[3];\n tokenMint: TAccountMetas[4];\n marketTokenAta: TAccountMetas[5];\n ownerTokenAccount: TAccountMetas[6];\n tokenProgram: TAccountMetas[7];\n };\n data: ClaimRewardsInstructionData;\n};\n\nexport function parseClaimRewardsInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedClaimRewardsInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 8) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n owner: getNextAccount(),\n market: getNextAccount(),\n stakeAccount: getNextAccount(),\n option: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n ownerTokenAccount: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getClaimRewardsInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CLOSE_OPTION_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 46, 121, 107, 240, 123, 190, 229, 1,\n]);\n\nexport function getCloseOptionAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLOSE_OPTION_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type CloseOptionAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountCreator extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountOption extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? WritableSignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountCreator extends string\n ? WritableAccount<TAccountCreator>\n : TAccountCreator,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountOption extends string\n ? WritableAccount<TAccountOption>\n : TAccountOption,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CloseOptionAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n optionId: bigint;\n};\n\nexport type CloseOptionAccountInstructionDataArgs = {\n optionId: number | bigint;\n};\n\nexport function getCloseOptionAccountInstructionDataEncoder(): FixedSizeEncoder<CloseOptionAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['optionId', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: CLOSE_OPTION_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getCloseOptionAccountInstructionDataDecoder(): FixedSizeDecoder<CloseOptionAccountInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['optionId', getU64Decoder()],\n ]);\n}\n\nexport function getCloseOptionAccountInstructionDataCodec(): FixedSizeCodec<\n CloseOptionAccountInstructionDataArgs,\n CloseOptionAccountInstructionData\n> {\n return combineCodec(\n getCloseOptionAccountInstructionDataEncoder(),\n getCloseOptionAccountInstructionDataDecoder()\n );\n}\n\nexport type CloseOptionAccountAsyncInput<\n TAccountSigner extends string = string,\n TAccountCreator extends string = string,\n TAccountMarket extends string = string,\n TAccountOption extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n creator: Address<TAccountCreator>;\n market: Address<TAccountMarket>;\n option?: Address<TAccountOption>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionId: CloseOptionAccountInstructionDataArgs['optionId'];\n};\n\nexport async function getCloseOptionAccountInstructionAsync<\n TAccountSigner extends string,\n TAccountCreator extends string,\n TAccountMarket extends string,\n TAccountOption extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseOptionAccountAsyncInput<\n TAccountSigner,\n TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CloseOptionAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n creator: { value: input.creator ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.option.value) {\n accounts.option.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([111, 112, 116, 105, 111, 110])\n ),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU64Encoder().encode(expectSome(args.optionId)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.creator),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCloseOptionAccountInstructionDataEncoder().encode(\n args as CloseOptionAccountInstructionDataArgs\n ),\n programAddress,\n } as CloseOptionAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type CloseOptionAccountInput<\n TAccountSigner extends string = string,\n TAccountCreator extends string = string,\n TAccountMarket extends string = string,\n TAccountOption extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n creator: Address<TAccountCreator>;\n market: Address<TAccountMarket>;\n option: Address<TAccountOption>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionId: CloseOptionAccountInstructionDataArgs['optionId'];\n};\n\nexport function getCloseOptionAccountInstruction<\n TAccountSigner extends string,\n TAccountCreator extends string,\n TAccountMarket extends string,\n TAccountOption extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseOptionAccountInput<\n TAccountSigner,\n TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CloseOptionAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n creator: { value: input.creator ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.creator),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCloseOptionAccountInstructionDataEncoder().encode(\n args as CloseOptionAccountInstructionDataArgs\n ),\n programAddress,\n } as CloseOptionAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCloseOptionAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n creator: TAccountMetas[1];\n market: TAccountMetas[2];\n option: TAccountMetas[3];\n systemProgram: TAccountMetas[4];\n };\n data: CloseOptionAccountInstructionData;\n};\n\nexport function parseCloseOptionAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedCloseOptionAccountInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n creator: getNextAccount(),\n market: getNextAccount(),\n option: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCloseOptionAccountInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CLOSE_STAKE_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 246, 236, 59, 167, 115, 135, 122, 12,\n]);\n\nexport function getCloseStakeAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLOSE_STAKE_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type CloseStakeAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountOwner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountOption extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountOwnerTokenAccount extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountOwner extends string\n ? WritableSignerAccount<TAccountOwner> &\n AccountSignerMeta<TAccountOwner>\n : TAccountOwner,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountOption extends string\n ? WritableAccount<TAccountOption>\n : TAccountOption,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountOwnerTokenAccount extends string\n ? WritableAccount<TAccountOwnerTokenAccount>\n : TAccountOwnerTokenAccount,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CloseStakeAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type CloseStakeAccountInstructionDataArgs = {};\n\nexport function getCloseStakeAccountInstructionDataEncoder(): FixedSizeEncoder<CloseStakeAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: CLOSE_STAKE_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getCloseStakeAccountInstructionDataDecoder(): FixedSizeDecoder<CloseStakeAccountInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getCloseStakeAccountInstructionDataCodec(): FixedSizeCodec<\n CloseStakeAccountInstructionDataArgs,\n CloseStakeAccountInstructionData\n> {\n return combineCodec(\n getCloseStakeAccountInstructionDataEncoder(),\n getCloseStakeAccountInstructionDataDecoder()\n );\n}\n\nexport type CloseStakeAccountAsyncInput<\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountOption extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountOwnerTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n owner: TransactionSigner<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n option: Address<TAccountOption>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n ownerTokenAccount: Address<TAccountOwnerTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport async function getCloseStakeAccountInstructionAsync<\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountOption extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountOwnerTokenAccount extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseStakeAccountAsyncInput<\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CloseStakeAccountInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n owner: { value: input.owner ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n ownerTokenAccount: {\n value: input.ownerTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.ownerTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCloseStakeAccountInstructionDataEncoder().encode({}),\n programAddress,\n } as CloseStakeAccountInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type CloseStakeAccountInput<\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountOption extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountOwnerTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n owner: TransactionSigner<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n option: Address<TAccountOption>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta: Address<TAccountMarketTokenAta>;\n ownerTokenAccount: Address<TAccountOwnerTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport function getCloseStakeAccountInstruction<\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountOption extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountOwnerTokenAccount extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseStakeAccountInput<\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CloseStakeAccountInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n owner: { value: input.owner ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n ownerTokenAccount: {\n value: input.ownerTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.ownerTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCloseStakeAccountInstructionDataEncoder().encode({}),\n programAddress,\n } as CloseStakeAccountInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCloseStakeAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n owner: TAccountMetas[0];\n market: TAccountMetas[1];\n stakeAccount: TAccountMetas[2];\n option: TAccountMetas[3];\n tokenMint: TAccountMetas[4];\n marketTokenAta: TAccountMetas[5];\n ownerTokenAccount: TAccountMetas[6];\n tokenProgram: TAccountMetas[7];\n systemProgram: TAccountMetas[8];\n };\n data: CloseStakeAccountInstructionData;\n};\n\nexport function parseCloseStakeAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedCloseStakeAccountInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 9) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n owner: getNextAccount(),\n market: getNextAccount(),\n stakeAccount: getNextAccount(),\n option: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n ownerTokenAccount: getNextAccount(),\n tokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCloseStakeAccountInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CLOSE_STUCK_STAKE_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 41, 239, 108, 203, 185, 230, 165, 181,\n]);\n\nexport function getCloseStuckStakeAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLOSE_STUCK_STAKE_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type CloseStuckStakeAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountSignerTokenAccount extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? WritableSignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountMarket extends string\n ? ReadonlyAccount<TAccountMarket>\n : TAccountMarket,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountSignerTokenAccount extends string\n ? WritableAccount<TAccountSignerTokenAccount>\n : TAccountSignerTokenAccount,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CloseStuckStakeAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n stakeAccountId: number;\n};\n\nexport type CloseStuckStakeAccountInstructionDataArgs = {\n stakeAccountId: number;\n};\n\nexport function getCloseStuckStakeAccountInstructionDataEncoder(): FixedSizeEncoder<CloseStuckStakeAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['stakeAccountId', getU32Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: CLOSE_STUCK_STAKE_ACCOUNT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getCloseStuckStakeAccountInstructionDataDecoder(): FixedSizeDecoder<CloseStuckStakeAccountInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['stakeAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getCloseStuckStakeAccountInstructionDataCodec(): FixedSizeCodec<\n CloseStuckStakeAccountInstructionDataArgs,\n CloseStuckStakeAccountInstructionData\n> {\n return combineCodec(\n getCloseStuckStakeAccountInstructionDataEncoder(),\n getCloseStuckStakeAccountInstructionDataDecoder()\n );\n}\n\nexport type CloseStuckStakeAccountAsyncInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n stakeAccount?: Address<TAccountStakeAccount>;\n tokenMint: Address<TAccountTokenMint>;\n /** Signer's token account to receive refund */\n signerTokenAccount: Address<TAccountSignerTokenAccount>;\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n stakeAccountId: CloseStuckStakeAccountInstructionDataArgs['stakeAccountId'];\n};\n\nexport async function getCloseStuckStakeAccountInstructionAsync<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenMint extends string,\n TAccountSignerTokenAccount extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseStuckStakeAccountAsyncInput<\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CloseStuckStakeAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: false },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n signerTokenAccount: {\n value: input.signerTokenAccount ?? null,\n isWritable: true,\n },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.stakeAccount.value) {\n accounts.stakeAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 116, 97, 107, 101, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.signer.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU32Encoder().encode(expectSome(args.stakeAccountId)),\n ],\n });\n }\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.signerTokenAccount),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCloseStuckStakeAccountInstructionDataEncoder().encode(\n args as CloseStuckStakeAccountInstructionDataArgs\n ),\n programAddress,\n } as CloseStuckStakeAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type CloseStuckStakeAccountInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n tokenMint: Address<TAccountTokenMint>;\n /** Signer's token account to receive refund */\n signerTokenAccount: Address<TAccountSignerTokenAccount>;\n marketTokenAta: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n stakeAccountId: CloseStuckStakeAccountInstructionDataArgs['stakeAccountId'];\n};\n\nexport function getCloseStuckStakeAccountInstruction<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenMint extends string,\n TAccountSignerTokenAccount extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseStuckStakeAccountInput<\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CloseStuckStakeAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: false },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n signerTokenAccount: {\n value: input.signerTokenAccount ?? null,\n isWritable: true,\n },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.signerTokenAccount),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCloseStuckStakeAccountInstructionDataEncoder().encode(\n args as CloseStuckStakeAccountInstructionDataArgs\n ),\n programAddress,\n } as CloseStuckStakeAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCloseStuckStakeAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n market: TAccountMetas[1];\n stakeAccount: TAccountMetas[2];\n tokenMint: TAccountMetas[3];\n /** Signer's token account to receive refund */\n signerTokenAccount: TAccountMetas[4];\n marketTokenAta: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n systemProgram: TAccountMetas[7];\n };\n data: CloseStuckStakeAccountInstructionData;\n};\n\nexport function parseCloseStuckStakeAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedCloseStuckStakeAccountInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 8) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n market: getNextAccount(),\n stakeAccount: getNextAccount(),\n tokenMint: getNextAccount(),\n signerTokenAccount: getNextAccount(),\n marketTokenAta: getNextAccount(),\n tokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCloseStuckStakeAccountInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CLOSE_UNREVEALED_STAKE_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 171, 229, 236, 216, 122, 118, 188, 103,\n]);\n\nexport function getCloseUnrevealedStakeAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLOSE_UNREVEALED_STAKE_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type CloseUnrevealedStakeAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountOwner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountOwnerTokenAccount extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountOwner extends string\n ? WritableSignerAccount<TAccountOwner> &\n AccountSignerMeta<TAccountOwner>\n : TAccountOwner,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountOwnerTokenAccount extends string\n ? WritableAccount<TAccountOwnerTokenAccount>\n : TAccountOwnerTokenAccount,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CloseUnrevealedStakeAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type CloseUnrevealedStakeAccountInstructionDataArgs = {};\n\nexport function getCloseUnrevealedStakeAccountInstructionDataEncoder(): FixedSizeEncoder<CloseUnrevealedStakeAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({\n ...value,\n discriminator: CLOSE_UNREVEALED_STAKE_ACCOUNT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getCloseUnrevealedStakeAccountInstructionDataDecoder(): FixedSizeDecoder<CloseUnrevealedStakeAccountInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getCloseUnrevealedStakeAccountInstructionDataCodec(): FixedSizeCodec<\n CloseUnrevealedStakeAccountInstructionDataArgs,\n CloseUnrevealedStakeAccountInstructionData\n> {\n return combineCodec(\n getCloseUnrevealedStakeAccountInstructionDataEncoder(),\n getCloseUnrevealedStakeAccountInstructionDataDecoder()\n );\n}\n\nexport type CloseUnrevealedStakeAccountAsyncInput<\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountOwnerTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n owner: TransactionSigner<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n ownerTokenAccount: Address<TAccountOwnerTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport async function getCloseUnrevealedStakeAccountInstructionAsync<\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountOwnerTokenAccount extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseUnrevealedStakeAccountAsyncInput<\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CloseUnrevealedStakeAccountInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n owner: { value: input.owner ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n ownerTokenAccount: {\n value: input.ownerTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.ownerTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCloseUnrevealedStakeAccountInstructionDataEncoder().encode({}),\n programAddress,\n } as CloseUnrevealedStakeAccountInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type CloseUnrevealedStakeAccountInput<\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountOwnerTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n owner: TransactionSigner<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta: Address<TAccountMarketTokenAta>;\n ownerTokenAccount: Address<TAccountOwnerTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport function getCloseUnrevealedStakeAccountInstruction<\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountOwnerTokenAccount extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseUnrevealedStakeAccountInput<\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CloseUnrevealedStakeAccountInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n owner: { value: input.owner ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n ownerTokenAccount: {\n value: input.ownerTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.ownerTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCloseUnrevealedStakeAccountInstructionDataEncoder().encode({}),\n programAddress,\n } as CloseUnrevealedStakeAccountInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCloseUnrevealedStakeAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n owner: TAccountMetas[0];\n market: TAccountMetas[1];\n stakeAccount: TAccountMetas[2];\n tokenMint: TAccountMetas[3];\n marketTokenAta: TAccountMetas[4];\n ownerTokenAccount: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n systemProgram: TAccountMetas[7];\n };\n data: CloseUnrevealedStakeAccountInstructionData;\n};\n\nexport function parseCloseUnrevealedStakeAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedCloseUnrevealedStakeAccountInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 8) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n owner: getNextAccount(),\n market: getNextAccount(),\n stakeAccount: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n ownerTokenAccount: getNextAccount(),\n tokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCloseUnrevealedStakeAccountInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CREATE_MARKET_DISCRIMINATOR = new Uint8Array([\n 103, 226, 97, 235, 200, 188, 251, 254,\n]);\n\nexport function getCreateMarketDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CREATE_MARKET_DISCRIMINATOR\n );\n}\n\nexport type CreateMarketInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountCreator extends string | AccountMeta<string> = string,\n TAccountPlatformConfig extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountAllowedMint extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TAccountAssociatedTokenProgram extends string | AccountMeta<string> =\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountCreator extends string\n ? WritableSignerAccount<TAccountCreator> &\n AccountSignerMeta<TAccountCreator>\n : TAccountCreator,\n TAccountPlatformConfig extends string\n ? ReadonlyAccount<TAccountPlatformConfig>\n : TAccountPlatformConfig,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountAllowedMint extends string\n ? ReadonlyAccount<TAccountAllowedMint>\n : TAccountAllowedMint,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountAssociatedTokenProgram extends string\n ? ReadonlyAccount<TAccountAssociatedTokenProgram>\n : TAccountAssociatedTokenProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateMarketInstructionData = {\n discriminator: ReadonlyUint8Array;\n marketIndex: bigint;\n marketAuthority: Address;\n authorizedReaderPubkey: Array<number>;\n earlinessCutoffSeconds: bigint;\n earlinessMultiplier: number;\n minStakeAmount: bigint;\n creatorFeeClaimer: Address;\n};\n\nexport type CreateMarketInstructionDataArgs = {\n marketIndex: number | bigint;\n marketAuthority: Address;\n authorizedReaderPubkey: Array<number>;\n earlinessCutoffSeconds: number | bigint;\n earlinessMultiplier: number;\n minStakeAmount: number | bigint;\n creatorFeeClaimer: Address;\n};\n\nexport function getCreateMarketInstructionDataEncoder(): FixedSizeEncoder<CreateMarketInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['marketIndex', getU64Encoder()],\n ['marketAuthority', getAddressEncoder()],\n ['authorizedReaderPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['earlinessCutoffSeconds', getU64Encoder()],\n ['earlinessMultiplier', getU16Encoder()],\n ['minStakeAmount', getU64Encoder()],\n ['creatorFeeClaimer', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: CREATE_MARKET_DISCRIMINATOR })\n );\n}\n\nexport function getCreateMarketInstructionDataDecoder(): FixedSizeDecoder<CreateMarketInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['marketIndex', getU64Decoder()],\n ['marketAuthority', getAddressDecoder()],\n ['authorizedReaderPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['earlinessCutoffSeconds', getU64Decoder()],\n ['earlinessMultiplier', getU16Decoder()],\n ['minStakeAmount', getU64Decoder()],\n ['creatorFeeClaimer', getAddressDecoder()],\n ]);\n}\n\nexport function getCreateMarketInstructionDataCodec(): FixedSizeCodec<\n CreateMarketInstructionDataArgs,\n CreateMarketInstructionData\n> {\n return combineCodec(\n getCreateMarketInstructionDataEncoder(),\n getCreateMarketInstructionDataDecoder()\n );\n}\n\nexport type CreateMarketAsyncInput<\n TAccountCreator extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarket extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountAllowedMint extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n creator: TransactionSigner<TAccountCreator>;\n platformConfig: Address<TAccountPlatformConfig>;\n tokenMint: Address<TAccountTokenMint>;\n market?: Address<TAccountMarket>;\n /** This ATA holds all of the market's program-held tokens (stakes, rewards, fees). */\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n allowedMint?: Address<TAccountAllowedMint>;\n tokenProgram: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n marketIndex: CreateMarketInstructionDataArgs['marketIndex'];\n marketAuthority: CreateMarketInstructionDataArgs['marketAuthority'];\n authorizedReaderPubkey: CreateMarketInstructionDataArgs['authorizedReaderPubkey'];\n earlinessCutoffSeconds: CreateMarketInstructionDataArgs['earlinessCutoffSeconds'];\n earlinessMultiplier: CreateMarketInstructionDataArgs['earlinessMultiplier'];\n minStakeAmount: CreateMarketInstructionDataArgs['minStakeAmount'];\n creatorFeeClaimer: CreateMarketInstructionDataArgs['creatorFeeClaimer'];\n};\n\nexport async function getCreateMarketInstructionAsync<\n TAccountCreator extends string,\n TAccountPlatformConfig extends string,\n TAccountTokenMint extends string,\n TAccountMarket extends string,\n TAccountMarketTokenAta extends string,\n TAccountAllowedMint extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CreateMarketAsyncInput<\n TAccountCreator,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountAllowedMint,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CreateMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountAllowedMint,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n creator: { value: input.creator ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n allowedMint: { value: input.allowedMint ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n associatedTokenProgram: {\n value: input.associatedTokenProgram ?? null,\n isWritable: false,\n },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.market.value) {\n accounts.market.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 111, 112, 112, 111, 114, 116, 117, 110, 105, 116, 121, 95, 109, 97,\n 114, 107, 101, 116,\n ])\n ),\n getAddressEncoder().encode(\n expectAddress(accounts.platformConfig.value)\n ),\n getAddressEncoder().encode(expectAddress(accounts.creator.value)),\n getU64Encoder().encode(expectSome(args.marketIndex)),\n ],\n });\n }\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.allowedMint.value) {\n accounts.allowedMint.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 108, 108, 111, 119, 101, 100, 95, 109, 105, 110, 116,\n ])\n ),\n getAddressEncoder().encode(\n expectAddress(accounts.platformConfig.value)\n ),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.associatedTokenProgram.value) {\n accounts.associatedTokenProgram.value =\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.creator),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.allowedMint),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCreateMarketInstructionDataEncoder().encode(\n args as CreateMarketInstructionDataArgs\n ),\n programAddress,\n } as CreateMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountAllowedMint,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type CreateMarketInput<\n TAccountCreator extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarket extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountAllowedMint extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n creator: TransactionSigner<TAccountCreator>;\n platformConfig: Address<TAccountPlatformConfig>;\n tokenMint: Address<TAccountTokenMint>;\n market: Address<TAccountMarket>;\n /** This ATA holds all of the market's program-held tokens (stakes, rewards, fees). */\n marketTokenAta: Address<TAccountMarketTokenAta>;\n allowedMint: Address<TAccountAllowedMint>;\n tokenProgram: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n marketIndex: CreateMarketInstructionDataArgs['marketIndex'];\n marketAuthority: CreateMarketInstructionDataArgs['marketAuthority'];\n authorizedReaderPubkey: CreateMarketInstructionDataArgs['authorizedReaderPubkey'];\n earlinessCutoffSeconds: CreateMarketInstructionDataArgs['earlinessCutoffSeconds'];\n earlinessMultiplier: CreateMarketInstructionDataArgs['earlinessMultiplier'];\n minStakeAmount: CreateMarketInstructionDataArgs['minStakeAmount'];\n creatorFeeClaimer: CreateMarketInstructionDataArgs['creatorFeeClaimer'];\n};\n\nexport function getCreateMarketInstruction<\n TAccountCreator extends string,\n TAccountPlatformConfig extends string,\n TAccountTokenMint extends string,\n TAccountMarket extends string,\n TAccountMarketTokenAta extends string,\n TAccountAllowedMint extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CreateMarketInput<\n TAccountCreator,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountAllowedMint,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CreateMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountAllowedMint,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n creator: { value: input.creator ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n allowedMint: { value: input.allowedMint ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n associatedTokenProgram: {\n value: input.associatedTokenProgram ?? null,\n isWritable: false,\n },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.associatedTokenProgram.value) {\n accounts.associatedTokenProgram.value =\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.creator),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.allowedMint),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCreateMarketInstructionDataEncoder().encode(\n args as CreateMarketInstructionDataArgs\n ),\n programAddress,\n } as CreateMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountAllowedMint,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCreateMarketInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n creator: TAccountMetas[0];\n platformConfig: TAccountMetas[1];\n tokenMint: TAccountMetas[2];\n market: TAccountMetas[3];\n /** This ATA holds all of the market's program-held tokens (stakes, rewards, fees). */\n marketTokenAta: TAccountMetas[4];\n allowedMint: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n associatedTokenProgram: TAccountMetas[7];\n systemProgram: TAccountMetas[8];\n };\n data: CreateMarketInstructionData;\n};\n\nexport function parseCreateMarketInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedCreateMarketInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 9) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n creator: getNextAccount(),\n platformConfig: getNextAccount(),\n tokenMint: getNextAccount(),\n market: getNextAccount(),\n marketTokenAta: getNextAccount(),\n allowedMint: getNextAccount(),\n tokenProgram: getNextAccount(),\n associatedTokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCreateMarketInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const END_REVEAL_PERIOD_DISCRIMINATOR = new Uint8Array([\n 144, 81, 42, 65, 127, 60, 134, 92,\n]);\n\nexport function getEndRevealPeriodDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n END_REVEAL_PERIOD_DISCRIMINATOR\n );\n}\n\nexport type EndRevealPeriodInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountPlatformConfig extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? ReadonlySignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountPlatformConfig extends string\n ? ReadonlyAccount<TAccountPlatformConfig>\n : TAccountPlatformConfig,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type EndRevealPeriodInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type EndRevealPeriodInstructionDataArgs = {};\n\nexport function getEndRevealPeriodInstructionDataEncoder(): FixedSizeEncoder<EndRevealPeriodInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: END_REVEAL_PERIOD_DISCRIMINATOR })\n );\n}\n\nexport function getEndRevealPeriodInstructionDataDecoder(): FixedSizeDecoder<EndRevealPeriodInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getEndRevealPeriodInstructionDataCodec(): FixedSizeCodec<\n EndRevealPeriodInstructionDataArgs,\n EndRevealPeriodInstructionData\n> {\n return combineCodec(\n getEndRevealPeriodInstructionDataEncoder(),\n getEndRevealPeriodInstructionDataDecoder()\n );\n}\n\nexport type EndRevealPeriodInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountPlatformConfig extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n platformConfig: Address<TAccountPlatformConfig>;\n};\n\nexport function getEndRevealPeriodInstruction<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountPlatformConfig extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: EndRevealPeriodInput<\n TAccountSigner,\n TAccountMarket,\n TAccountPlatformConfig\n >,\n config?: { programAddress?: TProgramAddress }\n): EndRevealPeriodInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountPlatformConfig\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.platformConfig),\n ],\n data: getEndRevealPeriodInstructionDataEncoder().encode({}),\n programAddress,\n } as EndRevealPeriodInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountPlatformConfig\n >);\n}\n\nexport type ParsedEndRevealPeriodInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n market: TAccountMetas[1];\n platformConfig: TAccountMetas[2];\n };\n data: EndRevealPeriodInstructionData;\n};\n\nexport function parseEndRevealPeriodInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedEndRevealPeriodInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n market: getNextAccount(),\n platformConfig: getNextAccount(),\n },\n data: getEndRevealPeriodInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const FINALIZE_REVEAL_STAKE_DISCRIMINATOR = new Uint8Array([\n 92, 201, 94, 219, 117, 53, 255, 230,\n]);\n\nexport function getFinalizeRevealStakeDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n FINALIZE_REVEAL_STAKE_DISCRIMINATOR\n );\n}\n\nexport type FinalizeRevealStakeInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountOwner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountOption extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? WritableSignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountOwner extends string\n ? ReadonlyAccount<TAccountOwner>\n : TAccountOwner,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountOption extends string\n ? WritableAccount<TAccountOption>\n : TAccountOption,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type FinalizeRevealStakeInstructionData = {\n discriminator: ReadonlyUint8Array;\n optionId: bigint;\n stakeAccountId: number;\n};\n\nexport type FinalizeRevealStakeInstructionDataArgs = {\n optionId: number | bigint;\n stakeAccountId: number;\n};\n\nexport function getFinalizeRevealStakeInstructionDataEncoder(): FixedSizeEncoder<FinalizeRevealStakeInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['optionId', getU64Encoder()],\n ['stakeAccountId', getU32Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: FINALIZE_REVEAL_STAKE_DISCRIMINATOR,\n })\n );\n}\n\nexport function getFinalizeRevealStakeInstructionDataDecoder(): FixedSizeDecoder<FinalizeRevealStakeInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['optionId', getU64Decoder()],\n ['stakeAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getFinalizeRevealStakeInstructionDataCodec(): FixedSizeCodec<\n FinalizeRevealStakeInstructionDataArgs,\n FinalizeRevealStakeInstructionData\n> {\n return combineCodec(\n getFinalizeRevealStakeInstructionDataEncoder(),\n getFinalizeRevealStakeInstructionDataDecoder()\n );\n}\n\nexport type FinalizeRevealStakeAsyncInput<\n TAccountSigner extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountOption extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n owner: Address<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount?: Address<TAccountStakeAccount>;\n option?: Address<TAccountOption>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionId: FinalizeRevealStakeInstructionDataArgs['optionId'];\n stakeAccountId: FinalizeRevealStakeInstructionDataArgs['stakeAccountId'];\n};\n\nexport async function getFinalizeRevealStakeInstructionAsync<\n TAccountSigner extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountOption extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: FinalizeRevealStakeAsyncInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n FinalizeRevealStakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.stakeAccount.value) {\n accounts.stakeAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 116, 97, 107, 101, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.owner.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU32Encoder().encode(expectSome(args.stakeAccountId)),\n ],\n });\n }\n if (!accounts.option.value) {\n accounts.option.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([111, 112, 116, 105, 111, 110])\n ),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU64Encoder().encode(expectSome(args.optionId)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getFinalizeRevealStakeInstructionDataEncoder().encode(\n args as FinalizeRevealStakeInstructionDataArgs\n ),\n programAddress,\n } as FinalizeRevealStakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type FinalizeRevealStakeInput<\n TAccountSigner extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountOption extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n owner: Address<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n option: Address<TAccountOption>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionId: FinalizeRevealStakeInstructionDataArgs['optionId'];\n stakeAccountId: FinalizeRevealStakeInstructionDataArgs['stakeAccountId'];\n};\n\nexport function getFinalizeRevealStakeInstruction<\n TAccountSigner extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountOption extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: FinalizeRevealStakeInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): FinalizeRevealStakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getFinalizeRevealStakeInstructionDataEncoder().encode(\n args as FinalizeRevealStakeInstructionDataArgs\n ),\n programAddress,\n } as FinalizeRevealStakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedFinalizeRevealStakeInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n owner: TAccountMetas[1];\n market: TAccountMetas[2];\n stakeAccount: TAccountMetas[3];\n option: TAccountMetas[4];\n systemProgram: TAccountMetas[5];\n };\n data: FinalizeRevealStakeInstructionData;\n};\n\nexport function parseFinalizeRevealStakeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedFinalizeRevealStakeInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 6) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n owner: getNextAccount(),\n market: getNextAccount(),\n stakeAccount: getNextAccount(),\n option: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getFinalizeRevealStakeInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const INIT_ALLOWED_MINT_DISCRIMINATOR = new Uint8Array([\n 215, 70, 3, 5, 42, 229, 151, 10,\n]);\n\nexport function getInitAllowedMintDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INIT_ALLOWED_MINT_DISCRIMINATOR\n );\n}\n\nexport type InitAllowedMintInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountUpdateAuthority extends string | AccountMeta<string> = string,\n TAccountPlatformConfig extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountAllowedMint extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountUpdateAuthority extends string\n ? WritableSignerAccount<TAccountUpdateAuthority> &\n AccountSignerMeta<TAccountUpdateAuthority>\n : TAccountUpdateAuthority,\n TAccountPlatformConfig extends string\n ? ReadonlyAccount<TAccountPlatformConfig>\n : TAccountPlatformConfig,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountAllowedMint extends string\n ? WritableAccount<TAccountAllowedMint>\n : TAccountAllowedMint,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitAllowedMintInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type InitAllowedMintInstructionDataArgs = {};\n\nexport function getInitAllowedMintInstructionDataEncoder(): FixedSizeEncoder<InitAllowedMintInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: INIT_ALLOWED_MINT_DISCRIMINATOR })\n );\n}\n\nexport function getInitAllowedMintInstructionDataDecoder(): FixedSizeDecoder<InitAllowedMintInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getInitAllowedMintInstructionDataCodec(): FixedSizeCodec<\n InitAllowedMintInstructionDataArgs,\n InitAllowedMintInstructionData\n> {\n return combineCodec(\n getInitAllowedMintInstructionDataEncoder(),\n getInitAllowedMintInstructionDataDecoder()\n );\n}\n\nexport type InitAllowedMintAsyncInput<\n TAccountUpdateAuthority extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountTokenMint extends string = string,\n TAccountAllowedMint extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n updateAuthority: TransactionSigner<TAccountUpdateAuthority>;\n platformConfig: Address<TAccountPlatformConfig>;\n tokenMint: Address<TAccountTokenMint>;\n allowedMint?: Address<TAccountAllowedMint>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport async function getInitAllowedMintInstructionAsync<\n TAccountUpdateAuthority extends string,\n TAccountPlatformConfig extends string,\n TAccountTokenMint extends string,\n TAccountAllowedMint extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitAllowedMintAsyncInput<\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountAllowedMint,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n InitAllowedMintInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountAllowedMint,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n updateAuthority: { value: input.updateAuthority ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n allowedMint: { value: input.allowedMint ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.allowedMint.value) {\n accounts.allowedMint.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 108, 108, 111, 119, 101, 100, 95, 109, 105, 110, 116,\n ])\n ),\n getAddressEncoder().encode(\n expectAddress(accounts.platformConfig.value)\n ),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.updateAuthority),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.allowedMint),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitAllowedMintInstructionDataEncoder().encode({}),\n programAddress,\n } as InitAllowedMintInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountAllowedMint,\n TAccountSystemProgram\n >);\n}\n\nexport type InitAllowedMintInput<\n TAccountUpdateAuthority extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountTokenMint extends string = string,\n TAccountAllowedMint extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n updateAuthority: TransactionSigner<TAccountUpdateAuthority>;\n platformConfig: Address<TAccountPlatformConfig>;\n tokenMint: Address<TAccountTokenMint>;\n allowedMint: Address<TAccountAllowedMint>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport function getInitAllowedMintInstruction<\n TAccountUpdateAuthority extends string,\n TAccountPlatformConfig extends string,\n TAccountTokenMint extends string,\n TAccountAllowedMint extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitAllowedMintInput<\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountAllowedMint,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): InitAllowedMintInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountAllowedMint,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n updateAuthority: { value: input.updateAuthority ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n allowedMint: { value: input.allowedMint ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.updateAuthority),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.allowedMint),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitAllowedMintInstructionDataEncoder().encode({}),\n programAddress,\n } as InitAllowedMintInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountTokenMint,\n TAccountAllowedMint,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedInitAllowedMintInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n updateAuthority: TAccountMetas[0];\n platformConfig: TAccountMetas[1];\n tokenMint: TAccountMetas[2];\n allowedMint: TAccountMetas[3];\n systemProgram: TAccountMetas[4];\n };\n data: InitAllowedMintInstructionData;\n};\n\nexport function parseInitAllowedMintInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedInitAllowedMintInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n updateAuthority: getNextAccount(),\n platformConfig: getNextAccount(),\n tokenMint: getNextAccount(),\n allowedMint: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitAllowedMintInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const INIT_PLATFORM_CONFIG_DISCRIMINATOR = new Uint8Array([\n 101, 52, 47, 49, 156, 16, 32, 118,\n]);\n\nexport function getInitPlatformConfigDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INIT_PLATFORM_CONFIG_DISCRIMINATOR\n );\n}\n\nexport type InitPlatformConfigInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountPlatformConfig extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountPlatformConfig extends string\n ? WritableAccount<TAccountPlatformConfig>\n : TAccountPlatformConfig,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitPlatformConfigInstructionData = {\n discriminator: ReadonlyUint8Array;\n name: string;\n platformFeeBp: number;\n rewardPoolFeeBp: number;\n creatorFeeBp: number;\n feeClaimAuthority: Address;\n revealAuthority: Address;\n minTimeToStakeSeconds: bigint;\n revealPeriodSeconds: bigint;\n marketResolutionDeadlineSeconds: bigint;\n};\n\nexport type InitPlatformConfigInstructionDataArgs = {\n name: string;\n platformFeeBp: number;\n rewardPoolFeeBp: number;\n creatorFeeBp: number;\n feeClaimAuthority: Address;\n revealAuthority: Address;\n minTimeToStakeSeconds: number | bigint;\n revealPeriodSeconds: number | bigint;\n marketResolutionDeadlineSeconds: number | bigint;\n};\n\nexport function getInitPlatformConfigInstructionDataEncoder(): Encoder<InitPlatformConfigInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n ['platformFeeBp', getU16Encoder()],\n ['rewardPoolFeeBp', getU16Encoder()],\n ['creatorFeeBp', getU16Encoder()],\n ['feeClaimAuthority', getAddressEncoder()],\n ['revealAuthority', getAddressEncoder()],\n ['minTimeToStakeSeconds', getU64Encoder()],\n ['revealPeriodSeconds', getU64Encoder()],\n ['marketResolutionDeadlineSeconds', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: INIT_PLATFORM_CONFIG_DISCRIMINATOR })\n );\n}\n\nexport function getInitPlatformConfigInstructionDataDecoder(): Decoder<InitPlatformConfigInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ['platformFeeBp', getU16Decoder()],\n ['rewardPoolFeeBp', getU16Decoder()],\n ['creatorFeeBp', getU16Decoder()],\n ['feeClaimAuthority', getAddressDecoder()],\n ['revealAuthority', getAddressDecoder()],\n ['minTimeToStakeSeconds', getU64Decoder()],\n ['revealPeriodSeconds', getU64Decoder()],\n ['marketResolutionDeadlineSeconds', getU64Decoder()],\n ]);\n}\n\nexport function getInitPlatformConfigInstructionDataCodec(): Codec<\n InitPlatformConfigInstructionDataArgs,\n InitPlatformConfigInstructionData\n> {\n return combineCodec(\n getInitPlatformConfigInstructionDataEncoder(),\n getInitPlatformConfigInstructionDataDecoder()\n );\n}\n\nexport type InitPlatformConfigAsyncInput<\n TAccountPayer extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n platformConfig?: Address<TAccountPlatformConfig>;\n systemProgram?: Address<TAccountSystemProgram>;\n name: InitPlatformConfigInstructionDataArgs['name'];\n platformFeeBp: InitPlatformConfigInstructionDataArgs['platformFeeBp'];\n rewardPoolFeeBp: InitPlatformConfigInstructionDataArgs['rewardPoolFeeBp'];\n creatorFeeBp: InitPlatformConfigInstructionDataArgs['creatorFeeBp'];\n feeClaimAuthority: InitPlatformConfigInstructionDataArgs['feeClaimAuthority'];\n revealAuthority: InitPlatformConfigInstructionDataArgs['revealAuthority'];\n minTimeToStakeSeconds: InitPlatformConfigInstructionDataArgs['minTimeToStakeSeconds'];\n revealPeriodSeconds: InitPlatformConfigInstructionDataArgs['revealPeriodSeconds'];\n marketResolutionDeadlineSeconds: InitPlatformConfigInstructionDataArgs['marketResolutionDeadlineSeconds'];\n};\n\nexport async function getInitPlatformConfigInstructionAsync<\n TAccountPayer extends string,\n TAccountPlatformConfig extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitPlatformConfigAsyncInput<\n TAccountPayer,\n TAccountPlatformConfig,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n InitPlatformConfigInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountPlatformConfig,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.platformConfig.value) {\n accounts.platformConfig.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 112, 108, 97, 116, 102, 111, 114, 109, 95, 99, 111, 110, 102, 105,\n 103,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.payer.value)),\n getUtf8Encoder().encode(expectSome(args.name)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitPlatformConfigInstructionDataEncoder().encode(\n args as InitPlatformConfigInstructionDataArgs\n ),\n programAddress,\n } as InitPlatformConfigInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountPlatformConfig,\n TAccountSystemProgram\n >);\n}\n\nexport type InitPlatformConfigInput<\n TAccountPayer extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n platformConfig: Address<TAccountPlatformConfig>;\n systemProgram?: Address<TAccountSystemProgram>;\n name: InitPlatformConfigInstructionDataArgs['name'];\n platformFeeBp: InitPlatformConfigInstructionDataArgs['platformFeeBp'];\n rewardPoolFeeBp: InitPlatformConfigInstructionDataArgs['rewardPoolFeeBp'];\n creatorFeeBp: InitPlatformConfigInstructionDataArgs['creatorFeeBp'];\n feeClaimAuthority: InitPlatformConfigInstructionDataArgs['feeClaimAuthority'];\n revealAuthority: InitPlatformConfigInstructionDataArgs['revealAuthority'];\n minTimeToStakeSeconds: InitPlatformConfigInstructionDataArgs['minTimeToStakeSeconds'];\n revealPeriodSeconds: InitPlatformConfigInstructionDataArgs['revealPeriodSeconds'];\n marketResolutionDeadlineSeconds: InitPlatformConfigInstructionDataArgs['marketResolutionDeadlineSeconds'];\n};\n\nexport function getInitPlatformConfigInstruction<\n TAccountPayer extends string,\n TAccountPlatformConfig extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitPlatformConfigInput<\n TAccountPayer,\n TAccountPlatformConfig,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): InitPlatformConfigInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountPlatformConfig,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitPlatformConfigInstructionDataEncoder().encode(\n args as InitPlatformConfigInstructionDataArgs\n ),\n programAddress,\n } as InitPlatformConfigInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountPlatformConfig,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedInitPlatformConfigInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n payer: TAccountMetas[0];\n platformConfig: TAccountMetas[1];\n systemProgram: TAccountMetas[2];\n };\n data: InitPlatformConfigInstructionData;\n};\n\nexport function parseInitPlatformConfigInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedInitPlatformConfigInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n platformConfig: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitPlatformConfigInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const INIT_STAKE_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 132, 171, 255, 149, 163, 37, 220, 45,\n]);\n\nexport function getInitStakeAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INIT_STAKE_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type InitStakeAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountOwner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountOwner extends string\n ? ReadonlyAccount<TAccountOwner>\n : TAccountOwner,\n TAccountMarket extends string\n ? ReadonlyAccount<TAccountMarket>\n : TAccountMarket,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitStakeAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n stakeAccountId: number;\n};\n\nexport type InitStakeAccountInstructionDataArgs = { stakeAccountId: number };\n\nexport function getInitStakeAccountInstructionDataEncoder(): FixedSizeEncoder<InitStakeAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['stakeAccountId', getU32Encoder()],\n ]),\n (value) => ({ ...value, discriminator: INIT_STAKE_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getInitStakeAccountInstructionDataDecoder(): FixedSizeDecoder<InitStakeAccountInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['stakeAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getInitStakeAccountInstructionDataCodec(): FixedSizeCodec<\n InitStakeAccountInstructionDataArgs,\n InitStakeAccountInstructionData\n> {\n return combineCodec(\n getInitStakeAccountInstructionDataEncoder(),\n getInitStakeAccountInstructionDataDecoder()\n );\n}\n\nexport type InitStakeAccountAsyncInput<\n TAccountPayer extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n /** No signature required: this instruction is permissionless. */\n owner: Address<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount?: Address<TAccountStakeAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n stakeAccountId: InitStakeAccountInstructionDataArgs['stakeAccountId'];\n};\n\nexport async function getInitStakeAccountInstructionAsync<\n TAccountPayer extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitStakeAccountAsyncInput<\n TAccountPayer,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n InitStakeAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: false },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.stakeAccount.value) {\n accounts.stakeAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 116, 97, 107, 101, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.owner.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU32Encoder().encode(expectSome(args.stakeAccountId)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitStakeAccountInstructionDataEncoder().encode(\n args as InitStakeAccountInstructionDataArgs\n ),\n programAddress,\n } as InitStakeAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSystemProgram\n >);\n}\n\nexport type InitStakeAccountInput<\n TAccountPayer extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n /** No signature required: this instruction is permissionless. */\n owner: Address<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n stakeAccountId: InitStakeAccountInstructionDataArgs['stakeAccountId'];\n};\n\nexport function getInitStakeAccountInstruction<\n TAccountPayer extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitStakeAccountInput<\n TAccountPayer,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): InitStakeAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: false },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitStakeAccountInstructionDataEncoder().encode(\n args as InitStakeAccountInstructionDataArgs\n ),\n programAddress,\n } as InitStakeAccountInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedInitStakeAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n payer: TAccountMetas[0];\n /** No signature required: this instruction is permissionless. */\n owner: TAccountMetas[1];\n market: TAccountMetas[2];\n stakeAccount: TAccountMetas[3];\n systemProgram: TAccountMetas[4];\n };\n data: InitStakeAccountInstructionData;\n};\n\nexport function parseInitStakeAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedInitStakeAccountInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n owner: getNextAccount(),\n market: getNextAccount(),\n stakeAccount: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitStakeAccountInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const OPEN_MARKET_DISCRIMINATOR = new Uint8Array([\n 116, 19, 123, 75, 217, 244, 69, 44,\n]);\n\nexport function getOpenMarketDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(OPEN_MARKET_DISCRIMINATOR);\n}\n\nexport type OpenMarketInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMarketAuthority extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountPlatformConfig extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountMarketAuthority extends string\n ? ReadonlySignerAccount<TAccountMarketAuthority> &\n AccountSignerMeta<TAccountMarketAuthority>\n : TAccountMarketAuthority,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountPlatformConfig extends string\n ? ReadonlyAccount<TAccountPlatformConfig>\n : TAccountPlatformConfig,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type OpenMarketInstructionData = {\n discriminator: ReadonlyUint8Array;\n timeToStake: bigint;\n};\n\nexport type OpenMarketInstructionDataArgs = { timeToStake: number | bigint };\n\nexport function getOpenMarketInstructionDataEncoder(): FixedSizeEncoder<OpenMarketInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['timeToStake', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: OPEN_MARKET_DISCRIMINATOR })\n );\n}\n\nexport function getOpenMarketInstructionDataDecoder(): FixedSizeDecoder<OpenMarketInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['timeToStake', getU64Decoder()],\n ]);\n}\n\nexport function getOpenMarketInstructionDataCodec(): FixedSizeCodec<\n OpenMarketInstructionDataArgs,\n OpenMarketInstructionData\n> {\n return combineCodec(\n getOpenMarketInstructionDataEncoder(),\n getOpenMarketInstructionDataDecoder()\n );\n}\n\nexport type OpenMarketInput<\n TAccountMarketAuthority extends string = string,\n TAccountMarket extends string = string,\n TAccountPlatformConfig extends string = string,\n> = {\n marketAuthority: TransactionSigner<TAccountMarketAuthority>;\n market: Address<TAccountMarket>;\n platformConfig: Address<TAccountPlatformConfig>;\n timeToStake: OpenMarketInstructionDataArgs['timeToStake'];\n};\n\nexport function getOpenMarketInstruction<\n TAccountMarketAuthority extends string,\n TAccountMarket extends string,\n TAccountPlatformConfig extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: OpenMarketInput<\n TAccountMarketAuthority,\n TAccountMarket,\n TAccountPlatformConfig\n >,\n config?: { programAddress?: TProgramAddress }\n): OpenMarketInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket,\n TAccountPlatformConfig\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n marketAuthority: {\n value: input.marketAuthority ?? null,\n isWritable: false,\n },\n market: { value: input.market ?? null, isWritable: true },\n platformConfig: { value: input.platformConfig ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.marketAuthority),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.platformConfig),\n ],\n data: getOpenMarketInstructionDataEncoder().encode(\n args as OpenMarketInstructionDataArgs\n ),\n programAddress,\n } as OpenMarketInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket,\n TAccountPlatformConfig\n >);\n}\n\nexport type ParsedOpenMarketInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n marketAuthority: TAccountMetas[0];\n market: TAccountMetas[1];\n platformConfig: TAccountMetas[2];\n };\n data: OpenMarketInstructionData;\n};\n\nexport function parseOpenMarketInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedOpenMarketInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n marketAuthority: getNextAccount(),\n market: getNextAccount(),\n platformConfig: getNextAccount(),\n },\n data: getOpenMarketInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const RESOLVE_MARKET_DISCRIMINATOR = new Uint8Array([\n 155, 23, 80, 173, 46, 74, 23, 239,\n]);\n\nexport function getResolveMarketDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n RESOLVE_MARKET_DISCRIMINATOR\n );\n}\n\nexport type ResolveMarketInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMarketAuthority extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountMarketAuthority extends string\n ? ReadonlySignerAccount<TAccountMarketAuthority> &\n AccountSignerMeta<TAccountMarketAuthority>\n : TAccountMarketAuthority,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ResolveMarketInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type ResolveMarketInstructionDataArgs = {};\n\nexport function getResolveMarketInstructionDataEncoder(): FixedSizeEncoder<ResolveMarketInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: RESOLVE_MARKET_DISCRIMINATOR })\n );\n}\n\nexport function getResolveMarketInstructionDataDecoder(): FixedSizeDecoder<ResolveMarketInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getResolveMarketInstructionDataCodec(): FixedSizeCodec<\n ResolveMarketInstructionDataArgs,\n ResolveMarketInstructionData\n> {\n return combineCodec(\n getResolveMarketInstructionDataEncoder(),\n getResolveMarketInstructionDataDecoder()\n );\n}\n\nexport type ResolveMarketInput<\n TAccountMarketAuthority extends string = string,\n TAccountMarket extends string = string,\n> = {\n marketAuthority: TransactionSigner<TAccountMarketAuthority>;\n market: Address<TAccountMarket>;\n};\n\nexport function getResolveMarketInstruction<\n TAccountMarketAuthority extends string,\n TAccountMarket extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ResolveMarketInput<TAccountMarketAuthority, TAccountMarket>,\n config?: { programAddress?: TProgramAddress }\n): ResolveMarketInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n marketAuthority: {\n value: input.marketAuthority ?? null,\n isWritable: false,\n },\n market: { value: input.market ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.marketAuthority),\n getAccountMeta(accounts.market),\n ],\n data: getResolveMarketInstructionDataEncoder().encode({}),\n programAddress,\n } as ResolveMarketInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket\n >);\n}\n\nexport type ParsedResolveMarketInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n marketAuthority: TAccountMetas[0];\n market: TAccountMetas[1];\n };\n data: ResolveMarketInstructionData;\n};\n\nexport function parseResolveMarketInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedResolveMarketInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: { marketAuthority: getNextAccount(), market: getNextAccount() },\n data: getResolveMarketInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const REVEAL_STAKE_DISCRIMINATOR = new Uint8Array([\n 107, 229, 210, 77, 126, 255, 243, 188,\n]);\n\nexport function getRevealStakeDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n REVEAL_STAKE_DISCRIMINATOR\n );\n}\n\nexport type RevealStakeInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountOwner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountSignPdaAccount extends string | AccountMeta<string> = string,\n TAccountMxeAccount extends string | AccountMeta<string> = string,\n TAccountMempoolAccount extends string | AccountMeta<string> = string,\n TAccountExecutingPool extends string | AccountMeta<string> = string,\n TAccountComputationAccount extends string | AccountMeta<string> = string,\n TAccountCompDefAccount extends string | AccountMeta<string> = string,\n TAccountClusterAccount extends string | AccountMeta<string> = string,\n TAccountPoolAccount extends string | AccountMeta<string> =\n 'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC',\n TAccountClockAccount extends string | AccountMeta<string> =\n '7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot',\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TAccountArciumProgram extends string | AccountMeta<string> =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? WritableSignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountOwner extends string\n ? ReadonlyAccount<TAccountOwner>\n : TAccountOwner,\n TAccountMarket extends string\n ? ReadonlyAccount<TAccountMarket>\n : TAccountMarket,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountSignPdaAccount extends string\n ? WritableAccount<TAccountSignPdaAccount>\n : TAccountSignPdaAccount,\n TAccountMxeAccount extends string\n ? ReadonlyAccount<TAccountMxeAccount>\n : TAccountMxeAccount,\n TAccountMempoolAccount extends string\n ? WritableAccount<TAccountMempoolAccount>\n : TAccountMempoolAccount,\n TAccountExecutingPool extends string\n ? WritableAccount<TAccountExecutingPool>\n : TAccountExecutingPool,\n TAccountComputationAccount extends string\n ? WritableAccount<TAccountComputationAccount>\n : TAccountComputationAccount,\n TAccountCompDefAccount extends string\n ? ReadonlyAccount<TAccountCompDefAccount>\n : TAccountCompDefAccount,\n TAccountClusterAccount extends string\n ? WritableAccount<TAccountClusterAccount>\n : TAccountClusterAccount,\n TAccountPoolAccount extends string\n ? WritableAccount<TAccountPoolAccount>\n : TAccountPoolAccount,\n TAccountClockAccount extends string\n ? WritableAccount<TAccountClockAccount>\n : TAccountClockAccount,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountArciumProgram extends string\n ? ReadonlyAccount<TAccountArciumProgram>\n : TAccountArciumProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type RevealStakeInstructionData = {\n discriminator: ReadonlyUint8Array;\n computationOffset: bigint;\n stakeAccountId: number;\n};\n\nexport type RevealStakeInstructionDataArgs = {\n computationOffset: number | bigint;\n stakeAccountId: number;\n};\n\nexport function getRevealStakeInstructionDataEncoder(): FixedSizeEncoder<RevealStakeInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['computationOffset', getU64Encoder()],\n ['stakeAccountId', getU32Encoder()],\n ]),\n (value) => ({ ...value, discriminator: REVEAL_STAKE_DISCRIMINATOR })\n );\n}\n\nexport function getRevealStakeInstructionDataDecoder(): FixedSizeDecoder<RevealStakeInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['computationOffset', getU64Decoder()],\n ['stakeAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getRevealStakeInstructionDataCodec(): FixedSizeCodec<\n RevealStakeInstructionDataArgs,\n RevealStakeInstructionData\n> {\n return combineCodec(\n getRevealStakeInstructionDataEncoder(),\n getRevealStakeInstructionDataDecoder()\n );\n}\n\nexport type RevealStakeAsyncInput<\n TAccountSigner extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountSignPdaAccount extends string = string,\n TAccountMxeAccount extends string = string,\n TAccountMempoolAccount extends string = string,\n TAccountExecutingPool extends string = string,\n TAccountComputationAccount extends string = string,\n TAccountCompDefAccount extends string = string,\n TAccountClusterAccount extends string = string,\n TAccountPoolAccount extends string = string,\n TAccountClockAccount extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountArciumProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n owner: Address<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount?: Address<TAccountStakeAccount>;\n signPdaAccount?: Address<TAccountSignPdaAccount>;\n mxeAccount: Address<TAccountMxeAccount>;\n mempoolAccount: Address<TAccountMempoolAccount>;\n executingPool: Address<TAccountExecutingPool>;\n computationAccount: Address<TAccountComputationAccount>;\n compDefAccount: Address<TAccountCompDefAccount>;\n clusterAccount: Address<TAccountClusterAccount>;\n poolAccount?: Address<TAccountPoolAccount>;\n clockAccount?: Address<TAccountClockAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n arciumProgram?: Address<TAccountArciumProgram>;\n computationOffset: RevealStakeInstructionDataArgs['computationOffset'];\n stakeAccountId: RevealStakeInstructionDataArgs['stakeAccountId'];\n};\n\nexport async function getRevealStakeInstructionAsync<\n TAccountSigner extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountSignPdaAccount extends string,\n TAccountMxeAccount extends string,\n TAccountMempoolAccount extends string,\n TAccountExecutingPool extends string,\n TAccountComputationAccount extends string,\n TAccountCompDefAccount extends string,\n TAccountClusterAccount extends string,\n TAccountPoolAccount extends string,\n TAccountClockAccount extends string,\n TAccountSystemProgram extends string,\n TAccountArciumProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: RevealStakeAsyncInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n RevealStakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: false },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n signPdaAccount: { value: input.signPdaAccount ?? null, isWritable: true },\n mxeAccount: { value: input.mxeAccount ?? null, isWritable: false },\n mempoolAccount: { value: input.mempoolAccount ?? null, isWritable: true },\n executingPool: { value: input.executingPool ?? null, isWritable: true },\n computationAccount: {\n value: input.computationAccount ?? null,\n isWritable: true,\n },\n compDefAccount: { value: input.compDefAccount ?? null, isWritable: false },\n clusterAccount: { value: input.clusterAccount ?? null, isWritable: true },\n poolAccount: { value: input.poolAccount ?? null, isWritable: true },\n clockAccount: { value: input.clockAccount ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n arciumProgram: { value: input.arciumProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.stakeAccount.value) {\n accounts.stakeAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 116, 97, 107, 101, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.owner.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU32Encoder().encode(expectSome(args.stakeAccountId)),\n ],\n });\n }\n if (!accounts.signPdaAccount.value) {\n accounts.signPdaAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 65, 114, 99, 105, 117, 109, 83, 105, 103, 110, 101, 114, 65, 99, 99,\n 111, 117, 110, 116,\n ])\n ),\n ],\n });\n }\n if (!accounts.poolAccount.value) {\n accounts.poolAccount.value =\n 'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC' as Address<'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC'>;\n }\n if (!accounts.clockAccount.value) {\n accounts.clockAccount.value =\n '7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot' as Address<'7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n if (!accounts.arciumProgram.value) {\n accounts.arciumProgram.value =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ' as Address<'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.signPdaAccount),\n getAccountMeta(accounts.mxeAccount),\n getAccountMeta(accounts.mempoolAccount),\n getAccountMeta(accounts.executingPool),\n getAccountMeta(accounts.computationAccount),\n getAccountMeta(accounts.compDefAccount),\n getAccountMeta(accounts.clusterAccount),\n getAccountMeta(accounts.poolAccount),\n getAccountMeta(accounts.clockAccount),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.arciumProgram),\n ],\n data: getRevealStakeInstructionDataEncoder().encode(\n args as RevealStakeInstructionDataArgs\n ),\n programAddress,\n } as RevealStakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >);\n}\n\nexport type RevealStakeInput<\n TAccountSigner extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountSignPdaAccount extends string = string,\n TAccountMxeAccount extends string = string,\n TAccountMempoolAccount extends string = string,\n TAccountExecutingPool extends string = string,\n TAccountComputationAccount extends string = string,\n TAccountCompDefAccount extends string = string,\n TAccountClusterAccount extends string = string,\n TAccountPoolAccount extends string = string,\n TAccountClockAccount extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountArciumProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n owner: Address<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n signPdaAccount: Address<TAccountSignPdaAccount>;\n mxeAccount: Address<TAccountMxeAccount>;\n mempoolAccount: Address<TAccountMempoolAccount>;\n executingPool: Address<TAccountExecutingPool>;\n computationAccount: Address<TAccountComputationAccount>;\n compDefAccount: Address<TAccountCompDefAccount>;\n clusterAccount: Address<TAccountClusterAccount>;\n poolAccount?: Address<TAccountPoolAccount>;\n clockAccount?: Address<TAccountClockAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n arciumProgram?: Address<TAccountArciumProgram>;\n computationOffset: RevealStakeInstructionDataArgs['computationOffset'];\n stakeAccountId: RevealStakeInstructionDataArgs['stakeAccountId'];\n};\n\nexport function getRevealStakeInstruction<\n TAccountSigner extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountSignPdaAccount extends string,\n TAccountMxeAccount extends string,\n TAccountMempoolAccount extends string,\n TAccountExecutingPool extends string,\n TAccountComputationAccount extends string,\n TAccountCompDefAccount extends string,\n TAccountClusterAccount extends string,\n TAccountPoolAccount extends string,\n TAccountClockAccount extends string,\n TAccountSystemProgram extends string,\n TAccountArciumProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: RevealStakeInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): RevealStakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: false },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n signPdaAccount: { value: input.signPdaAccount ?? null, isWritable: true },\n mxeAccount: { value: input.mxeAccount ?? null, isWritable: false },\n mempoolAccount: { value: input.mempoolAccount ?? null, isWritable: true },\n executingPool: { value: input.executingPool ?? null, isWritable: true },\n computationAccount: {\n value: input.computationAccount ?? null,\n isWritable: true,\n },\n compDefAccount: { value: input.compDefAccount ?? null, isWritable: false },\n clusterAccount: { value: input.clusterAccount ?? null, isWritable: true },\n poolAccount: { value: input.poolAccount ?? null, isWritable: true },\n clockAccount: { value: input.clockAccount ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n arciumProgram: { value: input.arciumProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.poolAccount.value) {\n accounts.poolAccount.value =\n 'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC' as Address<'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC'>;\n }\n if (!accounts.clockAccount.value) {\n accounts.clockAccount.value =\n '7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot' as Address<'7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n if (!accounts.arciumProgram.value) {\n accounts.arciumProgram.value =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ' as Address<'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.signPdaAccount),\n getAccountMeta(accounts.mxeAccount),\n getAccountMeta(accounts.mempoolAccount),\n getAccountMeta(accounts.executingPool),\n getAccountMeta(accounts.computationAccount),\n getAccountMeta(accounts.compDefAccount),\n getAccountMeta(accounts.clusterAccount),\n getAccountMeta(accounts.poolAccount),\n getAccountMeta(accounts.clockAccount),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.arciumProgram),\n ],\n data: getRevealStakeInstructionDataEncoder().encode(\n args as RevealStakeInstructionDataArgs\n ),\n programAddress,\n } as RevealStakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >);\n}\n\nexport type ParsedRevealStakeInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n owner: TAccountMetas[1];\n market: TAccountMetas[2];\n stakeAccount: TAccountMetas[3];\n signPdaAccount: TAccountMetas[4];\n mxeAccount: TAccountMetas[5];\n mempoolAccount: TAccountMetas[6];\n executingPool: TAccountMetas[7];\n computationAccount: TAccountMetas[8];\n compDefAccount: TAccountMetas[9];\n clusterAccount: TAccountMetas[10];\n poolAccount: TAccountMetas[11];\n clockAccount: TAccountMetas[12];\n systemProgram: TAccountMetas[13];\n arciumProgram: TAccountMetas[14];\n };\n data: RevealStakeInstructionData;\n};\n\nexport function parseRevealStakeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedRevealStakeInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 15) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n owner: getNextAccount(),\n market: getNextAccount(),\n stakeAccount: getNextAccount(),\n signPdaAccount: getNextAccount(),\n mxeAccount: getNextAccount(),\n mempoolAccount: getNextAccount(),\n executingPool: getNextAccount(),\n computationAccount: getNextAccount(),\n compDefAccount: getNextAccount(),\n clusterAccount: getNextAccount(),\n poolAccount: getNextAccount(),\n clockAccount: getNextAccount(),\n systemProgram: getNextAccount(),\n arciumProgram: getNextAccount(),\n },\n data: getRevealStakeInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getU8Decoder,\n getU8Encoder,\n getUnitDecoder,\n getUnitEncoder,\n transformEncoder,\n type AccountMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getRevealStakeOutputDecoder,\n getRevealStakeOutputEncoder,\n type RevealStakeOutput,\n type RevealStakeOutputArgs,\n} from '../types';\n\nexport const REVEAL_STAKE_CALLBACK_DISCRIMINATOR = new Uint8Array([\n 79, 19, 120, 162, 232, 39, 206, 116,\n]);\n\nexport function getRevealStakeCallbackDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n REVEAL_STAKE_CALLBACK_DISCRIMINATOR\n );\n}\n\nexport type RevealStakeCallbackInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountArciumProgram extends string | AccountMeta<string> =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ',\n TAccountCompDefAccount extends string | AccountMeta<string> = string,\n TAccountMxeAccount extends string | AccountMeta<string> = string,\n TAccountComputationAccount extends string | AccountMeta<string> = string,\n TAccountClusterAccount extends string | AccountMeta<string> = string,\n TAccountInstructionsSysvar extends string | AccountMeta<string> =\n 'Sysvar1nstructions1111111111111111111111111',\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountArciumProgram extends string\n ? ReadonlyAccount<TAccountArciumProgram>\n : TAccountArciumProgram,\n TAccountCompDefAccount extends string\n ? ReadonlyAccount<TAccountCompDefAccount>\n : TAccountCompDefAccount,\n TAccountMxeAccount extends string\n ? ReadonlyAccount<TAccountMxeAccount>\n : TAccountMxeAccount,\n TAccountComputationAccount extends string\n ? ReadonlyAccount<TAccountComputationAccount>\n : TAccountComputationAccount,\n TAccountClusterAccount extends string\n ? ReadonlyAccount<TAccountClusterAccount>\n : TAccountClusterAccount,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type RevealStakeCallbackInstructionData = {\n discriminator: ReadonlyUint8Array;\n output:\n | { __kind: 'Success'; fields: readonly [RevealStakeOutput, Array<number>] }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [RevealStakeOutput];\n };\n};\n\nexport type RevealStakeCallbackInstructionDataArgs = {\n output:\n | {\n __kind: 'Success';\n fields: readonly [RevealStakeOutputArgs, Array<number>];\n }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [RevealStakeOutputArgs];\n };\n};\n\nexport function getRevealStakeCallbackInstructionDataEncoder(): Encoder<RevealStakeCallbackInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n [\n 'output',\n getDiscriminatedUnionEncoder([\n [\n 'Success',\n getStructEncoder([\n [\n 'fields',\n getTupleEncoder([\n getRevealStakeOutputEncoder(),\n getArrayEncoder(getU8Encoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitEncoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructEncoder([\n ['fields', getTupleEncoder([getRevealStakeOutputEncoder()])],\n ]),\n ],\n ]),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: REVEAL_STAKE_CALLBACK_DISCRIMINATOR,\n })\n );\n}\n\nexport function getRevealStakeCallbackInstructionDataDecoder(): Decoder<RevealStakeCallbackInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n [\n 'output',\n getDiscriminatedUnionDecoder([\n [\n 'Success',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([\n getRevealStakeOutputDecoder(),\n getArrayDecoder(getU8Decoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitDecoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructDecoder([\n ['fields', getTupleDecoder([getRevealStakeOutputDecoder()])],\n ]),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getRevealStakeCallbackInstructionDataCodec(): Codec<\n RevealStakeCallbackInstructionDataArgs,\n RevealStakeCallbackInstructionData\n> {\n return combineCodec(\n getRevealStakeCallbackInstructionDataEncoder(),\n getRevealStakeCallbackInstructionDataDecoder()\n );\n}\n\nexport type RevealStakeCallbackInput<\n TAccountArciumProgram extends string = string,\n TAccountCompDefAccount extends string = string,\n TAccountMxeAccount extends string = string,\n TAccountComputationAccount extends string = string,\n TAccountClusterAccount extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountStakeAccount extends string = string,\n> = {\n arciumProgram?: Address<TAccountArciumProgram>;\n compDefAccount: Address<TAccountCompDefAccount>;\n mxeAccount: Address<TAccountMxeAccount>;\n computationAccount: Address<TAccountComputationAccount>;\n clusterAccount: Address<TAccountClusterAccount>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n stakeAccount: Address<TAccountStakeAccount>;\n output: RevealStakeCallbackInstructionDataArgs['output'];\n};\n\nexport function getRevealStakeCallbackInstruction<\n TAccountArciumProgram extends string,\n TAccountCompDefAccount extends string,\n TAccountMxeAccount extends string,\n TAccountComputationAccount extends string,\n TAccountClusterAccount extends string,\n TAccountInstructionsSysvar extends string,\n TAccountStakeAccount extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: RevealStakeCallbackInput<\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountStakeAccount\n >,\n config?: { programAddress?: TProgramAddress }\n): RevealStakeCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountStakeAccount\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n arciumProgram: { value: input.arciumProgram ?? null, isWritable: false },\n compDefAccount: { value: input.compDefAccount ?? null, isWritable: false },\n mxeAccount: { value: input.mxeAccount ?? null, isWritable: false },\n computationAccount: {\n value: input.computationAccount ?? null,\n isWritable: false,\n },\n clusterAccount: { value: input.clusterAccount ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.arciumProgram.value) {\n accounts.arciumProgram.value =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ' as Address<'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ'>;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n 'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.arciumProgram),\n getAccountMeta(accounts.compDefAccount),\n getAccountMeta(accounts.mxeAccount),\n getAccountMeta(accounts.computationAccount),\n getAccountMeta(accounts.clusterAccount),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.stakeAccount),\n ],\n data: getRevealStakeCallbackInstructionDataEncoder().encode(\n args as RevealStakeCallbackInstructionDataArgs\n ),\n programAddress,\n } as RevealStakeCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountStakeAccount\n >);\n}\n\nexport type ParsedRevealStakeCallbackInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n arciumProgram: TAccountMetas[0];\n compDefAccount: TAccountMetas[1];\n mxeAccount: TAccountMetas[2];\n computationAccount: TAccountMetas[3];\n clusterAccount: TAccountMetas[4];\n instructionsSysvar: TAccountMetas[5];\n stakeAccount: TAccountMetas[6];\n };\n data: RevealStakeCallbackInstructionData;\n};\n\nexport function parseRevealStakeCallbackInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedRevealStakeCallbackInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n arciumProgram: getNextAccount(),\n compDefAccount: getNextAccount(),\n mxeAccount: getNextAccount(),\n computationAccount: getNextAccount(),\n clusterAccount: getNextAccount(),\n instructionsSysvar: getNextAccount(),\n stakeAccount: getNextAccount(),\n },\n data: getRevealStakeCallbackInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const REVEAL_STAKE_COMP_DEF_DISCRIMINATOR = new Uint8Array([\n 197, 20, 216, 132, 43, 99, 64, 0,\n]);\n\nexport function getRevealStakeCompDefDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n REVEAL_STAKE_COMP_DEF_DISCRIMINATOR\n );\n}\n\nexport type RevealStakeCompDefInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountMxeAccount extends string | AccountMeta<string> = string,\n TAccountCompDefAccount extends string | AccountMeta<string> = string,\n TAccountAddressLookupTable extends string | AccountMeta<string> = string,\n TAccountLutProgram extends string | AccountMeta<string> =\n 'AddressLookupTab1e1111111111111111111111111',\n TAccountArciumProgram extends string | AccountMeta<string> =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ',\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountMxeAccount extends string\n ? WritableAccount<TAccountMxeAccount>\n : TAccountMxeAccount,\n TAccountCompDefAccount extends string\n ? WritableAccount<TAccountCompDefAccount>\n : TAccountCompDefAccount,\n TAccountAddressLookupTable extends string\n ? WritableAccount<TAccountAddressLookupTable>\n : TAccountAddressLookupTable,\n TAccountLutProgram extends string\n ? ReadonlyAccount<TAccountLutProgram>\n : TAccountLutProgram,\n TAccountArciumProgram extends string\n ? ReadonlyAccount<TAccountArciumProgram>\n : TAccountArciumProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type RevealStakeCompDefInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type RevealStakeCompDefInstructionDataArgs = {};\n\nexport function getRevealStakeCompDefInstructionDataEncoder(): FixedSizeEncoder<RevealStakeCompDefInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({\n ...value,\n discriminator: REVEAL_STAKE_COMP_DEF_DISCRIMINATOR,\n })\n );\n}\n\nexport function getRevealStakeCompDefInstructionDataDecoder(): FixedSizeDecoder<RevealStakeCompDefInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getRevealStakeCompDefInstructionDataCodec(): FixedSizeCodec<\n RevealStakeCompDefInstructionDataArgs,\n RevealStakeCompDefInstructionData\n> {\n return combineCodec(\n getRevealStakeCompDefInstructionDataEncoder(),\n getRevealStakeCompDefInstructionDataDecoder()\n );\n}\n\nexport type RevealStakeCompDefInput<\n TAccountPayer extends string = string,\n TAccountMxeAccount extends string = string,\n TAccountCompDefAccount extends string = string,\n TAccountAddressLookupTable extends string = string,\n TAccountLutProgram extends string = string,\n TAccountArciumProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n mxeAccount: Address<TAccountMxeAccount>;\n compDefAccount: Address<TAccountCompDefAccount>;\n addressLookupTable: Address<TAccountAddressLookupTable>;\n lutProgram?: Address<TAccountLutProgram>;\n arciumProgram?: Address<TAccountArciumProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport function getRevealStakeCompDefInstruction<\n TAccountPayer extends string,\n TAccountMxeAccount extends string,\n TAccountCompDefAccount extends string,\n TAccountAddressLookupTable extends string,\n TAccountLutProgram extends string,\n TAccountArciumProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: RevealStakeCompDefInput<\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): RevealStakeCompDefInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n mxeAccount: { value: input.mxeAccount ?? null, isWritable: true },\n compDefAccount: { value: input.compDefAccount ?? null, isWritable: true },\n addressLookupTable: {\n value: input.addressLookupTable ?? null,\n isWritable: true,\n },\n lutProgram: { value: input.lutProgram ?? null, isWritable: false },\n arciumProgram: { value: input.arciumProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.lutProgram.value) {\n accounts.lutProgram.value =\n 'AddressLookupTab1e1111111111111111111111111' as Address<'AddressLookupTab1e1111111111111111111111111'>;\n }\n if (!accounts.arciumProgram.value) {\n accounts.arciumProgram.value =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ' as Address<'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.mxeAccount),\n getAccountMeta(accounts.compDefAccount),\n getAccountMeta(accounts.addressLookupTable),\n getAccountMeta(accounts.lutProgram),\n getAccountMeta(accounts.arciumProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getRevealStakeCompDefInstructionDataEncoder().encode({}),\n programAddress,\n } as RevealStakeCompDefInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedRevealStakeCompDefInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n payer: TAccountMetas[0];\n mxeAccount: TAccountMetas[1];\n compDefAccount: TAccountMetas[2];\n addressLookupTable: TAccountMetas[3];\n lutProgram: TAccountMetas[4];\n arciumProgram: TAccountMetas[5];\n systemProgram: TAccountMetas[6];\n };\n data: RevealStakeCompDefInstructionData;\n};\n\nexport function parseRevealStakeCompDefInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedRevealStakeCompDefInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n mxeAccount: getNextAccount(),\n compDefAccount: getNextAccount(),\n addressLookupTable: getNextAccount(),\n lutProgram: getNextAccount(),\n arciumProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getRevealStakeCompDefInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_FEE_CLAIM_AUTHORITY_DISCRIMINATOR = new Uint8Array([\n 75, 250, 161, 197, 43, 196, 161, 3,\n]);\n\nexport function getSetFeeClaimAuthorityDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n SET_FEE_CLAIM_AUTHORITY_DISCRIMINATOR\n );\n}\n\nexport type SetFeeClaimAuthorityInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountUpdateAuthority extends string | AccountMeta<string> = string,\n TAccountPlatformConfig extends string | AccountMeta<string> = string,\n TAccountNewFeeClaimAuthority extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountUpdateAuthority extends string\n ? ReadonlySignerAccount<TAccountUpdateAuthority> &\n AccountSignerMeta<TAccountUpdateAuthority>\n : TAccountUpdateAuthority,\n TAccountPlatformConfig extends string\n ? WritableAccount<TAccountPlatformConfig>\n : TAccountPlatformConfig,\n TAccountNewFeeClaimAuthority extends string\n ? ReadonlyAccount<TAccountNewFeeClaimAuthority>\n : TAccountNewFeeClaimAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type SetFeeClaimAuthorityInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type SetFeeClaimAuthorityInstructionDataArgs = {};\n\nexport function getSetFeeClaimAuthorityInstructionDataEncoder(): FixedSizeEncoder<SetFeeClaimAuthorityInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({\n ...value,\n discriminator: SET_FEE_CLAIM_AUTHORITY_DISCRIMINATOR,\n })\n );\n}\n\nexport function getSetFeeClaimAuthorityInstructionDataDecoder(): FixedSizeDecoder<SetFeeClaimAuthorityInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getSetFeeClaimAuthorityInstructionDataCodec(): FixedSizeCodec<\n SetFeeClaimAuthorityInstructionDataArgs,\n SetFeeClaimAuthorityInstructionData\n> {\n return combineCodec(\n getSetFeeClaimAuthorityInstructionDataEncoder(),\n getSetFeeClaimAuthorityInstructionDataDecoder()\n );\n}\n\nexport type SetFeeClaimAuthorityInput<\n TAccountUpdateAuthority extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountNewFeeClaimAuthority extends string = string,\n> = {\n updateAuthority: TransactionSigner<TAccountUpdateAuthority>;\n platformConfig: Address<TAccountPlatformConfig>;\n newFeeClaimAuthority: Address<TAccountNewFeeClaimAuthority>;\n};\n\nexport function getSetFeeClaimAuthorityInstruction<\n TAccountUpdateAuthority extends string,\n TAccountPlatformConfig extends string,\n TAccountNewFeeClaimAuthority extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: SetFeeClaimAuthorityInput<\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountNewFeeClaimAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): SetFeeClaimAuthorityInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountNewFeeClaimAuthority\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n updateAuthority: {\n value: input.updateAuthority ?? null,\n isWritable: false,\n },\n platformConfig: { value: input.platformConfig ?? null, isWritable: true },\n newFeeClaimAuthority: {\n value: input.newFeeClaimAuthority ?? null,\n isWritable: false,\n },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.updateAuthority),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.newFeeClaimAuthority),\n ],\n data: getSetFeeClaimAuthorityInstructionDataEncoder().encode({}),\n programAddress,\n } as SetFeeClaimAuthorityInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountNewFeeClaimAuthority\n >);\n}\n\nexport type ParsedSetFeeClaimAuthorityInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n updateAuthority: TAccountMetas[0];\n platformConfig: TAccountMetas[1];\n newFeeClaimAuthority: TAccountMetas[2];\n };\n data: SetFeeClaimAuthorityInstructionData;\n};\n\nexport function parseSetFeeClaimAuthorityInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedSetFeeClaimAuthorityInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n updateAuthority: getNextAccount(),\n platformConfig: getNextAccount(),\n newFeeClaimAuthority: getNextAccount(),\n },\n data: getSetFeeClaimAuthorityInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_UPDATE_AUTHORITY_DISCRIMINATOR = new Uint8Array([\n 166, 198, 186, 255, 217, 170, 103, 155,\n]);\n\nexport function getSetUpdateAuthorityDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n SET_UPDATE_AUTHORITY_DISCRIMINATOR\n );\n}\n\nexport type SetUpdateAuthorityInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountUpdateAuthority extends string | AccountMeta<string> = string,\n TAccountPlatformConfig extends string | AccountMeta<string> = string,\n TAccountNewAuthority extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountUpdateAuthority extends string\n ? ReadonlySignerAccount<TAccountUpdateAuthority> &\n AccountSignerMeta<TAccountUpdateAuthority>\n : TAccountUpdateAuthority,\n TAccountPlatformConfig extends string\n ? WritableAccount<TAccountPlatformConfig>\n : TAccountPlatformConfig,\n TAccountNewAuthority extends string\n ? ReadonlyAccount<TAccountNewAuthority>\n : TAccountNewAuthority,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type SetUpdateAuthorityInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type SetUpdateAuthorityInstructionDataArgs = {};\n\nexport function getSetUpdateAuthorityInstructionDataEncoder(): FixedSizeEncoder<SetUpdateAuthorityInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: SET_UPDATE_AUTHORITY_DISCRIMINATOR })\n );\n}\n\nexport function getSetUpdateAuthorityInstructionDataDecoder(): FixedSizeDecoder<SetUpdateAuthorityInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getSetUpdateAuthorityInstructionDataCodec(): FixedSizeCodec<\n SetUpdateAuthorityInstructionDataArgs,\n SetUpdateAuthorityInstructionData\n> {\n return combineCodec(\n getSetUpdateAuthorityInstructionDataEncoder(),\n getSetUpdateAuthorityInstructionDataDecoder()\n );\n}\n\nexport type SetUpdateAuthorityInput<\n TAccountUpdateAuthority extends string = string,\n TAccountPlatformConfig extends string = string,\n TAccountNewAuthority extends string = string,\n> = {\n updateAuthority: TransactionSigner<TAccountUpdateAuthority>;\n platformConfig: Address<TAccountPlatformConfig>;\n newAuthority: Address<TAccountNewAuthority>;\n};\n\nexport function getSetUpdateAuthorityInstruction<\n TAccountUpdateAuthority extends string,\n TAccountPlatformConfig extends string,\n TAccountNewAuthority extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: SetUpdateAuthorityInput<\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountNewAuthority\n >,\n config?: { programAddress?: TProgramAddress }\n): SetUpdateAuthorityInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountNewAuthority\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n updateAuthority: {\n value: input.updateAuthority ?? null,\n isWritable: false,\n },\n platformConfig: { value: input.platformConfig ?? null, isWritable: true },\n newAuthority: { value: input.newAuthority ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.updateAuthority),\n getAccountMeta(accounts.platformConfig),\n getAccountMeta(accounts.newAuthority),\n ],\n data: getSetUpdateAuthorityInstructionDataEncoder().encode({}),\n programAddress,\n } as SetUpdateAuthorityInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig,\n TAccountNewAuthority\n >);\n}\n\nexport type ParsedSetUpdateAuthorityInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n updateAuthority: TAccountMetas[0];\n platformConfig: TAccountMetas[1];\n newAuthority: TAccountMetas[2];\n };\n data: SetUpdateAuthorityInstructionData;\n};\n\nexport function parseSetUpdateAuthorityInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedSetUpdateAuthorityInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n updateAuthority: getNextAccount(),\n platformConfig: getNextAccount(),\n newAuthority: getNextAccount(),\n },\n data: getSetUpdateAuthorityInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const SET_WINNING_OPTION_DISCRIMINATOR = new Uint8Array([\n 156, 73, 113, 33, 170, 115, 163, 206,\n]);\n\nexport function getSetWinningOptionDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n SET_WINNING_OPTION_DISCRIMINATOR\n );\n}\n\nexport type SetWinningOptionInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMarketAuthority extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountOption extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountMarketAuthority extends string\n ? ReadonlySignerAccount<TAccountMarketAuthority> &\n AccountSignerMeta<TAccountMarketAuthority>\n : TAccountMarketAuthority,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountOption extends string\n ? WritableAccount<TAccountOption>\n : TAccountOption,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type SetWinningOptionInstructionData = {\n discriminator: ReadonlyUint8Array;\n optionId: bigint;\n rewardBp: number;\n};\n\nexport type SetWinningOptionInstructionDataArgs = {\n optionId: number | bigint;\n rewardBp: number;\n};\n\nexport function getSetWinningOptionInstructionDataEncoder(): FixedSizeEncoder<SetWinningOptionInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['optionId', getU64Encoder()],\n ['rewardBp', getU16Encoder()],\n ]),\n (value) => ({ ...value, discriminator: SET_WINNING_OPTION_DISCRIMINATOR })\n );\n}\n\nexport function getSetWinningOptionInstructionDataDecoder(): FixedSizeDecoder<SetWinningOptionInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['optionId', getU64Decoder()],\n ['rewardBp', getU16Decoder()],\n ]);\n}\n\nexport function getSetWinningOptionInstructionDataCodec(): FixedSizeCodec<\n SetWinningOptionInstructionDataArgs,\n SetWinningOptionInstructionData\n> {\n return combineCodec(\n getSetWinningOptionInstructionDataEncoder(),\n getSetWinningOptionInstructionDataDecoder()\n );\n}\n\nexport type SetWinningOptionAsyncInput<\n TAccountMarketAuthority extends string = string,\n TAccountMarket extends string = string,\n TAccountOption extends string = string,\n> = {\n marketAuthority: TransactionSigner<TAccountMarketAuthority>;\n market: Address<TAccountMarket>;\n option?: Address<TAccountOption>;\n optionId: SetWinningOptionInstructionDataArgs['optionId'];\n rewardBp: SetWinningOptionInstructionDataArgs['rewardBp'];\n};\n\nexport async function getSetWinningOptionInstructionAsync<\n TAccountMarketAuthority extends string,\n TAccountMarket extends string,\n TAccountOption extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: SetWinningOptionAsyncInput<\n TAccountMarketAuthority,\n TAccountMarket,\n TAccountOption\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n SetWinningOptionInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket,\n TAccountOption\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n marketAuthority: {\n value: input.marketAuthority ?? null,\n isWritable: false,\n },\n market: { value: input.market ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.option.value) {\n accounts.option.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([111, 112, 116, 105, 111, 110])\n ),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU64Encoder().encode(expectSome(args.optionId)),\n ],\n });\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.marketAuthority),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.option),\n ],\n data: getSetWinningOptionInstructionDataEncoder().encode(\n args as SetWinningOptionInstructionDataArgs\n ),\n programAddress,\n } as SetWinningOptionInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket,\n TAccountOption\n >);\n}\n\nexport type SetWinningOptionInput<\n TAccountMarketAuthority extends string = string,\n TAccountMarket extends string = string,\n TAccountOption extends string = string,\n> = {\n marketAuthority: TransactionSigner<TAccountMarketAuthority>;\n market: Address<TAccountMarket>;\n option: Address<TAccountOption>;\n optionId: SetWinningOptionInstructionDataArgs['optionId'];\n rewardBp: SetWinningOptionInstructionDataArgs['rewardBp'];\n};\n\nexport function getSetWinningOptionInstruction<\n TAccountMarketAuthority extends string,\n TAccountMarket extends string,\n TAccountOption extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: SetWinningOptionInput<\n TAccountMarketAuthority,\n TAccountMarket,\n TAccountOption\n >,\n config?: { programAddress?: TProgramAddress }\n): SetWinningOptionInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket,\n TAccountOption\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n marketAuthority: {\n value: input.marketAuthority ?? null,\n isWritable: false,\n },\n market: { value: input.market ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.marketAuthority),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.option),\n ],\n data: getSetWinningOptionInstructionDataEncoder().encode(\n args as SetWinningOptionInstructionDataArgs\n ),\n programAddress,\n } as SetWinningOptionInstruction<\n TProgramAddress,\n TAccountMarketAuthority,\n TAccountMarket,\n TAccountOption\n >);\n}\n\nexport type ParsedSetWinningOptionInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n marketAuthority: TAccountMetas[0];\n market: TAccountMetas[1];\n option: TAccountMetas[2];\n };\n data: SetWinningOptionInstructionData;\n};\n\nexport function parseSetWinningOptionInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedSetWinningOptionInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 3) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n marketAuthority: getNextAccount(),\n market: getNextAccount(),\n option: getNextAccount(),\n },\n data: getSetWinningOptionInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const STAKE_DISCRIMINATOR = new Uint8Array([\n 206, 176, 202, 18, 200, 209, 179, 108,\n]);\n\nexport function getStakeDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(STAKE_DISCRIMINATOR);\n}\n\nexport type StakeInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountSignerTokenAccount extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TAccountSignPdaAccount extends string | AccountMeta<string> = string,\n TAccountMxeAccount extends string | AccountMeta<string> = string,\n TAccountMempoolAccount extends string | AccountMeta<string> = string,\n TAccountExecutingPool extends string | AccountMeta<string> = string,\n TAccountComputationAccount extends string | AccountMeta<string> = string,\n TAccountCompDefAccount extends string | AccountMeta<string> = string,\n TAccountClusterAccount extends string | AccountMeta<string> = string,\n TAccountPoolAccount extends string | AccountMeta<string> =\n 'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC',\n TAccountClockAccount extends string | AccountMeta<string> =\n '7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot',\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TAccountArciumProgram extends string | AccountMeta<string> =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? ReadonlySignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountSignerTokenAccount extends string\n ? WritableAccount<TAccountSignerTokenAccount>\n : TAccountSignerTokenAccount,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountSignPdaAccount extends string\n ? WritableAccount<TAccountSignPdaAccount>\n : TAccountSignPdaAccount,\n TAccountMxeAccount extends string\n ? ReadonlyAccount<TAccountMxeAccount>\n : TAccountMxeAccount,\n TAccountMempoolAccount extends string\n ? WritableAccount<TAccountMempoolAccount>\n : TAccountMempoolAccount,\n TAccountExecutingPool extends string\n ? WritableAccount<TAccountExecutingPool>\n : TAccountExecutingPool,\n TAccountComputationAccount extends string\n ? WritableAccount<TAccountComputationAccount>\n : TAccountComputationAccount,\n TAccountCompDefAccount extends string\n ? ReadonlyAccount<TAccountCompDefAccount>\n : TAccountCompDefAccount,\n TAccountClusterAccount extends string\n ? WritableAccount<TAccountClusterAccount>\n : TAccountClusterAccount,\n TAccountPoolAccount extends string\n ? WritableAccount<TAccountPoolAccount>\n : TAccountPoolAccount,\n TAccountClockAccount extends string\n ? WritableAccount<TAccountClockAccount>\n : TAccountClockAccount,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountArciumProgram extends string\n ? ReadonlyAccount<TAccountArciumProgram>\n : TAccountArciumProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type StakeInstructionData = {\n discriminator: ReadonlyUint8Array;\n computationOffset: bigint;\n stakeAccountId: number;\n amount: bigint;\n selectedOptionCiphertext: Array<number>;\n inputNonce: bigint;\n authorizedReaderNonce: bigint;\n userPubkey: Array<number>;\n stateNonce: bigint;\n};\n\nexport type StakeInstructionDataArgs = {\n computationOffset: number | bigint;\n stakeAccountId: number;\n amount: number | bigint;\n selectedOptionCiphertext: Array<number>;\n inputNonce: number | bigint;\n authorizedReaderNonce: number | bigint;\n userPubkey: Array<number>;\n stateNonce: number | bigint;\n};\n\nexport function getStakeInstructionDataEncoder(): FixedSizeEncoder<StakeInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['computationOffset', getU64Encoder()],\n ['stakeAccountId', getU32Encoder()],\n ['amount', getU64Encoder()],\n [\n 'selectedOptionCiphertext',\n getArrayEncoder(getU8Encoder(), { size: 32 }),\n ],\n ['inputNonce', getU128Encoder()],\n ['authorizedReaderNonce', getU128Encoder()],\n ['userPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['stateNonce', getU128Encoder()],\n ]),\n (value) => ({ ...value, discriminator: STAKE_DISCRIMINATOR })\n );\n}\n\nexport function getStakeInstructionDataDecoder(): FixedSizeDecoder<StakeInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['computationOffset', getU64Decoder()],\n ['stakeAccountId', getU32Decoder()],\n ['amount', getU64Decoder()],\n ['selectedOptionCiphertext', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['inputNonce', getU128Decoder()],\n ['authorizedReaderNonce', getU128Decoder()],\n ['userPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['stateNonce', getU128Decoder()],\n ]);\n}\n\nexport function getStakeInstructionDataCodec(): FixedSizeCodec<\n StakeInstructionDataArgs,\n StakeInstructionData\n> {\n return combineCodec(\n getStakeInstructionDataEncoder(),\n getStakeInstructionDataDecoder()\n );\n}\n\nexport type StakeAsyncInput<\n TAccountSigner extends string = string,\n TAccountPayer extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSignPdaAccount extends string = string,\n TAccountMxeAccount extends string = string,\n TAccountMempoolAccount extends string = string,\n TAccountExecutingPool extends string = string,\n TAccountComputationAccount extends string = string,\n TAccountCompDefAccount extends string = string,\n TAccountClusterAccount extends string = string,\n TAccountPoolAccount extends string = string,\n TAccountClockAccount extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountArciumProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n payer: TransactionSigner<TAccountPayer>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n tokenMint: Address<TAccountTokenMint>;\n /** Funds the stake. */\n signerTokenAccount: Address<TAccountSignerTokenAccount>;\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n signPdaAccount?: Address<TAccountSignPdaAccount>;\n mxeAccount: Address<TAccountMxeAccount>;\n mempoolAccount: Address<TAccountMempoolAccount>;\n executingPool: Address<TAccountExecutingPool>;\n computationAccount: Address<TAccountComputationAccount>;\n compDefAccount: Address<TAccountCompDefAccount>;\n clusterAccount: Address<TAccountClusterAccount>;\n poolAccount?: Address<TAccountPoolAccount>;\n clockAccount?: Address<TAccountClockAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n arciumProgram?: Address<TAccountArciumProgram>;\n computationOffset: StakeInstructionDataArgs['computationOffset'];\n stakeAccountId: StakeInstructionDataArgs['stakeAccountId'];\n amount: StakeInstructionDataArgs['amount'];\n selectedOptionCiphertext: StakeInstructionDataArgs['selectedOptionCiphertext'];\n inputNonce: StakeInstructionDataArgs['inputNonce'];\n authorizedReaderNonce: StakeInstructionDataArgs['authorizedReaderNonce'];\n userPubkey: StakeInstructionDataArgs['userPubkey'];\n stateNonce: StakeInstructionDataArgs['stateNonce'];\n};\n\nexport async function getStakeInstructionAsync<\n TAccountSigner extends string,\n TAccountPayer extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenMint extends string,\n TAccountSignerTokenAccount extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TAccountSignPdaAccount extends string,\n TAccountMxeAccount extends string,\n TAccountMempoolAccount extends string,\n TAccountExecutingPool extends string,\n TAccountComputationAccount extends string,\n TAccountCompDefAccount extends string,\n TAccountClusterAccount extends string,\n TAccountPoolAccount extends string,\n TAccountClockAccount extends string,\n TAccountSystemProgram extends string,\n TAccountArciumProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: StakeAsyncInput<\n TAccountSigner,\n TAccountPayer,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n StakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountPayer,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: false },\n payer: { value: input.payer ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n signerTokenAccount: {\n value: input.signerTokenAccount ?? null,\n isWritable: true,\n },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n signPdaAccount: { value: input.signPdaAccount ?? null, isWritable: true },\n mxeAccount: { value: input.mxeAccount ?? null, isWritable: false },\n mempoolAccount: { value: input.mempoolAccount ?? null, isWritable: true },\n executingPool: { value: input.executingPool ?? null, isWritable: true },\n computationAccount: {\n value: input.computationAccount ?? null,\n isWritable: true,\n },\n compDefAccount: { value: input.compDefAccount ?? null, isWritable: false },\n clusterAccount: { value: input.clusterAccount ?? null, isWritable: true },\n poolAccount: { value: input.poolAccount ?? null, isWritable: true },\n clockAccount: { value: input.clockAccount ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n arciumProgram: { value: input.arciumProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.signPdaAccount.value) {\n accounts.signPdaAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 65, 114, 99, 105, 117, 109, 83, 105, 103, 110, 101, 114, 65, 99, 99,\n 111, 117, 110, 116,\n ])\n ),\n ],\n });\n }\n if (!accounts.poolAccount.value) {\n accounts.poolAccount.value =\n 'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC' as Address<'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC'>;\n }\n if (!accounts.clockAccount.value) {\n accounts.clockAccount.value =\n '7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot' as Address<'7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n if (!accounts.arciumProgram.value) {\n accounts.arciumProgram.value =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ' as Address<'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.signerTokenAccount),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.signPdaAccount),\n getAccountMeta(accounts.mxeAccount),\n getAccountMeta(accounts.mempoolAccount),\n getAccountMeta(accounts.executingPool),\n getAccountMeta(accounts.computationAccount),\n getAccountMeta(accounts.compDefAccount),\n getAccountMeta(accounts.clusterAccount),\n getAccountMeta(accounts.poolAccount),\n getAccountMeta(accounts.clockAccount),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.arciumProgram),\n ],\n data: getStakeInstructionDataEncoder().encode(\n args as StakeInstructionDataArgs\n ),\n programAddress,\n } as StakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountPayer,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >);\n}\n\nexport type StakeInput<\n TAccountSigner extends string = string,\n TAccountPayer extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSignPdaAccount extends string = string,\n TAccountMxeAccount extends string = string,\n TAccountMempoolAccount extends string = string,\n TAccountExecutingPool extends string = string,\n TAccountComputationAccount extends string = string,\n TAccountCompDefAccount extends string = string,\n TAccountClusterAccount extends string = string,\n TAccountPoolAccount extends string = string,\n TAccountClockAccount extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountArciumProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n payer: TransactionSigner<TAccountPayer>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n tokenMint: Address<TAccountTokenMint>;\n /** Funds the stake. */\n signerTokenAccount: Address<TAccountSignerTokenAccount>;\n marketTokenAta: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n signPdaAccount: Address<TAccountSignPdaAccount>;\n mxeAccount: Address<TAccountMxeAccount>;\n mempoolAccount: Address<TAccountMempoolAccount>;\n executingPool: Address<TAccountExecutingPool>;\n computationAccount: Address<TAccountComputationAccount>;\n compDefAccount: Address<TAccountCompDefAccount>;\n clusterAccount: Address<TAccountClusterAccount>;\n poolAccount?: Address<TAccountPoolAccount>;\n clockAccount?: Address<TAccountClockAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n arciumProgram?: Address<TAccountArciumProgram>;\n computationOffset: StakeInstructionDataArgs['computationOffset'];\n stakeAccountId: StakeInstructionDataArgs['stakeAccountId'];\n amount: StakeInstructionDataArgs['amount'];\n selectedOptionCiphertext: StakeInstructionDataArgs['selectedOptionCiphertext'];\n inputNonce: StakeInstructionDataArgs['inputNonce'];\n authorizedReaderNonce: StakeInstructionDataArgs['authorizedReaderNonce'];\n userPubkey: StakeInstructionDataArgs['userPubkey'];\n stateNonce: StakeInstructionDataArgs['stateNonce'];\n};\n\nexport function getStakeInstruction<\n TAccountSigner extends string,\n TAccountPayer extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenMint extends string,\n TAccountSignerTokenAccount extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TAccountSignPdaAccount extends string,\n TAccountMxeAccount extends string,\n TAccountMempoolAccount extends string,\n TAccountExecutingPool extends string,\n TAccountComputationAccount extends string,\n TAccountCompDefAccount extends string,\n TAccountClusterAccount extends string,\n TAccountPoolAccount extends string,\n TAccountClockAccount extends string,\n TAccountSystemProgram extends string,\n TAccountArciumProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: StakeInput<\n TAccountSigner,\n TAccountPayer,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): StakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountPayer,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: false },\n payer: { value: input.payer ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n signerTokenAccount: {\n value: input.signerTokenAccount ?? null,\n isWritable: true,\n },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n signPdaAccount: { value: input.signPdaAccount ?? null, isWritable: true },\n mxeAccount: { value: input.mxeAccount ?? null, isWritable: false },\n mempoolAccount: { value: input.mempoolAccount ?? null, isWritable: true },\n executingPool: { value: input.executingPool ?? null, isWritable: true },\n computationAccount: {\n value: input.computationAccount ?? null,\n isWritable: true,\n },\n compDefAccount: { value: input.compDefAccount ?? null, isWritable: false },\n clusterAccount: { value: input.clusterAccount ?? null, isWritable: true },\n poolAccount: { value: input.poolAccount ?? null, isWritable: true },\n clockAccount: { value: input.clockAccount ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n arciumProgram: { value: input.arciumProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.poolAccount.value) {\n accounts.poolAccount.value =\n 'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC' as Address<'G2sRWJvi3xoyh5k2gY49eG9L8YhAEWQPtNb1zb1GXTtC'>;\n }\n if (!accounts.clockAccount.value) {\n accounts.clockAccount.value =\n '7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot' as Address<'7EbMUTLo5DjdzbN7s8BXeZwXzEwNQb1hScfRvWg8a6ot'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n if (!accounts.arciumProgram.value) {\n accounts.arciumProgram.value =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ' as Address<'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.signerTokenAccount),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.signPdaAccount),\n getAccountMeta(accounts.mxeAccount),\n getAccountMeta(accounts.mempoolAccount),\n getAccountMeta(accounts.executingPool),\n getAccountMeta(accounts.computationAccount),\n getAccountMeta(accounts.compDefAccount),\n getAccountMeta(accounts.clusterAccount),\n getAccountMeta(accounts.poolAccount),\n getAccountMeta(accounts.clockAccount),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.arciumProgram),\n ],\n data: getStakeInstructionDataEncoder().encode(\n args as StakeInstructionDataArgs\n ),\n programAddress,\n } as StakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountPayer,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountArciumProgram\n >);\n}\n\nexport type ParsedStakeInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n payer: TAccountMetas[1];\n market: TAccountMetas[2];\n stakeAccount: TAccountMetas[3];\n tokenMint: TAccountMetas[4];\n /** Funds the stake. */\n signerTokenAccount: TAccountMetas[5];\n marketTokenAta: TAccountMetas[6];\n tokenProgram: TAccountMetas[7];\n signPdaAccount: TAccountMetas[8];\n mxeAccount: TAccountMetas[9];\n mempoolAccount: TAccountMetas[10];\n executingPool: TAccountMetas[11];\n computationAccount: TAccountMetas[12];\n compDefAccount: TAccountMetas[13];\n clusterAccount: TAccountMetas[14];\n poolAccount: TAccountMetas[15];\n clockAccount: TAccountMetas[16];\n systemProgram: TAccountMetas[17];\n arciumProgram: TAccountMetas[18];\n };\n data: StakeInstructionData;\n};\n\nexport function parseStakeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedStakeInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 19) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n payer: getNextAccount(),\n market: getNextAccount(),\n stakeAccount: getNextAccount(),\n tokenMint: getNextAccount(),\n signerTokenAccount: getNextAccount(),\n marketTokenAta: getNextAccount(),\n tokenProgram: getNextAccount(),\n signPdaAccount: getNextAccount(),\n mxeAccount: getNextAccount(),\n mempoolAccount: getNextAccount(),\n executingPool: getNextAccount(),\n computationAccount: getNextAccount(),\n compDefAccount: getNextAccount(),\n clusterAccount: getNextAccount(),\n poolAccount: getNextAccount(),\n clockAccount: getNextAccount(),\n systemProgram: getNextAccount(),\n arciumProgram: getNextAccount(),\n },\n data: getStakeInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getDiscriminatedUnionDecoder,\n getDiscriminatedUnionEncoder,\n getStructDecoder,\n getStructEncoder,\n getTupleDecoder,\n getTupleEncoder,\n getU8Decoder,\n getU8Encoder,\n getUnitDecoder,\n getUnitEncoder,\n transformEncoder,\n type AccountMeta,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n getStakeOutputDecoder,\n getStakeOutputEncoder,\n type StakeOutput,\n type StakeOutputArgs,\n} from '../types';\n\nexport const STAKE_CALLBACK_DISCRIMINATOR = new Uint8Array([\n 40, 220, 36, 47, 6, 116, 132, 89,\n]);\n\nexport function getStakeCallbackDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n STAKE_CALLBACK_DISCRIMINATOR\n );\n}\n\nexport type StakeCallbackInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountArciumProgram extends string | AccountMeta<string> =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ',\n TAccountCompDefAccount extends string | AccountMeta<string> = string,\n TAccountMxeAccount extends string | AccountMeta<string> = string,\n TAccountComputationAccount extends string | AccountMeta<string> = string,\n TAccountClusterAccount extends string | AccountMeta<string> = string,\n TAccountInstructionsSysvar extends string | AccountMeta<string> =\n 'Sysvar1nstructions1111111111111111111111111',\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountArciumProgram extends string\n ? ReadonlyAccount<TAccountArciumProgram>\n : TAccountArciumProgram,\n TAccountCompDefAccount extends string\n ? ReadonlyAccount<TAccountCompDefAccount>\n : TAccountCompDefAccount,\n TAccountMxeAccount extends string\n ? ReadonlyAccount<TAccountMxeAccount>\n : TAccountMxeAccount,\n TAccountComputationAccount extends string\n ? ReadonlyAccount<TAccountComputationAccount>\n : TAccountComputationAccount,\n TAccountClusterAccount extends string\n ? ReadonlyAccount<TAccountClusterAccount>\n : TAccountClusterAccount,\n TAccountInstructionsSysvar extends string\n ? ReadonlyAccount<TAccountInstructionsSysvar>\n : TAccountInstructionsSysvar,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type StakeCallbackInstructionData = {\n discriminator: ReadonlyUint8Array;\n output:\n | { __kind: 'Success'; fields: readonly [StakeOutput, Array<number>] }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [StakeOutput];\n };\n};\n\nexport type StakeCallbackInstructionDataArgs = {\n output:\n | { __kind: 'Success'; fields: readonly [StakeOutputArgs, Array<number>] }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [StakeOutputArgs];\n };\n};\n\nexport function getStakeCallbackInstructionDataEncoder(): Encoder<StakeCallbackInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n [\n 'output',\n getDiscriminatedUnionEncoder([\n [\n 'Success',\n getStructEncoder([\n [\n 'fields',\n getTupleEncoder([\n getStakeOutputEncoder(),\n getArrayEncoder(getU8Encoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitEncoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructEncoder([\n ['fields', getTupleEncoder([getStakeOutputEncoder()])],\n ]),\n ],\n ]),\n ],\n ]),\n (value) => ({ ...value, discriminator: STAKE_CALLBACK_DISCRIMINATOR })\n );\n}\n\nexport function getStakeCallbackInstructionDataDecoder(): Decoder<StakeCallbackInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n [\n 'output',\n getDiscriminatedUnionDecoder([\n [\n 'Success',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([\n getStakeOutputDecoder(),\n getArrayDecoder(getU8Decoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitDecoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructDecoder([\n ['fields', getTupleDecoder([getStakeOutputDecoder()])],\n ]),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getStakeCallbackInstructionDataCodec(): Codec<\n StakeCallbackInstructionDataArgs,\n StakeCallbackInstructionData\n> {\n return combineCodec(\n getStakeCallbackInstructionDataEncoder(),\n getStakeCallbackInstructionDataDecoder()\n );\n}\n\nexport type StakeCallbackInput<\n TAccountArciumProgram extends string = string,\n TAccountCompDefAccount extends string = string,\n TAccountMxeAccount extends string = string,\n TAccountComputationAccount extends string = string,\n TAccountClusterAccount extends string = string,\n TAccountInstructionsSysvar extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountMarket extends string = string,\n> = {\n arciumProgram?: Address<TAccountArciumProgram>;\n compDefAccount: Address<TAccountCompDefAccount>;\n mxeAccount: Address<TAccountMxeAccount>;\n computationAccount: Address<TAccountComputationAccount>;\n clusterAccount: Address<TAccountClusterAccount>;\n instructionsSysvar?: Address<TAccountInstructionsSysvar>;\n stakeAccount: Address<TAccountStakeAccount>;\n market: Address<TAccountMarket>;\n output: StakeCallbackInstructionDataArgs['output'];\n};\n\nexport function getStakeCallbackInstruction<\n TAccountArciumProgram extends string,\n TAccountCompDefAccount extends string,\n TAccountMxeAccount extends string,\n TAccountComputationAccount extends string,\n TAccountClusterAccount extends string,\n TAccountInstructionsSysvar extends string,\n TAccountStakeAccount extends string,\n TAccountMarket extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: StakeCallbackInput<\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountStakeAccount,\n TAccountMarket\n >,\n config?: { programAddress?: TProgramAddress }\n): StakeCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountStakeAccount,\n TAccountMarket\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n arciumProgram: { value: input.arciumProgram ?? null, isWritable: false },\n compDefAccount: { value: input.compDefAccount ?? null, isWritable: false },\n mxeAccount: { value: input.mxeAccount ?? null, isWritable: false },\n computationAccount: {\n value: input.computationAccount ?? null,\n isWritable: false,\n },\n clusterAccount: { value: input.clusterAccount ?? null, isWritable: false },\n instructionsSysvar: {\n value: input.instructionsSysvar ?? null,\n isWritable: false,\n },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.arciumProgram.value) {\n accounts.arciumProgram.value =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ' as Address<'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ'>;\n }\n if (!accounts.instructionsSysvar.value) {\n accounts.instructionsSysvar.value =\n 'Sysvar1nstructions1111111111111111111111111' as Address<'Sysvar1nstructions1111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.arciumProgram),\n getAccountMeta(accounts.compDefAccount),\n getAccountMeta(accounts.mxeAccount),\n getAccountMeta(accounts.computationAccount),\n getAccountMeta(accounts.clusterAccount),\n getAccountMeta(accounts.instructionsSysvar),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.market),\n ],\n data: getStakeCallbackInstructionDataEncoder().encode(\n args as StakeCallbackInstructionDataArgs\n ),\n programAddress,\n } as StakeCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountStakeAccount,\n TAccountMarket\n >);\n}\n\nexport type ParsedStakeCallbackInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n arciumProgram: TAccountMetas[0];\n compDefAccount: TAccountMetas[1];\n mxeAccount: TAccountMetas[2];\n computationAccount: TAccountMetas[3];\n clusterAccount: TAccountMetas[4];\n instructionsSysvar: TAccountMetas[5];\n stakeAccount: TAccountMetas[6];\n market: TAccountMetas[7];\n };\n data: StakeCallbackInstructionData;\n};\n\nexport function parseStakeCallbackInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedStakeCallbackInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 8) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n arciumProgram: getNextAccount(),\n compDefAccount: getNextAccount(),\n mxeAccount: getNextAccount(),\n computationAccount: getNextAccount(),\n clusterAccount: getNextAccount(),\n instructionsSysvar: getNextAccount(),\n stakeAccount: getNextAccount(),\n market: getNextAccount(),\n },\n data: getStakeCallbackInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const STAKE_COMP_DEF_DISCRIMINATOR = new Uint8Array([\n 156, 5, 60, 126, 142, 149, 1, 130,\n]);\n\nexport function getStakeCompDefDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n STAKE_COMP_DEF_DISCRIMINATOR\n );\n}\n\nexport type StakeCompDefInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountMxeAccount extends string | AccountMeta<string> = string,\n TAccountCompDefAccount extends string | AccountMeta<string> = string,\n TAccountAddressLookupTable extends string | AccountMeta<string> = string,\n TAccountLutProgram extends string | AccountMeta<string> =\n 'AddressLookupTab1e1111111111111111111111111',\n TAccountArciumProgram extends string | AccountMeta<string> =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ',\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\n TAccountMxeAccount extends string\n ? WritableAccount<TAccountMxeAccount>\n : TAccountMxeAccount,\n TAccountCompDefAccount extends string\n ? WritableAccount<TAccountCompDefAccount>\n : TAccountCompDefAccount,\n TAccountAddressLookupTable extends string\n ? WritableAccount<TAccountAddressLookupTable>\n : TAccountAddressLookupTable,\n TAccountLutProgram extends string\n ? ReadonlyAccount<TAccountLutProgram>\n : TAccountLutProgram,\n TAccountArciumProgram extends string\n ? ReadonlyAccount<TAccountArciumProgram>\n : TAccountArciumProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type StakeCompDefInstructionData = { discriminator: ReadonlyUint8Array };\n\nexport type StakeCompDefInstructionDataArgs = {};\n\nexport function getStakeCompDefInstructionDataEncoder(): FixedSizeEncoder<StakeCompDefInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: STAKE_COMP_DEF_DISCRIMINATOR })\n );\n}\n\nexport function getStakeCompDefInstructionDataDecoder(): FixedSizeDecoder<StakeCompDefInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getStakeCompDefInstructionDataCodec(): FixedSizeCodec<\n StakeCompDefInstructionDataArgs,\n StakeCompDefInstructionData\n> {\n return combineCodec(\n getStakeCompDefInstructionDataEncoder(),\n getStakeCompDefInstructionDataDecoder()\n );\n}\n\nexport type StakeCompDefInput<\n TAccountPayer extends string = string,\n TAccountMxeAccount extends string = string,\n TAccountCompDefAccount extends string = string,\n TAccountAddressLookupTable extends string = string,\n TAccountLutProgram extends string = string,\n TAccountArciumProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n mxeAccount: Address<TAccountMxeAccount>;\n compDefAccount: Address<TAccountCompDefAccount>;\n addressLookupTable: Address<TAccountAddressLookupTable>;\n lutProgram?: Address<TAccountLutProgram>;\n arciumProgram?: Address<TAccountArciumProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport function getStakeCompDefInstruction<\n TAccountPayer extends string,\n TAccountMxeAccount extends string,\n TAccountCompDefAccount extends string,\n TAccountAddressLookupTable extends string,\n TAccountLutProgram extends string,\n TAccountArciumProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: StakeCompDefInput<\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): StakeCompDefInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n payer: { value: input.payer ?? null, isWritable: true },\n mxeAccount: { value: input.mxeAccount ?? null, isWritable: true },\n compDefAccount: { value: input.compDefAccount ?? null, isWritable: true },\n addressLookupTable: {\n value: input.addressLookupTable ?? null,\n isWritable: true,\n },\n lutProgram: { value: input.lutProgram ?? null, isWritable: false },\n arciumProgram: { value: input.arciumProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.lutProgram.value) {\n accounts.lutProgram.value =\n 'AddressLookupTab1e1111111111111111111111111' as Address<'AddressLookupTab1e1111111111111111111111111'>;\n }\n if (!accounts.arciumProgram.value) {\n accounts.arciumProgram.value =\n 'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ' as Address<'Arcj82pX7HxYKLR92qvgZUAd7vGS1k4hQvAFcPATFdEQ'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.payer),\n getAccountMeta(accounts.mxeAccount),\n getAccountMeta(accounts.compDefAccount),\n getAccountMeta(accounts.addressLookupTable),\n getAccountMeta(accounts.lutProgram),\n getAccountMeta(accounts.arciumProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getStakeCompDefInstructionDataEncoder().encode({}),\n programAddress,\n } as StakeCompDefInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedStakeCompDefInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n payer: TAccountMetas[0];\n mxeAccount: TAccountMetas[1];\n compDefAccount: TAccountMetas[2];\n addressLookupTable: TAccountMetas[3];\n lutProgram: TAccountMetas[4];\n arciumProgram: TAccountMetas[5];\n systemProgram: TAccountMetas[6];\n };\n data: StakeCompDefInstructionData;\n};\n\nexport function parseStakeCompDefInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedStakeCompDefInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n payer: getNextAccount(),\n mxeAccount: getNextAccount(),\n compDefAccount: getNextAccount(),\n addressLookupTable: getNextAccount(),\n lutProgram: getNextAccount(),\n arciumProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getStakeCompDefInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const UNSTAKE_DISCRIMINATOR = new Uint8Array([\n 90, 95, 107, 42, 205, 124, 50, 225,\n]);\n\nexport function getUnstakeDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(UNSTAKE_DISCRIMINATOR);\n}\n\nexport type UnstakeInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountOwner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountOwnerTokenAccount extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSigner extends string\n ? WritableSignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountOwner extends string\n ? ReadonlyAccount<TAccountOwner>\n : TAccountOwner,\n TAccountMarket extends string\n ? ReadonlyAccount<TAccountMarket>\n : TAccountMarket,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountOwnerTokenAccount extends string\n ? WritableAccount<TAccountOwnerTokenAccount>\n : TAccountOwnerTokenAccount,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UnstakeInstructionData = {\n discriminator: ReadonlyUint8Array;\n stakeAccountId: number;\n};\n\nexport type UnstakeInstructionDataArgs = { stakeAccountId: number };\n\nexport function getUnstakeInstructionDataEncoder(): FixedSizeEncoder<UnstakeInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['stakeAccountId', getU32Encoder()],\n ]),\n (value) => ({ ...value, discriminator: UNSTAKE_DISCRIMINATOR })\n );\n}\n\nexport function getUnstakeInstructionDataDecoder(): FixedSizeDecoder<UnstakeInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['stakeAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getUnstakeInstructionDataCodec(): FixedSizeCodec<\n UnstakeInstructionDataArgs,\n UnstakeInstructionData\n> {\n return combineCodec(\n getUnstakeInstructionDataEncoder(),\n getUnstakeInstructionDataDecoder()\n );\n}\n\nexport type UnstakeAsyncInput<\n TAccountSigner extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountOwnerTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n owner: Address<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount?: Address<TAccountStakeAccount>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n /** Owner's token account to receive staked tokens */\n ownerTokenAccount: Address<TAccountOwnerTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n stakeAccountId: UnstakeInstructionDataArgs['stakeAccountId'];\n};\n\nexport async function getUnstakeInstructionAsync<\n TAccountSigner extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountOwnerTokenAccount extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: UnstakeAsyncInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n UnstakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: false },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n ownerTokenAccount: {\n value: input.ownerTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.stakeAccount.value) {\n accounts.stakeAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 116, 97, 107, 101, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.owner.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU32Encoder().encode(expectSome(args.stakeAccountId)),\n ],\n });\n }\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.ownerTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getUnstakeInstructionDataEncoder().encode(\n args as UnstakeInstructionDataArgs\n ),\n programAddress,\n } as UnstakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type UnstakeInput<\n TAccountSigner extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountOwnerTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n owner: Address<TAccountOwner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta: Address<TAccountMarketTokenAta>;\n /** Owner's token account to receive staked tokens */\n ownerTokenAccount: Address<TAccountOwnerTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n stakeAccountId: UnstakeInstructionDataArgs['stakeAccountId'];\n};\n\nexport function getUnstakeInstruction<\n TAccountSigner extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountOwnerTokenAccount extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: UnstakeInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): UnstakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n signer: { value: input.signer ?? null, isWritable: true },\n owner: { value: input.owner ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: false },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n ownerTokenAccount: {\n value: input.ownerTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.signer),\n getAccountMeta(accounts.owner),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.ownerTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getUnstakeInstructionDataEncoder().encode(\n args as UnstakeInstructionDataArgs\n ),\n programAddress,\n } as UnstakeInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedUnstakeInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n owner: TAccountMetas[1];\n market: TAccountMetas[2];\n stakeAccount: TAccountMetas[3];\n tokenMint: TAccountMetas[4];\n marketTokenAta: TAccountMetas[5];\n /** Owner's token account to receive staked tokens */\n ownerTokenAccount: TAccountMetas[6];\n tokenProgram: TAccountMetas[7];\n systemProgram: TAccountMetas[8];\n };\n data: UnstakeInstructionData;\n};\n\nexport function parseUnstakeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedUnstakeInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 9) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n owner: getNextAccount(),\n market: getNextAccount(),\n stakeAccount: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n ownerTokenAccount: getNextAccount(),\n tokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getUnstakeInstructionDataDecoder().decode(instruction.data),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_PLATFORM_CONFIG_DISCRIMINATOR = new Uint8Array([\n 195, 60, 76, 129, 146, 45, 67, 143,\n]);\n\nexport function getUpdatePlatformConfigDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n UPDATE_PLATFORM_CONFIG_DISCRIMINATOR\n );\n}\n\nexport type UpdatePlatformConfigInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountUpdateAuthority extends string | AccountMeta<string> = string,\n TAccountPlatformConfig extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountUpdateAuthority extends string\n ? ReadonlySignerAccount<TAccountUpdateAuthority> &\n AccountSignerMeta<TAccountUpdateAuthority>\n : TAccountUpdateAuthority,\n TAccountPlatformConfig extends string\n ? WritableAccount<TAccountPlatformConfig>\n : TAccountPlatformConfig,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UpdatePlatformConfigInstructionData = {\n discriminator: ReadonlyUint8Array;\n platformFeeBp: number;\n rewardPoolFeeBp: number;\n creatorFeeBp: number;\n revealAuthority: Address;\n minTimeToStakeSeconds: bigint;\n revealPeriodSeconds: bigint;\n marketResolutionDeadlineSeconds: bigint;\n};\n\nexport type UpdatePlatformConfigInstructionDataArgs = {\n platformFeeBp: number;\n rewardPoolFeeBp: number;\n creatorFeeBp: number;\n revealAuthority: Address;\n minTimeToStakeSeconds: number | bigint;\n revealPeriodSeconds: number | bigint;\n marketResolutionDeadlineSeconds: number | bigint;\n};\n\nexport function getUpdatePlatformConfigInstructionDataEncoder(): FixedSizeEncoder<UpdatePlatformConfigInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['platformFeeBp', getU16Encoder()],\n ['rewardPoolFeeBp', getU16Encoder()],\n ['creatorFeeBp', getU16Encoder()],\n ['revealAuthority', getAddressEncoder()],\n ['minTimeToStakeSeconds', getU64Encoder()],\n ['revealPeriodSeconds', getU64Encoder()],\n ['marketResolutionDeadlineSeconds', getU64Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: UPDATE_PLATFORM_CONFIG_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUpdatePlatformConfigInstructionDataDecoder(): FixedSizeDecoder<UpdatePlatformConfigInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['platformFeeBp', getU16Decoder()],\n ['rewardPoolFeeBp', getU16Decoder()],\n ['creatorFeeBp', getU16Decoder()],\n ['revealAuthority', getAddressDecoder()],\n ['minTimeToStakeSeconds', getU64Decoder()],\n ['revealPeriodSeconds', getU64Decoder()],\n ['marketResolutionDeadlineSeconds', getU64Decoder()],\n ]);\n}\n\nexport function getUpdatePlatformConfigInstructionDataCodec(): FixedSizeCodec<\n UpdatePlatformConfigInstructionDataArgs,\n UpdatePlatformConfigInstructionData\n> {\n return combineCodec(\n getUpdatePlatformConfigInstructionDataEncoder(),\n getUpdatePlatformConfigInstructionDataDecoder()\n );\n}\n\nexport type UpdatePlatformConfigInput<\n TAccountUpdateAuthority extends string = string,\n TAccountPlatformConfig extends string = string,\n> = {\n updateAuthority: TransactionSigner<TAccountUpdateAuthority>;\n platformConfig: Address<TAccountPlatformConfig>;\n platformFeeBp: UpdatePlatformConfigInstructionDataArgs['platformFeeBp'];\n rewardPoolFeeBp: UpdatePlatformConfigInstructionDataArgs['rewardPoolFeeBp'];\n creatorFeeBp: UpdatePlatformConfigInstructionDataArgs['creatorFeeBp'];\n revealAuthority: UpdatePlatformConfigInstructionDataArgs['revealAuthority'];\n minTimeToStakeSeconds: UpdatePlatformConfigInstructionDataArgs['minTimeToStakeSeconds'];\n revealPeriodSeconds: UpdatePlatformConfigInstructionDataArgs['revealPeriodSeconds'];\n marketResolutionDeadlineSeconds: UpdatePlatformConfigInstructionDataArgs['marketResolutionDeadlineSeconds'];\n};\n\nexport function getUpdatePlatformConfigInstruction<\n TAccountUpdateAuthority extends string,\n TAccountPlatformConfig extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: UpdatePlatformConfigInput<\n TAccountUpdateAuthority,\n TAccountPlatformConfig\n >,\n config?: { programAddress?: TProgramAddress }\n): UpdatePlatformConfigInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n updateAuthority: {\n value: input.updateAuthority ?? null,\n isWritable: false,\n },\n platformConfig: { value: input.platformConfig ?? null, isWritable: true },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.updateAuthority),\n getAccountMeta(accounts.platformConfig),\n ],\n data: getUpdatePlatformConfigInstructionDataEncoder().encode(\n args as UpdatePlatformConfigInstructionDataArgs\n ),\n programAddress,\n } as UpdatePlatformConfigInstruction<\n TProgramAddress,\n TAccountUpdateAuthority,\n TAccountPlatformConfig\n >);\n}\n\nexport type ParsedUpdatePlatformConfigInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n updateAuthority: TAccountMetas[0];\n platformConfig: TAccountMetas[1];\n };\n data: UpdatePlatformConfigInstructionData;\n};\n\nexport function parseUpdatePlatformConfigInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedUpdatePlatformConfigInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n updateAuthority: getNextAccount(),\n platformConfig: getNextAccount(),\n },\n data: getUpdatePlatformConfigInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\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 {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const WITHDRAW_REWARD_DISCRIMINATOR = new Uint8Array([\n 191, 187, 176, 137, 9, 25, 187, 244,\n]);\n\nexport function getWithdrawRewardDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n WITHDRAW_REWARD_DISCRIMINATOR\n );\n}\n\nexport type WithdrawRewardInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSponsor extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountSponsorAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountRefundTokenAccount extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSponsor extends string\n ? WritableSignerAccount<TAccountSponsor> &\n AccountSignerMeta<TAccountSponsor>\n : TAccountSponsor,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountSponsorAccount extends string\n ? WritableAccount<TAccountSponsorAccount>\n : TAccountSponsorAccount,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountRefundTokenAccount extends string\n ? WritableAccount<TAccountRefundTokenAccount>\n : TAccountRefundTokenAccount,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type WithdrawRewardInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type WithdrawRewardInstructionDataArgs = {};\n\nexport function getWithdrawRewardInstructionDataEncoder(): FixedSizeEncoder<WithdrawRewardInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: WITHDRAW_REWARD_DISCRIMINATOR })\n );\n}\n\nexport function getWithdrawRewardInstructionDataDecoder(): FixedSizeDecoder<WithdrawRewardInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getWithdrawRewardInstructionDataCodec(): FixedSizeCodec<\n WithdrawRewardInstructionDataArgs,\n WithdrawRewardInstructionData\n> {\n return combineCodec(\n getWithdrawRewardInstructionDataEncoder(),\n getWithdrawRewardInstructionDataDecoder()\n );\n}\n\nexport type WithdrawRewardAsyncInput<\n TAccountSponsor extends string = string,\n TAccountMarket extends string = string,\n TAccountSponsorAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountRefundTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n sponsor: TransactionSigner<TAccountSponsor>;\n market: Address<TAccountMarket>;\n sponsorAccount?: Address<TAccountSponsorAccount>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n /** Sponsor's destination for refunded reward tokens */\n refundTokenAccount: Address<TAccountRefundTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport async function getWithdrawRewardInstructionAsync<\n TAccountSponsor extends string,\n TAccountMarket extends string,\n TAccountSponsorAccount extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountRefundTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: WithdrawRewardAsyncInput<\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n WithdrawRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sponsor: { value: input.sponsor ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n sponsorAccount: { value: input.sponsorAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n refundTokenAccount: {\n value: input.refundTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.sponsorAccount.value) {\n accounts.sponsorAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([115, 112, 111, 110, 115, 111, 114])\n ),\n getAddressEncoder().encode(expectAddress(accounts.sponsor.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n ],\n });\n }\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.sponsor),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.sponsorAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.refundTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getWithdrawRewardInstructionDataEncoder().encode({}),\n programAddress,\n } as WithdrawRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type WithdrawRewardInput<\n TAccountSponsor extends string = string,\n TAccountMarket extends string = string,\n TAccountSponsorAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountRefundTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n sponsor: TransactionSigner<TAccountSponsor>;\n market: Address<TAccountMarket>;\n sponsorAccount: Address<TAccountSponsorAccount>;\n tokenMint: Address<TAccountTokenMint>;\n marketTokenAta: Address<TAccountMarketTokenAta>;\n /** Sponsor's destination for refunded reward tokens */\n refundTokenAccount: Address<TAccountRefundTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport function getWithdrawRewardInstruction<\n TAccountSponsor extends string,\n TAccountMarket extends string,\n TAccountSponsorAccount extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountRefundTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: WithdrawRewardInput<\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): WithdrawRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sponsor: { value: input.sponsor ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n sponsorAccount: { value: input.sponsorAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n refundTokenAccount: {\n value: input.refundTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.sponsor),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.sponsorAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.refundTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getWithdrawRewardInstructionDataEncoder().encode({}),\n programAddress,\n } as WithdrawRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type ParsedWithdrawRewardInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n sponsor: TAccountMetas[0];\n market: TAccountMetas[1];\n sponsorAccount: TAccountMetas[2];\n tokenMint: TAccountMetas[3];\n marketTokenAta: TAccountMetas[4];\n /** Sponsor's destination for refunded reward tokens */\n refundTokenAccount: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n };\n data: WithdrawRewardInstructionData;\n};\n\nexport function parseWithdrawRewardInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedWithdrawRewardInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n sponsor: getNextAccount(),\n market: getNextAccount(),\n sponsorAccount: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n refundTokenAccount: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getWithdrawRewardInstructionDataDecoder().decode(instruction.data),\n };\n}\n","import { randomBytes } from \"crypto\";\n\n/**\n * Generates a random computation offset for Arcium computations.\n * Returns a BigInt from 8 random bytes.\n */\nexport function randomComputationOffset(): bigint {\n return BigInt(\"0x\" + randomBytes(8).toString(\"hex\"));\n}\n\n/**\n * Generates a random u128 state nonce for encrypted token account initialization.\n * Returns a BigInt from 16 random bytes.\n */\nexport function randomStateNonce(): bigint {\n return BigInt(\"0x\" + randomBytes(16).toString(\"hex\"));\n}\n\n/**\n * Type that accepts either a number[] or Uint8Array for byte array parameters.\n * Use with toNumberArray() to convert before passing to generated instructions.\n */\nexport type ByteArray = number[] | Uint8Array<ArrayBufferLike>;\n\n/**\n * Converts a ByteArray (number[] or Uint8Array) to number[].\n * Generated Codama instructions expect number[], but Uint8Array is often more convenient.\n */\nexport function toNumberArray(bytes: ByteArray): number[] {\n if (Array.isArray(bytes)) {\n return bytes;\n }\n return Array.from(bytes);\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getCreateMarketInstructionAsync,\n type CreateMarketInstruction,\n} from \"../generated\";\nimport { type ByteArray, toNumberArray } from \"../utils\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface CreateMarketParams extends BaseInstructionParams {\n creator: TransactionSigner;\n platformConfig: Address;\n tokenMint: Address;\n tokenProgram: Address;\n marketIndex: bigint;\n marketAuthority: Address;\n authorizedReaderPubkey: ByteArray;\n earlinessCutoffSeconds: bigint;\n earlinessMultiplier: number;\n minStakeAmount: bigint;\n creatorFeeClaimer: Address;\n}\n\nexport async function createMarket(\n input: CreateMarketParams,\n): Promise<CreateMarketInstruction<string>> {\n const {\n programAddress,\n authorizedReaderPubkey,\n ...rest\n } = input;\n\n return getCreateMarketInstructionAsync(\n {\n ...rest,\n authorizedReaderPubkey: toNumberArray(authorizedReaderPubkey),\n },\n programAddress ? { programAddress } : undefined,\n );\n}\n","import {\n type TransactionSigner,\n type Address,\n address,\n type Instruction,\n SolanaRpcApi,\n Rpc,\n assertAccountExists,\n fetchEncodedAccount,\n} from \"@solana/kit\";\nimport {\n getMXEAccAddress,\n getCompDefAccAddress,\n getCompDefAccOffset,\n getLookupTableAddress,\n} from \"@arcium-hq/client\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport {\n getStakeCompDefInstruction,\n getRevealStakeCompDefInstruction,\n OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n getMXEAccountDecoder,\n} from \"../generated\";\nimport { BN } from \"bn.js\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport type CompDefCircuitName =\n | \"stake\"\n | \"reveal_stake\";\n\nexport const ALL_COMP_DEF_CIRCUITS: CompDefCircuitName[] = [\n \"stake\",\n \"reveal_stake\",\n];\n\n\nfunction toAddress(pubkey: { toBase58(): string }): Address {\n return address(pubkey.toBase58());\n}\n\nexport interface InitCompDefConfig extends BaseInstructionParams {}\n\nexport async function getMxeAccount(rpc: Rpc<SolanaRpcApi>, programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS) {\n const programIdLegacy = new PublicKey(programId);\n const mxeAddress = toAddress(getMXEAccAddress(programIdLegacy));\n const encoded = await fetchEncodedAccount(rpc, mxeAddress);\n assertAccountExists(encoded);\n const data = getMXEAccountDecoder().decode(encoded.data.slice(8));\n return { address: mxeAddress, data };\n}\n\nexport function getCompDefAccount(\n circuitName: CompDefCircuitName,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Address {\n const programIdLegacy = new PublicKey(programId);\n const offset = getCompDefAccOffset(circuitName);\n return toAddress(\n getCompDefAccAddress(programIdLegacy, Buffer.from(offset).readUInt32LE())\n );\n}\n\n\nexport function getCompDefOffsetNumber(circuitName: CompDefCircuitName): number {\n const offset = getCompDefAccOffset(circuitName);\n return Buffer.from(offset).readUInt32LE();\n}\n\n\nexport async function getInitCompDefInstruction(\n rpc: Rpc<SolanaRpcApi>,\n payer: TransactionSigner,\n circuitName: CompDefCircuitName,\n config: InitCompDefConfig = {}\n): Promise<Instruction> {\n const programId = config.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n const mxeAccount = await getMxeAccount(rpc, programId);\n const compDefAccount = getCompDefAccount(circuitName, programId);\n const lutAddress = getLookupTableAddress(\n new PublicKey(programId.toString()),\n new BN(mxeAccount.data.lutOffsetSlot)\n );\n\n const baseInput = {\n payer,\n mxeAccount: mxeAccount.address,\n compDefAccount,\n addressLookupTable: toAddress(lutAddress),\n\n };\n\n switch (circuitName) {\n case \"stake\":\n return getStakeCompDefInstruction(baseInput, { programAddress: programId });\n\n case \"reveal_stake\":\n return getRevealStakeCompDefInstruction(baseInput, { programAddress: programId });\n\n default:\n throw new Error(`Unknown circuit: ${circuitName}`);\n }\n}\n","import { address, Address } from \"@solana/kit\";\nimport {\n getMXEAccAddress,\n getMempoolAccAddress,\n getExecutingPoolAccAddress,\n getComputationAccAddress,\n getClusterAccAddress,\n getCompDefAccAddress,\n getCompDefAccOffset,\n} from \"@arcium-hq/client\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport BN from \"bn.js\";\nimport {\n OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n} from \"../generated\";\n\nfunction toAddress(pubkey: { toBase58(): string }): Address {\n return address(pubkey.toBase58());\n}\nexport interface ArciumConfig {\n clusterOffset: number;\n computationOffset: bigint;\n programId?: Address;\n}\n\nexport function getComputeAccounts(ixName: string, config: ArciumConfig) {\n const programId = config.programId ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n const programIdLegacy = new PublicKey(programId)\n const { clusterOffset, computationOffset } = config;\n const mxeAccount = toAddress(getMXEAccAddress(programIdLegacy));\n const clusterAccount = toAddress(getClusterAccAddress(clusterOffset));\n const mempoolAccount = toAddress(getMempoolAccAddress(clusterOffset));\n const executingPool = toAddress(getExecutingPoolAccAddress(clusterOffset));\n\n // Convert bigint to BN correctly - BN doesn't support native bigint directly\n const computationOffsetBN = new BN(computationOffset.toString());\n\n const computationAccount = toAddress(\n getComputationAccAddress(clusterOffset, computationOffsetBN)\n );\n const compDefAccount = toAddress(\n getCompDefAccAddress(\n programIdLegacy,\n Buffer.from(getCompDefAccOffset(ixName)).readUInt32LE()\n )\n );\n\n return {\n mxeAccount,\n clusterAccount,\n mempoolAccount,\n executingPool,\n computationAccount,\n compDefAccount,\n computationOffset,\n }\n}","import { type Address, type Rpc, type Signature, type SolanaRpcApi } from \"@solana/kit\";\n\nconst TIMEOUT_SLOTS = 180;\nconst DEFAULT_POLL_INTERVAL = 1000;\nconst DEFAULT_SIGNATURE_LIMIT = 100;\n\nexport interface AwaitComputationOptions {\n commitment?: \"confirmed\" | \"finalized\";\n pollInterval?: number;\n transactionCountLimit?: number;\n}\n\n/**\n * Waits for a single Arcium computation to be finalized.\n */\nexport const awaitComputationFinalization = async (\n rpc: Rpc<SolanaRpcApi>,\n computationAccount: Address,\n invocationSignature: Signature,\n options?: AwaitComputationOptions\n): Promise<Signature> => {\n const commitment = options?.commitment ?? \"confirmed\";\n const pollInterval = options?.pollInterval ?? DEFAULT_POLL_INTERVAL;\n const limit = options?.transactionCountLimit ?? DEFAULT_SIGNATURE_LIMIT;\n\n const invocationTx = await rpc.getTransaction(invocationSignature, {\n commitment,\n encoding: \"json\",\n maxSupportedTransactionVersion: 0,\n }).send();\n\n if (!invocationTx) {\n throw new Error(`Invocation transaction ${invocationSignature} not found`);\n }\n\n const deadlineSlot = invocationTx.slot + BigInt(TIMEOUT_SLOTS);\n\n for (;;) {\n const signatures = await rpc.getSignaturesForAddress(computationAccount, {\n limit,\n commitment,\n }).send();\n\n for (const sigInfo of signatures) {\n if (sigInfo.signature === invocationSignature) continue;\n if (sigInfo.err === null) {\n return sigInfo.signature;\n }\n }\n\n const currentSlot = await rpc.getSlot({ commitment }).send();\n if (currentSlot > deadlineSlot) {\n throw new Error(\n `Computation ${computationAccount} not finalized within ${TIMEOUT_SLOTS} slots of invocation ${invocationSignature}`\n );\n }\n\n await new Promise((resolve) => setTimeout(resolve, pollInterval));\n }\n};\n","import { type TransactionSigner, type Address, type Rpc, type Signature, type SolanaRpcApi } from \"@solana/kit\";\nimport {\n getStakeInstructionAsync,\n type StakeInstruction,\n} from \"../generated\";\nimport { type ArciumConfig, getComputeAccounts } from \"../arcium/computeAccounts\";\nimport {\n awaitComputationFinalization,\n type AwaitComputationOptions,\n} from \"../arcium/awaitFinalizeComputation\";\nimport { type ByteArray, toNumberArray } from \"../utils\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface StakeParams extends BaseInstructionParams {\n signer: TransactionSigner;\n payer: TransactionSigner;\n market: Address;\n /** PDA of the stake_account being staked into. Use `getStakeAccountAddress(owner, market, id)`. */\n stakeAccount: Address;\n stakeAccountId: number;\n tokenMint: Address;\n signerTokenAccount: Address;\n tokenProgram: Address;\n /** Gross amount (net + fee). Fee is deducted on-chain and routed to the fee vault ATA. */\n amount: bigint;\n selectedOptionCiphertext: ByteArray;\n inputNonce: bigint;\n authorizedReaderNonce: bigint;\n /** User's x25519 public key (NOT their Solana wallet pubkey). */\n userPubkey: ByteArray;\n /** u128 nonce committed to encrypted-state derivation. */\n stateNonce: bigint;\n}\n\nexport async function stake(\n input: StakeParams,\n config: ArciumConfig,\n): Promise<StakeInstruction<string>> {\n const {\n programAddress,\n signer,\n payer,\n market,\n stakeAccount,\n stakeAccountId,\n tokenMint,\n signerTokenAccount,\n tokenProgram,\n amount,\n selectedOptionCiphertext,\n inputNonce,\n authorizedReaderNonce,\n userPubkey,\n stateNonce,\n } = input;\n\n return getStakeInstructionAsync(\n {\n ...getComputeAccounts(\"stake\", config),\n signer,\n payer,\n market,\n stakeAccount,\n stakeAccountId,\n tokenMint,\n signerTokenAccount,\n tokenProgram,\n amount,\n selectedOptionCiphertext: toNumberArray(selectedOptionCiphertext),\n inputNonce,\n authorizedReaderNonce,\n userPubkey: toNumberArray(userPubkey),\n stateNonce,\n },\n programAddress ? { programAddress } : undefined,\n );\n}\n\nexport async function awaitStakeFinalization(\n rpc: Rpc<SolanaRpcApi>,\n txSignature: Signature,\n config: ArciumConfig,\n options?: AwaitComputationOptions,\n): Promise<Signature> {\n const { computationAccount } = getComputeAccounts(\"stake\", config);\n return awaitComputationFinalization(rpc, computationAccount, txSignature, options);\n}\n","import { type TransactionSigner, type Address, type Rpc, type Signature, type SolanaRpcApi } from \"@solana/kit\";\nimport {\n getRevealStakeInstructionAsync,\n type RevealStakeInstruction,\n} from \"../generated\";\nimport { type ArciumConfig, getComputeAccounts } from \"../arcium/computeAccounts\";\nimport {\n awaitComputationFinalization,\n type AwaitComputationOptions,\n} from \"../arcium/awaitFinalizeComputation\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface RevealStakeParams extends BaseInstructionParams {\n signer: TransactionSigner;\n owner: Address;\n market: Address;\n stakeAccountId: number;\n}\n\nexport async function revealStake(\n input: RevealStakeParams,\n config: ArciumConfig\n): Promise<RevealStakeInstruction<string>> {\n const { programAddress, signer, owner, market, stakeAccountId } = input;\n\n return getRevealStakeInstructionAsync(\n {\n ...getComputeAccounts(\"reveal_stake\", config),\n signer,\n owner,\n market,\n stakeAccountId,\n },\n programAddress ? { programAddress } : undefined\n );\n}\n\nexport async function awaitRevealStakeFinalization(\n rpc: Rpc<SolanaRpcApi>,\n txSignature: Signature,\n config: ArciumConfig,\n options?: AwaitComputationOptions,\n): Promise<Signature> {\n const { computationAccount } = getComputeAccounts(\"reveal_stake\", config);\n return awaitComputationFinalization(rpc, computationAccount, txSignature, options);\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getAddMarketOptionInstructionAsync,\n type AddMarketOptionInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface AddMarketOptionParams extends BaseInstructionParams {\n signer: TransactionSigner;\n market: Address;\n optionId: number | bigint;\n}\n\nexport async function addMarketOption(\n input: AddMarketOptionParams\n): Promise<AddMarketOptionInstruction<string>> {\n const { programAddress, ...params } = input;\n return getAddMarketOptionInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getOpenMarketInstruction,\n type OpenMarketInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface OpenMarketParams extends BaseInstructionParams {\n marketAuthority: TransactionSigner;\n market: Address;\n platformConfig: Address;\n timeToStake: bigint;\n}\n\nexport function openMarket(\n input: OpenMarketParams\n): OpenMarketInstruction<string> {\n const { programAddress, ...params } = input;\n return getOpenMarketInstruction(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getSetWinningOptionInstructionAsync,\n type SetWinningOptionInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface SetWinningOptionParams extends BaseInstructionParams {\n marketAuthority: TransactionSigner;\n market: Address;\n optionId: number | bigint;\n rewardBp: number;\n}\n\nexport async function setWinningOption(\n input: SetWinningOptionParams,\n): Promise<SetWinningOptionInstruction<string>> {\n const { programAddress, ...params } = input;\n return getSetWinningOptionInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined,\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getResolveMarketInstruction,\n type ResolveMarketInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface ResolveMarketParams extends BaseInstructionParams {\n marketAuthority: TransactionSigner;\n market: Address;\n}\n\nexport function resolveMarket(\n input: ResolveMarketParams,\n): ResolveMarketInstruction<string> {\n const { programAddress, ...params } = input;\n return getResolveMarketInstruction(\n params,\n programAddress ? { programAddress } : undefined,\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getEndRevealPeriodInstruction,\n type EndRevealPeriodInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface EndRevealPeriodParams extends BaseInstructionParams {\n signer: TransactionSigner;\n platformConfig: Address;\n market: Address;\n}\n\nexport function endRevealPeriod(\n input: EndRevealPeriodParams\n): EndRevealPeriodInstruction<string> {\n const { programAddress, ...params } = input;\n return getEndRevealPeriodInstruction(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getAddRewardInstructionAsync,\n type AddRewardInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface AddRewardParams extends BaseInstructionParams {\n sponsor: TransactionSigner;\n market: Address;\n tokenMint: Address;\n sponsorTokenAccount: Address;\n tokenProgram: Address;\n amount: bigint;\n}\n\nexport async function addReward(\n input: AddRewardParams\n): Promise<AddRewardInstruction<string>> {\n const { programAddress, ...params } = input;\n return getAddRewardInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getInitStakeAccountInstructionAsync,\n type InitStakeAccountInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface InitStakeAccountParams extends BaseInstructionParams {\n payer: TransactionSigner;\n owner: Address;\n market: Address;\n stakeAccountId: number;\n}\n\nexport async function initStakeAccount(\n input: InitStakeAccountParams\n): Promise<InitStakeAccountInstruction<string>> {\n const { programAddress, ...params } = input;\n return getInitStakeAccountInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getInitAllowedMintInstructionAsync,\n type InitAllowedMintInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface InitAllowedMintParams extends BaseInstructionParams {\n updateAuthority: TransactionSigner;\n platformConfig: Address;\n tokenMint: Address;\n}\n\nexport async function initAllowedMint(\n input: InitAllowedMintParams,\n): Promise<InitAllowedMintInstruction<string>> {\n const { programAddress, ...params } = input;\n return getInitAllowedMintInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined,\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getClaimRewardsInstructionAsync,\n type ClaimRewardsInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface ClaimRewardsParams extends BaseInstructionParams {\n owner: TransactionSigner;\n market: Address;\n stakeAccount: Address;\n option: Address;\n tokenMint: Address;\n ownerTokenAccount: Address;\n tokenProgram: Address;\n}\n\nexport async function claimRewards(\n input: ClaimRewardsParams\n): Promise<ClaimRewardsInstruction<string>> {\n const { programAddress, ...params } = input;\n return getClaimRewardsInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getCloseStakeAccountInstructionAsync,\n type CloseStakeAccountInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface CloseStakeAccountParams extends BaseInstructionParams {\n owner: TransactionSigner;\n market: Address;\n stakeAccount: Address;\n option: Address;\n tokenMint: Address;\n ownerTokenAccount: Address;\n tokenProgram: Address;\n}\n\nexport async function closeStakeAccount(\n input: CloseStakeAccountParams\n): Promise<CloseStakeAccountInstruction<string>> {\n const { programAddress, ...params } = input;\n return getCloseStakeAccountInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getCloseUnrevealedStakeAccountInstructionAsync,\n type CloseUnrevealedStakeAccountInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface CloseUnrevealedStakeAccountParams extends BaseInstructionParams {\n owner: TransactionSigner;\n market: Address;\n stakeAccount: Address;\n tokenMint: Address;\n ownerTokenAccount: Address;\n tokenProgram: Address;\n}\n\nexport async function closeUnrevealedStakeAccount(\n input: CloseUnrevealedStakeAccountParams\n): Promise<CloseUnrevealedStakeAccountInstruction<string>> {\n const { programAddress, ...params } = input;\n return getCloseUnrevealedStakeAccountInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getCloseStuckStakeAccountInstructionAsync,\n type CloseStuckStakeAccountInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface CloseStuckStakeAccountParams extends BaseInstructionParams {\n signer: TransactionSigner;\n market: Address;\n tokenMint: Address;\n signerTokenAccount: Address;\n tokenProgram: Address;\n stakeAccountId: number;\n}\n\nexport async function closeStuckStakeAccount(\n input: CloseStuckStakeAccountParams\n): Promise<CloseStuckStakeAccountInstruction<string>> {\n const { programAddress, ...params } = input;\n return getCloseStuckStakeAccountInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getCloseOptionAccountInstructionAsync,\n type CloseOptionAccountInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface CloseOptionAccountParams extends BaseInstructionParams {\n signer: TransactionSigner;\n creator: Address;\n market: Address;\n optionId: number | bigint;\n}\n\nexport async function closeOptionAccount(\n input: CloseOptionAccountParams\n): Promise<CloseOptionAccountInstruction<string>> {\n const { programAddress, ...params } = input;\n return getCloseOptionAccountInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getUnstakeInstructionAsync,\n type UnstakeInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface UnstakeParams extends BaseInstructionParams {\n signer: TransactionSigner;\n owner: Address;\n market: Address;\n tokenMint: Address;\n ownerTokenAccount: Address;\n tokenProgram: Address;\n stakeAccountId: number;\n}\n\nexport async function unstake(\n input: UnstakeParams,\n): Promise<UnstakeInstruction<string>> {\n const { programAddress, ...params } = input;\n\n return getUnstakeInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getFinalizeRevealStakeInstructionAsync,\n type FinalizeRevealStakeInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface FinalizeRevealStakeParams extends BaseInstructionParams {\n signer: TransactionSigner;\n owner: Address;\n market: Address;\n optionId: number | bigint;\n stakeAccountId: number;\n}\n\nexport async function finalizeRevealStake(\n input: FinalizeRevealStakeParams\n): Promise<FinalizeRevealStakeInstruction<string>> {\n const { programAddress, ...params } = input;\n return getFinalizeRevealStakeInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import {\n type Address,\n getAddressEncoder,\n getProgramDerivedAddress,\n getUtf8Encoder,\n type ProgramDerivedAddress,\n} from \"@solana/kit\";\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from \"../generated\";\n\nexport const PLATFORM_CONFIG_SEED = \"platform_config\";\n\nexport async function getPlatformConfigAddress(\n authority: Address,\n name: string,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n PLATFORM_CONFIG_SEED,\n getAddressEncoder().encode(authority),\n getUtf8Encoder().encode(name),\n ],\n });\n}\n","import { type TransactionSigner, type Address, type Instruction } from \"@solana/kit\";\nimport {\n fetchMaybePlatformConfig,\n getInitPlatformConfigInstructionAsync,\n} from \"../generated\";\nimport { getPlatformConfigAddress } from \"../accounts/platformConfig\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface CreatePlatformConfigParams extends BaseInstructionParams {\n signer: TransactionSigner;\n name: string;\n platformFeeBp: number;\n rewardPoolFeeBp: number;\n creatorFeeBp: number;\n feeClaimAuthority: Address;\n revealAuthority: Address;\n minTimeToStakeSeconds: bigint;\n revealPeriodSeconds: bigint;\n marketResolutionDeadlineSeconds: bigint;\n}\n\nexport async function createPlatformConfig(\n rpc: Parameters<typeof fetchMaybePlatformConfig>[0],\n params: CreatePlatformConfigParams,\n): Promise<Instruction> {\n const {\n programAddress,\n signer,\n name,\n platformFeeBp,\n rewardPoolFeeBp,\n creatorFeeBp,\n feeClaimAuthority,\n revealAuthority,\n minTimeToStakeSeconds,\n revealPeriodSeconds,\n marketResolutionDeadlineSeconds,\n } = params;\n\n const [platformConfigAddress] = await getPlatformConfigAddress(\n signer.address,\n name,\n programAddress,\n );\n const existing = await fetchMaybePlatformConfig(rpc, platformConfigAddress);\n if (existing.exists) {\n throw new Error(\n `Platform config already exists for (${signer.address}, \"${name}\") at ${platformConfigAddress}`,\n );\n }\n\n return getInitPlatformConfigInstructionAsync(\n {\n payer: signer,\n name,\n platformFeeBp,\n rewardPoolFeeBp,\n creatorFeeBp,\n feeClaimAuthority,\n revealAuthority,\n minTimeToStakeSeconds,\n revealPeriodSeconds,\n marketResolutionDeadlineSeconds,\n },\n programAddress ? { programAddress } : undefined,\n ) as Promise<Instruction>;\n}\n","import { type TransactionSigner, type Address, type Instruction } from \"@solana/kit\";\nimport {\n fetchMaybePlatformConfig,\n getUpdatePlatformConfigInstruction,\n} from \"../generated\";\nimport { getPlatformConfigAddress } from \"../accounts/platformConfig\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface UpdatePlatformConfigParams extends BaseInstructionParams {\n signer: TransactionSigner;\n name: string;\n platformFeeBp: number;\n rewardPoolFeeBp: number;\n creatorFeeBp: number;\n revealAuthority: Address;\n minTimeToStakeSeconds: bigint;\n revealPeriodSeconds: bigint;\n marketResolutionDeadlineSeconds: bigint;\n}\n\nexport async function updatePlatformConfig(\n rpc: Parameters<typeof fetchMaybePlatformConfig>[0],\n params: UpdatePlatformConfigParams,\n): Promise<Instruction> {\n const {\n programAddress,\n signer,\n name,\n platformFeeBp,\n rewardPoolFeeBp,\n creatorFeeBp,\n revealAuthority,\n minTimeToStakeSeconds,\n revealPeriodSeconds,\n marketResolutionDeadlineSeconds,\n } = params;\n\n const [platformConfigAddress] = await getPlatformConfigAddress(\n signer.address,\n name,\n programAddress,\n );\n const existing = await fetchMaybePlatformConfig(rpc, platformConfigAddress);\n if (!existing.exists) {\n throw new Error(\n `Platform config does not exist for (${signer.address}, \"${name}\") at ${platformConfigAddress}`,\n );\n }\n\n return getUpdatePlatformConfigInstruction(\n {\n updateAuthority: signer,\n platformConfig: platformConfigAddress,\n platformFeeBp,\n rewardPoolFeeBp,\n creatorFeeBp,\n revealAuthority,\n minTimeToStakeSeconds,\n revealPeriodSeconds,\n marketResolutionDeadlineSeconds,\n },\n programAddress ? { programAddress } : undefined,\n ) as Instruction;\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getClaimFeesInstructionAsync,\n type ClaimFeesInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface ClaimFeesParams extends BaseInstructionParams {\n signer: TransactionSigner;\n market: Address;\n platformConfig: Address;\n tokenMint: Address;\n destinationTokenAccount: Address;\n tokenProgram: Address;\n}\n\nexport async function claimFees(\n input: ClaimFeesParams\n): Promise<ClaimFeesInstruction<string>> {\n const { programAddress, ...params } = input;\n return getClaimFeesInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getClaimCreatorFeesInstructionAsync,\n type ClaimCreatorFeesInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface ClaimCreatorFeesParams extends BaseInstructionParams {\n signer: TransactionSigner;\n market: Address;\n tokenMint: Address;\n destinationTokenAccount: Address;\n tokenProgram: Address;\n}\n\nexport async function claimCreatorFees(\n input: ClaimCreatorFeesParams\n): Promise<ClaimCreatorFeesInstruction<string>> {\n const { programAddress, ...params } = input;\n return getClaimCreatorFeesInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getWithdrawRewardInstructionAsync,\n type WithdrawRewardInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface WithdrawRewardParams extends BaseInstructionParams {\n sponsor: TransactionSigner;\n market: Address;\n tokenMint: Address;\n refundTokenAccount: Address;\n tokenProgram: Address;\n}\n\nexport async function withdrawReward(\n input: WithdrawRewardParams\n): Promise<WithdrawRewardInstruction<string>> {\n const { programAddress, ...params } = input;\n return getWithdrawRewardInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getSetUpdateAuthorityInstruction,\n type SetUpdateAuthorityInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface SetUpdateAuthorityParams extends BaseInstructionParams {\n updateAuthority: TransactionSigner;\n platformConfig: Address;\n newAuthority: Address;\n}\n\nexport function setUpdateAuthority(\n input: SetUpdateAuthorityParams,\n): SetUpdateAuthorityInstruction<string> {\n const { programAddress, ...params } = input;\n return getSetUpdateAuthorityInstruction(\n params,\n programAddress ? { programAddress } : undefined,\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getSetFeeClaimAuthorityInstruction,\n type SetFeeClaimAuthorityInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface SetFeeClaimAuthorityParams extends BaseInstructionParams {\n updateAuthority: TransactionSigner;\n platformConfig: Address;\n newFeeClaimAuthority: Address;\n}\n\nexport function setFeeClaimAuthority(\n input: SetFeeClaimAuthorityParams,\n): SetFeeClaimAuthorityInstruction<string> {\n const { programAddress, ...params } = input;\n return getSetFeeClaimAuthorityInstruction(\n params,\n programAddress ? { programAddress } : undefined,\n );\n}\n","import {\n type Address,\n getAddressEncoder,\n getProgramDerivedAddress,\n type ProgramDerivedAddress,\n} from \"@solana/kit\";\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from \"../generated\";\n\nexport const ALLOWED_MINT_SEED = \"allowed_mint\";\n\nexport async function getAllowedMintAddress(\n platformConfig: Address,\n mint: Address,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n): Promise<ProgramDerivedAddress> {\n const enc = getAddressEncoder();\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [ALLOWED_MINT_SEED, enc.encode(platformConfig), enc.encode(mint)],\n });\n}\n","import {\n type Address,\n getAddressEncoder,\n getU64Encoder,\n getProgramDerivedAddress,\n type ProgramDerivedAddress,\n} from \"@solana/kit\";\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from \"../generated\";\n\nexport const OPPORTUNITY_MARKET_SEED = \"opportunity_market\";\n\nexport async function getOpportunityMarketAddress(\n platformConfig: Address,\n creator: Address,\n marketIndex: bigint | number,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n OPPORTUNITY_MARKET_SEED,\n getAddressEncoder().encode(platformConfig),\n getAddressEncoder().encode(creator),\n getU64Encoder().encode(BigInt(marketIndex)),\n ],\n });\n}\n","import {\n type Address,\n getAddressEncoder,\n getU64Encoder,\n getProgramDerivedAddress,\n type ProgramDerivedAddress,\n} from \"@solana/kit\";\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from \"../generated\";\n\nexport const OPPORTUNITY_MARKET_OPTION_SEED = \"option\";\n\nexport async function getOpportunityMarketOptionAddress(\n market: Address,\n optionId: number | bigint,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n OPPORTUNITY_MARKET_OPTION_SEED,\n getAddressEncoder().encode(market),\n getU64Encoder().encode(optionId),\n ],\n });\n}\n","import {\n type Address,\n getAddressEncoder,\n getProgramDerivedAddress,\n type ProgramDerivedAddress,\n} from \"@solana/kit\";\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from \"../generated\";\n\nexport const SPONSOR_SEED = \"sponsor\";\n\nexport async function getOpportunityMarketSponsorAddress(\n sponsor: Address,\n market: Address,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n const addressEncoder = getAddressEncoder();\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n SPONSOR_SEED,\n addressEncoder.encode(sponsor),\n addressEncoder.encode(market),\n ],\n });\n}\n","import {\n type Address,\n getAddressEncoder,\n getProgramDerivedAddress,\n type ProgramDerivedAddress,\n} from \"@solana/kit\";\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from \"../generated\";\n\nexport const STAKE_ACCOUNT_SEED = \"stake_account\";\n\nexport async function getStakeAccountAddress(\n owner: Address,\n market: Address,\n stakeAccountId: number,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n const addressEncoder = getAddressEncoder();\n const idBytes = new Uint8Array(4);\n new DataView(idBytes.buffer).setUint32(0, stakeAccountId, true);\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n STAKE_ACCOUNT_SEED,\n addressEncoder.encode(owner),\n addressEncoder.encode(market),\n idBytes,\n ],\n });\n}\n","import { RescueCipher, x25519 } from \"@arcium-hq/client\";\nimport { BN } from \"bn.js\";\nimport { createHash } from \"crypto\";\n\nexport interface X25519Keypair {\n publicKey: Uint8Array;\n secretKey: Uint8Array;\n}\n\n/**\n * Generates a new X25519 keypair.\n * Used for encrypted computations with Arcium.\n */\nexport function generateX25519Keypair(): X25519Keypair {\n const secretKey = x25519.utils.randomSecretKey();\n const publicKey = x25519.getPublicKey(secretKey);\n return { publicKey, secretKey };\n}\n\n/**\n * Derives an X25519 keypair deterministically from a signature\n */\nexport function deriveX25519KeypairFromSignature(signature: Uint8Array): X25519Keypair {\n const secretKey = new Uint8Array(createHash(\"sha256\").update(signature).digest());\n const publicKey = x25519.getPublicKey(secretKey);\n return { secretKey, publicKey };\n}\n\n/**\n * Derives the shared secret between a user's secret key and the MXE public key.\n * Use this to create a RescueCipher for encryption/decryption.\n */\nexport function deriveSharedSecret(userSecretKey: Uint8Array, mxePublicKey: Uint8Array): Uint8Array {\n return x25519.getSharedSecret(userSecretKey, mxePublicKey);\n}\n\n/**\n * Creates a RescueCipher from a user's secret key and MXE public key.\n * Convenience function combining deriveSharedSecret + RescueCipher creation.\n */\nexport function createCipher(userSecretKey: Uint8Array, mxePublicKey: Uint8Array): RescueCipher {\n const sharedSecret = deriveSharedSecret(userSecretKey, mxePublicKey);\n return new RescueCipher(sharedSecret);\n}\n\nexport function nonceToBytes(nonce: bigint): Uint8Array {\n return Uint8Array.from(new BN(nonce.toString()).toArray(\"le\", 16));\n}\n"],"mappings":"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","names":["address","assertAccountExists","assertAccountsExist","combineCodec","decodeAccount","fetchEncodedAccount","fetchEncodedAccounts","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","getU8Decoder","getU8Encoder","transformEncoder","address","assertAccountExists","assertAccountsExist","combineCodec","decodeAccount","fetchEncodedAccount","fetchEncodedAccounts","fixDecoderSize","fixEncoderSize","getAddressDecoder","getAddressEncoder","getArrayDecoder","getArrayEncoder","getBooleanDecoder","getBooleanEncoder","getBytesDecoder","getBytesEncoder","getOptionDecoder","getOptionEncoder","getStructDecoder","getStructEncoder","getU16Decoder","getU16Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","transformEncoder","combineCodec","getStructDecoder","getStructEncoder","getStructEncoder","getStructDecoder","combineCodec","combineCodec","getAddressDecoder","getAddressEncoder","getStructDecoder","getStructEncoder","combineCodec","getU8Decoder","getU8Encoder","combineCodec","getStructDecoder","getStructEncoder","getTupleDecoder","getTupleEncoder","getStructEncoder","getTupleEncoder","getStructDecoder","getTupleDecoder","combineCodec","combineCodec","getStructDecoder","getStructEncoder","getU8Decoder","getU8Encoder","getStructEncoder","getU8Encoder","getStructDecoder","getU8Decoder","combineCodec","combineCodec","getAddressDecoder","getAddressEncoder","getArrayDecoder","getArrayEncoder","getDiscriminatedUnionDecoder","getDiscriminatedUnionEncoder","getStructDecoder","getStructEncoder","getTupleDecoder","getTupleEncoder","getU8Decoder","getU8Encoder","getStructEncoder","getAddressEncoder","getArrayEncoder","getDiscriminatedUnionEncoder","getTupleEncoder","getU8Encoder","getStructDecoder","getAddressDecoder","getArrayDecoder","getDiscriminatedUnionDecoder","getTupleDecoder","getU8Decoder","combineCodec","combineCodec","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","getArrayDecoder","getArrayEncoder","getOptionDecoder","getOptionEncoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","getStructEncoder","getOptionEncoder","getU64Encoder","getU8Encoder","getArrayEncoder","getStructDecoder","getOptionDecoder","getU64Decoder","getU8Decoder","getArrayDecoder","combineCodec","combineCodec","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getStructEncoder","getU32Encoder","getStructDecoder","getU32Decoder","combineCodec","combineCodec","getArrayDecoder","getArrayEncoder","getStructDecoder","getStructEncoder","getStructEncoder","getArrayEncoder","getStructDecoder","getArrayDecoder","combineCodec","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","getTupleDecoder","getTupleEncoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","combineCodec","getStructDecoder","getStructEncoder","getU8Decoder","getU8Encoder","combineCodec","getStructDecoder","getStructEncoder","getU16Decoder","getU16Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","LocalCircuitSource","combineCodec","getAddressDecoder","getAddressEncoder","getArrayDecoder","getArrayEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU16Decoder","getU16Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","getStructEncoder","getAddressEncoder","getU64Encoder","getU16Encoder","getArrayEncoder","getU8Encoder","getI64Encoder","getStructDecoder","getAddressDecoder","getU64Decoder","getU16Decoder","getArrayDecoder","getU8Decoder","getI64Decoder","combineCodec","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","combineCodec","getAddressDecoder","getAddressEncoder","getArrayDecoder","getArrayEncoder","getBooleanDecoder","getBooleanEncoder","getDiscriminatedUnionDecoder","getDiscriminatedUnionEncoder","getOptionDecoder","getOptionEncoder","getStructDecoder","getStructEncoder","getTupleDecoder","getTupleEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","getStructEncoder","getU8Encoder","getU32Encoder","getU64Encoder","getAddressEncoder","getOptionEncoder","getDiscriminatedUnionEncoder","getTupleEncoder","getArrayEncoder","getBooleanEncoder","getStructDecoder","getU8Decoder","getU32Decoder","getU64Decoder","getAddressDecoder","getOptionDecoder","getDiscriminatedUnionDecoder","getTupleDecoder","getArrayDecoder","getBooleanDecoder","combineCodec","combineCodec","getEnumDecoder","getEnumEncoder","MxeStatus","combineCodec","getArrayDecoder","getArrayEncoder","getStructDecoder","getStructEncoder","getU8Decoder","getU8Encoder","combineCodec","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","combineCodec","getArrayDecoder","getArrayEncoder","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU8Decoder","getU8Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getBooleanDecoder","getBooleanEncoder","getStructDecoder","getStructEncoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","getEnumDecoder","getEnumEncoder","Output","combineCodec","getEnumDecoder","getEnumEncoder","Parameter","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","combineCodec","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getOptionDecoder","getOptionEncoder","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getArrayDecoder","getArrayEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU128Decoder","getU128Encoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","combineCodec","getStructDecoder","getStructEncoder","getStructEncoder","getStructDecoder","combineCodec","combineCodec","getArrayDecoder","getArrayEncoder","getStructDecoder","getStructEncoder","getU128Decoder","getU128Encoder","getU8Decoder","getU8Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","combineCodec","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","combineCodec","getArrayDecoder","getArrayEncoder","getStructDecoder","getStructEncoder","getU8Decoder","getU8Encoder","combineCodec","getAddressDecoder","getAddressEncoder","getI64Decoder","getI64Encoder","getStructDecoder","getStructEncoder","getU16Decoder","getU16Encoder","getU64Decoder","getU64Encoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU8Encoder","getAddressEncoder","getU64Encoder","getOptionEncoder","getU16Encoder","getArrayEncoder","getBooleanEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU8Decoder","getAddressDecoder","getU64Decoder","getOptionDecoder","getU16Decoder","getArrayDecoder","getBooleanDecoder","combineCodec","decodeAccount","address","assertAccountExists","fetchEncodedAccount","assertAccountsExist","fetchEncodedAccounts","assertAccountExists","assertAccountsExist","combineCodec","decodeAccount","fetchEncodedAccount","fetchEncodedAccounts","fixDecoderSize","fixEncoderSize","getAddressDecoder","getAddressEncoder","getBooleanDecoder","getBooleanEncoder","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","getU128Decoder","getU128Encoder","getU16Decoder","getU16Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","transformEncoder","address","assertAccountExists","assertAccountsExist","combineCodec","decodeAccount","fetchEncodedAccount","fetchEncodedAccounts","fixDecoderSize","fixEncoderSize","getAddressDecoder","getAddressEncoder","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","transformEncoder","address","addDecoderSizePrefix","addEncoderSizePrefix","assertAccountExists","assertAccountsExist","combineCodec","decodeAccount","fetchEncodedAccount","fetchEncodedAccounts","fixDecoderSize","fixEncoderSize","getAddressDecoder","getAddressEncoder","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","getUtf8Decoder","getUtf8Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU8Encoder","addEncoderSizePrefix","getUtf8Encoder","getU32Encoder","getAddressEncoder","getU64Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU8Decoder","addDecoderSizePrefix","getUtf8Decoder","getU32Decoder","getAddressDecoder","getU64Decoder","combineCodec","decodeAccount","address","assertAccountExists","fetchEncodedAccount","assertAccountsExist","fetchEncodedAccounts","assertAccountExists","assertAccountsExist","combineCodec","decodeAccount","fetchEncodedAccount","fetchEncodedAccounts","fixDecoderSize","fixEncoderSize","getAddressDecoder","getAddressEncoder","getArrayDecoder","getArrayEncoder","getBooleanDecoder","getBooleanEncoder","getBytesDecoder","getBytesEncoder","getOptionDecoder","getOptionEncoder","getStructDecoder","getStructEncoder","getU128Decoder","getU128Encoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getArrayEncoder","getU8Encoder","getU128Encoder","getAddressEncoder","getOptionEncoder","getU64Encoder","getBooleanEncoder","getU32Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getArrayDecoder","getU8Decoder","getU128Decoder","getAddressDecoder","getOptionDecoder","getU64Decoder","getBooleanDecoder","getU32Decoder","combineCodec","decodeAccount","address","assertAccountExists","fetchEncodedAccount","assertAccountsExist","fetchEncodedAccounts","fixEncoderSize","getBytesEncoder","OpportunityMarketAccount","OpportunityMarketInstruction","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","combineCodec","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU32Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU32Decoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressDecoder","getAddressEncoder","getArrayDecoder","getArrayEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU16Decoder","getU16Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getAddressEncoder","getArrayEncoder","getU8Encoder","getU16Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","getAddressDecoder","getArrayDecoder","getU8Decoder","getU16Decoder","combineCodec","getProgramDerivedAddress","combineCodec","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getU32Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","getU32Decoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","addDecoderSizePrefix","addEncoderSizePrefix","combineCodec","fixDecoderSize","fixEncoderSize","getAddressDecoder","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU16Decoder","getU16Encoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","getUtf8Decoder","getUtf8Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","addEncoderSizePrefix","getUtf8Encoder","getU32Encoder","getU16Encoder","getAddressEncoder","getU64Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","addDecoderSizePrefix","getUtf8Decoder","getU32Decoder","getU16Decoder","getAddressDecoder","getU64Decoder","combineCodec","getProgramDerivedAddress","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU32Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU32Decoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","getU64Decoder","getU64Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getU32Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","getU32Decoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getArrayDecoder","getArrayEncoder","getBytesDecoder","getBytesEncoder","getDiscriminatedUnionDecoder","getDiscriminatedUnionEncoder","getStructDecoder","getStructEncoder","getTupleDecoder","getTupleEncoder","getU8Decoder","getU8Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getDiscriminatedUnionEncoder","getTupleEncoder","getArrayEncoder","getU8Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getDiscriminatedUnionDecoder","getTupleDecoder","getArrayDecoder","getU8Decoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU16Decoder","getU16Encoder","getU64Decoder","getU64Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getU16Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","getU16Decoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getArrayDecoder","getArrayEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU128Decoder","getU128Encoder","getU32Decoder","getU32Encoder","getU64Decoder","getU64Encoder","getU8Decoder","getU8Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU64Encoder","getU32Encoder","getArrayEncoder","getU8Encoder","getU128Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU64Decoder","getU32Decoder","getArrayDecoder","getU8Decoder","getU128Decoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getArrayDecoder","getArrayEncoder","getBytesDecoder","getBytesEncoder","getDiscriminatedUnionDecoder","getDiscriminatedUnionEncoder","getStructDecoder","getStructEncoder","getTupleDecoder","getTupleEncoder","getU8Decoder","getU8Encoder","getUnitDecoder","getUnitEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getDiscriminatedUnionEncoder","getTupleEncoder","getArrayEncoder","getU8Encoder","getUnitEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getDiscriminatedUnionDecoder","getTupleDecoder","getArrayDecoder","getU8Decoder","getUnitDecoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","getU32Decoder","getU32Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU32Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU32Decoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","combineCodec","fixDecoderSize","fixEncoderSize","getAddressDecoder","getAddressEncoder","getBytesDecoder","getBytesEncoder","getStructDecoder","getStructEncoder","getU16Decoder","getU16Encoder","getU64Decoder","getU64Encoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getU16Encoder","getAddressEncoder","getU64Encoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getU16Decoder","getAddressDecoder","getU64Decoder","combineCodec","combineCodec","fixDecoderSize","fixEncoderSize","getAddressEncoder","getBytesDecoder","getBytesEncoder","getProgramDerivedAddress","getStructDecoder","getStructEncoder","transformEncoder","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","combineCodec","getProgramDerivedAddress","getAddressEncoder","assertAccountExists","fetchEncodedAccount","fetchEncodedAccount","assertAccountExists","address","getMXEAccAddress","getCompDefAccAddress","getCompDefAccOffset","PublicKey","BN","toAddress","address","PublicKey","getMXEAccAddress","BN","getCompDefAccAddress","getCompDefAccOffset","getAddressEncoder","getProgramDerivedAddress","getUtf8Encoder","getProgramDerivedAddress","getAddressEncoder","getUtf8Encoder","getAddressEncoder","getProgramDerivedAddress","getAddressEncoder","getProgramDerivedAddress","getAddressEncoder","getU64Encoder","getProgramDerivedAddress","getProgramDerivedAddress","getAddressEncoder","getU64Encoder","getAddressEncoder","getU64Encoder","getProgramDerivedAddress","getProgramDerivedAddress","getAddressEncoder","getU64Encoder","getAddressEncoder","getProgramDerivedAddress","getAddressEncoder","getProgramDerivedAddress","getAddressEncoder","getProgramDerivedAddress","getAddressEncoder","getProgramDerivedAddress","BN"]}
|