@bench.games/opportunity-markets 0.1.25 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/generated/accounts/arciumSignerAccount.ts","../src/generated/accounts/centralState.ts","../src/generated/accounts/clockAccount.ts","../src/generated/types/activation.ts","../src/generated/types/addOptionStakeOutput.ts","../src/generated/types/addOptionStakeOutputStruct0.ts","../src/generated/types/bN254G2BLSPublicKey.ts","../src/generated/types/buyOpportunityMarketSharesOutput.ts","../src/generated/types/buyOpportunityMarketSharesOutputStruct0.ts","../src/generated/types/circuitSource.ts","../src/generated/types/closeEphemeralEncryptedTokenAccountOutput.ts","../src/generated/types/computationDefinitionMeta.ts","../src/generated/types/computationSignature.ts","../src/generated/types/encryptedTokenAccountInitializedEvent.ts","../src/generated/types/encryptedTokensUnwrappedError.ts","../src/generated/types/encryptedTokensUnwrappedEvent.ts","../src/generated/types/encryptedTokensWrappedError.ts","../src/generated/types/encryptedTokensWrappedEvent.ts","../src/generated/types/ephemeralAccountClosedError.ts","../src/generated/types/ephemeralAccountClosedEvent.ts","../src/generated/types/ephemeralEncryptedTokenAccountInitializedEvent.ts","../src/generated/types/epoch.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/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/output.ts","../src/generated/types/parameter.ts","../src/generated/types/pendingDepositClaimedEvent.ts","../src/generated/types/revealPeriodExtendedEvent.ts","../src/generated/types/revealSharesOutput.ts","../src/generated/types/revealSharesOutputStruct0.ts","../src/generated/types/rewardClaimedEvent.ts","../src/generated/types/rewardPoolIncreasedEvent.ts","../src/generated/types/shareAccountInitializedEvent.ts","../src/generated/types/stakedError.ts","../src/generated/types/stakedEvent.ts","../src/generated/types/stakeRevealedError.ts","../src/generated/types/stakeRevealedEvent.ts","../src/generated/types/tallyIncrementedEvent.ts","../src/generated/types/timestamp.ts","../src/generated/types/unstakedError.ts","../src/generated/types/unstakedEvent.ts","../src/generated/types/unstakeEarlyOutput.ts","../src/generated/types/unstakeInitiatedEvent.ts","../src/generated/types/unwrapEncryptedTokensOutput.ts","../src/generated/types/unwrapEncryptedTokensOutputStruct0.ts","../src/generated/types/utilityPubkeys.ts","../src/generated/types/winningOption.ts","../src/generated/types/winningOptionsSelectedEvent.ts","../src/generated/types/wrapEncryptedTokensOutput.ts","../src/generated/accounts/cluster.ts","../src/generated/accounts/computationDefinitionAccount.ts","../src/generated/accounts/encryptedTokenAccount.ts","../src/generated/accounts/feePool.ts","../src/generated/accounts/mXEAccount.ts","../src/generated/accounts/opportunityMarket.ts","../src/generated/accounts/opportunityMarketOption.ts","../src/generated/accounts/shareAccount.ts","../src/generated/accounts/tokenVault.ts","../src/generated/errors/opportunityMarket.ts","../src/generated/programs/opportunityMarket.ts","../src/generated/instructions/addMarketOption.ts","../src/generated/shared/index.ts","../src/generated/instructions/addMarketOptionAsCreator.ts","../src/generated/instructions/addOptionStakeCallback.ts","../src/generated/instructions/addOptionStakeCompDef.ts","../src/generated/instructions/buyOpportunityMarketSharesCallback.ts","../src/generated/instructions/buyOpportunityMarketSharesCompDef.ts","../src/generated/instructions/claimFees.ts","../src/generated/instructions/claimPendingDeposit.ts","../src/generated/instructions/closeEphemeralEncryptedTokenAccount.ts","../src/generated/instructions/closeEphemeralEncryptedTokenAccountCallback.ts","../src/generated/instructions/closeEphemeralEncryptedTokenAccountCompDef.ts","../src/generated/instructions/closeShareAccount.ts","../src/generated/instructions/createMarket.ts","../src/generated/instructions/doUnstakeEarly.ts","../src/generated/instructions/extendRevealPeriod.ts","../src/generated/instructions/increaseRewardPool.ts","../src/generated/instructions/incrementOptionTally.ts","../src/generated/instructions/initCentralState.ts","../src/generated/instructions/initEncryptedTokenAccount.ts","../src/generated/instructions/initEphemeralEncryptedTokenAccount.ts","../src/generated/instructions/initShareAccount.ts","../src/generated/instructions/initTokenVault.ts","../src/generated/instructions/openMarket.ts","../src/generated/instructions/revealShares.ts","../src/generated/instructions/revealSharesCallback.ts","../src/generated/instructions/revealSharesCompDef.ts","../src/generated/instructions/selectWinningOptions.ts","../src/generated/instructions/stake.ts","../src/generated/instructions/transferCentralStateAuthority.ts","../src/generated/instructions/unstakeEarly.ts","../src/generated/instructions/unstakeEarlyCallback.ts","../src/generated/instructions/unstakeEarlyCompDef.ts","../src/generated/instructions/unwrapEncryptedTokens.ts","../src/generated/instructions/unwrapEncryptedTokensCallback.ts","../src/generated/instructions/unwrapEncryptedTokensCompDef.ts","../src/generated/instructions/updateCentralState.ts","../src/generated/instructions/wrapEncryptedTokens.ts","../src/generated/instructions/wrapEncryptedTokensCallback.ts","../src/generated/instructions/wrapEncryptedTokensCompDef.ts","../src/utils.ts","../src/instructions/initEncryptedTokenAccount.ts","../src/instructions/initEphemeralEncryptedTokenAccount.ts","../src/instructions/initTokenVault.ts","../src/arcium/computeAccounts.ts","../src/instructions/closeEphemeralEncryptedTokenAccount.ts","../src/instructions/createMarket.ts","../src/instructions/initCompDef.ts","../src/instructions/stake.ts","../src/instructions/wrapEncryptedTokens.ts","../src/instructions/unwrapEncryptedTokens.ts","../src/instructions/revealShares.ts","../src/instructions/addMarketOption.ts","../src/instructions/addMarketOptionAsCreator.ts","../src/instructions/openMarket.ts","../src/instructions/selectWinningOptions.ts","../src/instructions/extendRevealPeriod.ts","../src/instructions/increaseRewardPool.ts","../src/instructions/initShareAccount.ts","../src/instructions/closeShareAccount.ts","../src/instructions/incrementOptionTally.ts","../src/instructions/unstakeEarly.ts","../src/instructions/doUnstakeEarly.ts","../src/accounts/centralState.ts","../src/instructions/ensureCentralState.ts","../src/instructions/claimPendingDeposit.ts","../src/accounts/encryptedTokenAccount.ts","../src/accounts/opportunityMarket.ts","../src/accounts/opportunityMarketOption.ts","../src/accounts/shareAccount.ts","../src/accounts/tokenVault.ts","../src/arcium/awaitFinalizeComputation.ts","../src/arcium/constants.ts","../src/x25519/keypair.ts"],"sourcesContent":["// Re-export all generated Codama types\nexport * from \"./generated\";\n\n// Export convenience helpers\nexport * from \"./instructions\";\n\n// Export account PDA helpers\nexport * from \"./accounts\";\n\n// Export utilities\nexport * from \"./utils\";\n\n// Export Arcium utilities\nexport * from \"./arcium/awaitFinalizeComputation\";\n\n// Export x25519\nexport * from \"./x25519/keypair\";","/**\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 getBytesDecoder,\n getBytesEncoder,\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 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 CENTRAL_STATE_DISCRIMINATOR = new Uint8Array([\n 201, 49, 35, 231, 4, 164, 205, 91,\n]);\n\nexport function getCentralStateDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CENTRAL_STATE_DISCRIMINATOR\n );\n}\n\nexport type CentralState = {\n discriminator: ReadonlyUint8Array;\n bump: number;\n earlinessCutoffSeconds: bigint;\n authority: Address;\n minOptionDeposit: bigint;\n protocolFeeBp: number;\n feeRecipient: Address;\n};\n\nexport type CentralStateArgs = {\n bump: number;\n earlinessCutoffSeconds: number | bigint;\n authority: Address;\n minOptionDeposit: number | bigint;\n protocolFeeBp: number;\n feeRecipient: Address;\n};\n\nexport function getCentralStateEncoder(): FixedSizeEncoder<CentralStateArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['earlinessCutoffSeconds', getU64Encoder()],\n ['authority', getAddressEncoder()],\n ['minOptionDeposit', getU64Encoder()],\n ['protocolFeeBp', getU16Encoder()],\n ['feeRecipient', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: CENTRAL_STATE_DISCRIMINATOR })\n );\n}\n\nexport function getCentralStateDecoder(): FixedSizeDecoder<CentralState> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ['earlinessCutoffSeconds', getU64Decoder()],\n ['authority', getAddressDecoder()],\n ['minOptionDeposit', getU64Decoder()],\n ['protocolFeeBp', getU16Decoder()],\n ['feeRecipient', getAddressDecoder()],\n ]);\n}\n\nexport function getCentralStateCodec(): FixedSizeCodec<\n CentralStateArgs,\n CentralState\n> {\n return combineCodec(getCentralStateEncoder(), getCentralStateDecoder());\n}\n\nexport function decodeCentralState<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<CentralState, TAddress>;\nexport function decodeCentralState<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<CentralState, TAddress>;\nexport function decodeCentralState<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<CentralState, TAddress> | MaybeAccount<CentralState, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getCentralStateDecoder()\n );\n}\n\nexport async function fetchCentralState<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<CentralState, TAddress>> {\n const maybeAccount = await fetchMaybeCentralState(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeCentralState<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<CentralState, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeCentralState(maybeAccount);\n}\n\nexport async function fetchAllCentralState(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<CentralState>[]> {\n const maybeAccounts = await fetchAllMaybeCentralState(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeCentralState(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<CentralState>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeCentralState(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';\nimport {\n getEpochDecoder,\n getEpochEncoder,\n getTimestampDecoder,\n getTimestampEncoder,\n type Epoch,\n type EpochArgs,\n type Timestamp,\n type TimestampArgs,\n} from '../types';\n\nexport const CLOCK_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 152, 171, 158, 195, 75, 61, 51, 8,\n]);\n\nexport function getClockAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLOCK_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type ClockAccount = {\n discriminator: ReadonlyUint8Array;\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 transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['startEpoch', getEpochEncoder()],\n ['currentEpoch', getEpochEncoder()],\n ['startEpochTimestamp', getTimestampEncoder()],\n ['bump', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: CLOCK_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getClockAccountDecoder(): FixedSizeDecoder<ClockAccount> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\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\nexport function decodeClockAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<ClockAccount, TAddress>;\nexport function decodeClockAccount<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<ClockAccount, TAddress>;\nexport function decodeClockAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<ClockAccount, TAddress> | MaybeAccount<ClockAccount, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getClockAccountDecoder()\n );\n}\n\nexport async function fetchClockAccount<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<ClockAccount, TAddress>> {\n const maybeAccount = await fetchMaybeClockAccount(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeClockAccount<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<ClockAccount, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeClockAccount(maybeAccount);\n}\n\nexport async function fetchAllClockAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<ClockAccount>[]> {\n const maybeAccounts = await fetchAllMaybeClockAccount(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeClockAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<ClockAccount>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeClockAccount(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 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 getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\nimport {\n getAddOptionStakeOutputStruct0Decoder,\n getAddOptionStakeOutputStruct0Encoder,\n type AddOptionStakeOutputStruct0,\n type AddOptionStakeOutputStruct0Args,\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 AddOptionStakeOutput = { field0: AddOptionStakeOutputStruct0 };\n\nexport type AddOptionStakeOutputArgs = {\n field0: AddOptionStakeOutputStruct0Args;\n};\n\nexport function getAddOptionStakeOutputEncoder(): FixedSizeEncoder<AddOptionStakeOutputArgs> {\n return getStructEncoder([\n ['field0', getAddOptionStakeOutputStruct0Encoder()],\n ]);\n}\n\nexport function getAddOptionStakeOutputDecoder(): FixedSizeDecoder<AddOptionStakeOutput> {\n return getStructDecoder([\n ['field0', getAddOptionStakeOutputStruct0Decoder()],\n ]);\n}\n\nexport function getAddOptionStakeOutputCodec(): FixedSizeCodec<\n AddOptionStakeOutputArgs,\n AddOptionStakeOutput\n> {\n return combineCodec(\n getAddOptionStakeOutputEncoder(),\n getAddOptionStakeOutputDecoder()\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 getBooleanDecoder,\n getBooleanEncoder,\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 AddOptionStakeOutputStruct0 = {\n field0: boolean;\n field1: {\n encryptionKey: Array<number>;\n nonce: bigint;\n ciphertexts: Array<Array<number>>;\n };\n field2: {\n encryptionKey: Array<number>;\n nonce: bigint;\n ciphertexts: Array<Array<number>>;\n };\n field3: {\n encryptionKey: Array<number>;\n nonce: bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport type AddOptionStakeOutputStruct0Args = {\n field0: boolean;\n field1: {\n encryptionKey: Array<number>;\n nonce: number | bigint;\n ciphertexts: Array<Array<number>>;\n };\n field2: {\n encryptionKey: Array<number>;\n nonce: number | bigint;\n ciphertexts: Array<Array<number>>;\n };\n field3: {\n encryptionKey: Array<number>;\n nonce: number | bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport function getAddOptionStakeOutputStruct0Encoder(): FixedSizeEncoder<AddOptionStakeOutputStruct0Args> {\n return getStructEncoder([\n ['field0', getBooleanEncoder()],\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 'field2',\n getStructEncoder([\n ['encryptionKey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['nonce', getU128Encoder()],\n [\n 'ciphertexts',\n getArrayEncoder(getArrayEncoder(getU8Encoder(), { size: 32 }), {\n size: 2,\n }),\n ],\n ]),\n ],\n [\n 'field3',\n getStructEncoder([\n ['encryptionKey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['nonce', getU128Encoder()],\n [\n 'ciphertexts',\n getArrayEncoder(getArrayEncoder(getU8Encoder(), { size: 32 }), {\n size: 2,\n }),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getAddOptionStakeOutputStruct0Decoder(): FixedSizeDecoder<AddOptionStakeOutputStruct0> {\n return getStructDecoder([\n ['field0', getBooleanDecoder()],\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 'field2',\n getStructDecoder([\n ['encryptionKey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['nonce', getU128Decoder()],\n [\n 'ciphertexts',\n getArrayDecoder(getArrayDecoder(getU8Decoder(), { size: 32 }), {\n size: 2,\n }),\n ],\n ]),\n ],\n [\n 'field3',\n getStructDecoder([\n ['encryptionKey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['nonce', getU128Decoder()],\n [\n 'ciphertexts',\n getArrayDecoder(getArrayDecoder(getU8Decoder(), { size: 32 }), {\n size: 2,\n }),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getAddOptionStakeOutputStruct0Codec(): FixedSizeCodec<\n AddOptionStakeOutputStruct0Args,\n AddOptionStakeOutputStruct0\n> {\n return combineCodec(\n getAddOptionStakeOutputStruct0Encoder(),\n getAddOptionStakeOutputStruct0Decoder()\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 getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\nimport {\n getBuyOpportunityMarketSharesOutputStruct0Decoder,\n getBuyOpportunityMarketSharesOutputStruct0Encoder,\n type BuyOpportunityMarketSharesOutputStruct0,\n type BuyOpportunityMarketSharesOutputStruct0Args,\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 BuyOpportunityMarketSharesOutput = {\n field0: BuyOpportunityMarketSharesOutputStruct0;\n};\n\nexport type BuyOpportunityMarketSharesOutputArgs = {\n field0: BuyOpportunityMarketSharesOutputStruct0Args;\n};\n\nexport function getBuyOpportunityMarketSharesOutputEncoder(): FixedSizeEncoder<BuyOpportunityMarketSharesOutputArgs> {\n return getStructEncoder([\n ['field0', getBuyOpportunityMarketSharesOutputStruct0Encoder()],\n ]);\n}\n\nexport function getBuyOpportunityMarketSharesOutputDecoder(): FixedSizeDecoder<BuyOpportunityMarketSharesOutput> {\n return getStructDecoder([\n ['field0', getBuyOpportunityMarketSharesOutputStruct0Decoder()],\n ]);\n}\n\nexport function getBuyOpportunityMarketSharesOutputCodec(): FixedSizeCodec<\n BuyOpportunityMarketSharesOutputArgs,\n BuyOpportunityMarketSharesOutput\n> {\n return combineCodec(\n getBuyOpportunityMarketSharesOutputEncoder(),\n getBuyOpportunityMarketSharesOutputDecoder()\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 getBooleanDecoder,\n getBooleanEncoder,\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 BuyOpportunityMarketSharesOutputStruct0 = {\n field0: boolean;\n field1: {\n encryptionKey: Array<number>;\n nonce: bigint;\n ciphertexts: Array<Array<number>>;\n };\n field2: {\n encryptionKey: Array<number>;\n nonce: bigint;\n ciphertexts: Array<Array<number>>;\n };\n field3: {\n encryptionKey: Array<number>;\n nonce: bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport type BuyOpportunityMarketSharesOutputStruct0Args = {\n field0: boolean;\n field1: {\n encryptionKey: Array<number>;\n nonce: number | bigint;\n ciphertexts: Array<Array<number>>;\n };\n field2: {\n encryptionKey: Array<number>;\n nonce: number | bigint;\n ciphertexts: Array<Array<number>>;\n };\n field3: {\n encryptionKey: Array<number>;\n nonce: number | bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport function getBuyOpportunityMarketSharesOutputStruct0Encoder(): FixedSizeEncoder<BuyOpportunityMarketSharesOutputStruct0Args> {\n return getStructEncoder([\n ['field0', getBooleanEncoder()],\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 'field2',\n getStructEncoder([\n ['encryptionKey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['nonce', getU128Encoder()],\n [\n 'ciphertexts',\n getArrayEncoder(getArrayEncoder(getU8Encoder(), { size: 32 }), {\n size: 2,\n }),\n ],\n ]),\n ],\n [\n 'field3',\n getStructEncoder([\n ['encryptionKey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['nonce', getU128Encoder()],\n [\n 'ciphertexts',\n getArrayEncoder(getArrayEncoder(getU8Encoder(), { size: 32 }), {\n size: 2,\n }),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getBuyOpportunityMarketSharesOutputStruct0Decoder(): FixedSizeDecoder<BuyOpportunityMarketSharesOutputStruct0> {\n return getStructDecoder([\n ['field0', getBooleanDecoder()],\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 'field2',\n getStructDecoder([\n ['encryptionKey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['nonce', getU128Decoder()],\n [\n 'ciphertexts',\n getArrayDecoder(getArrayDecoder(getU8Decoder(), { size: 32 }), {\n size: 2,\n }),\n ],\n ]),\n ],\n [\n 'field3',\n getStructDecoder([\n ['encryptionKey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['nonce', getU128Decoder()],\n [\n 'ciphertexts',\n getArrayDecoder(getArrayDecoder(getU8Decoder(), { size: 32 }), {\n size: 2,\n }),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getBuyOpportunityMarketSharesOutputStruct0Codec(): FixedSizeCodec<\n BuyOpportunityMarketSharesOutputStruct0Args,\n BuyOpportunityMarketSharesOutputStruct0\n> {\n return combineCodec(\n getBuyOpportunityMarketSharesOutputStruct0Encoder(),\n getBuyOpportunityMarketSharesOutputStruct0Decoder()\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 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\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 CloseEphemeralEncryptedTokenAccountOutput = {\n field0: {\n encryptionKey: Array<number>;\n nonce: bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport type CloseEphemeralEncryptedTokenAccountOutputArgs = {\n field0: {\n encryptionKey: Array<number>;\n nonce: number | bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport function getCloseEphemeralEncryptedTokenAccountOutputEncoder(): FixedSizeEncoder<CloseEphemeralEncryptedTokenAccountOutputArgs> {\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}\n\nexport function getCloseEphemeralEncryptedTokenAccountOutputDecoder(): FixedSizeDecoder<CloseEphemeralEncryptedTokenAccountOutput> {\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}\n\nexport function getCloseEphemeralEncryptedTokenAccountOutputCodec(): FixedSizeCodec<\n CloseEphemeralEncryptedTokenAccountOutputArgs,\n CloseEphemeralEncryptedTokenAccountOutput\n> {\n return combineCodec(\n getCloseEphemeralEncryptedTokenAccountOutputEncoder(),\n getCloseEphemeralEncryptedTokenAccountOutputDecoder()\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 type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type EncryptedTokenAccountInitializedEvent = {\n encryptedTokenAccount: Address;\n owner: Address;\n tokenMint: Address;\n timestamp: bigint;\n};\n\nexport type EncryptedTokenAccountInitializedEventArgs = {\n encryptedTokenAccount: Address;\n owner: Address;\n tokenMint: Address;\n timestamp: number | bigint;\n};\n\nexport function getEncryptedTokenAccountInitializedEventEncoder(): FixedSizeEncoder<EncryptedTokenAccountInitializedEventArgs> {\n return getStructEncoder([\n ['encryptedTokenAccount', getAddressEncoder()],\n ['owner', getAddressEncoder()],\n ['tokenMint', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getEncryptedTokenAccountInitializedEventDecoder(): FixedSizeDecoder<EncryptedTokenAccountInitializedEvent> {\n return getStructDecoder([\n ['encryptedTokenAccount', getAddressDecoder()],\n ['owner', getAddressDecoder()],\n ['tokenMint', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getEncryptedTokenAccountInitializedEventCodec(): FixedSizeCodec<\n EncryptedTokenAccountInitializedEventArgs,\n EncryptedTokenAccountInitializedEvent\n> {\n return combineCodec(\n getEncryptedTokenAccountInitializedEventEncoder(),\n getEncryptedTokenAccountInitializedEventDecoder()\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 EncryptedTokensUnwrappedError = {\n user: Address;\n timestamp: bigint;\n};\n\nexport type EncryptedTokensUnwrappedErrorArgs = {\n user: Address;\n timestamp: number | bigint;\n};\n\nexport function getEncryptedTokensUnwrappedErrorEncoder(): FixedSizeEncoder<EncryptedTokensUnwrappedErrorArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getEncryptedTokensUnwrappedErrorDecoder(): FixedSizeDecoder<EncryptedTokensUnwrappedError> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getEncryptedTokensUnwrappedErrorCodec(): FixedSizeCodec<\n EncryptedTokensUnwrappedErrorArgs,\n EncryptedTokensUnwrappedError\n> {\n return combineCodec(\n getEncryptedTokensUnwrappedErrorEncoder(),\n getEncryptedTokensUnwrappedErrorDecoder()\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 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 EncryptedTokensUnwrappedEvent = {\n user: Address;\n encryptedTokenAccount: Address;\n amountWithdrawn: bigint;\n encryptedNewBalance: Array<number>;\n nonce: bigint;\n timestamp: bigint;\n};\n\nexport type EncryptedTokensUnwrappedEventArgs = {\n user: Address;\n encryptedTokenAccount: Address;\n amountWithdrawn: number | bigint;\n encryptedNewBalance: Array<number>;\n nonce: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getEncryptedTokensUnwrappedEventEncoder(): FixedSizeEncoder<EncryptedTokensUnwrappedEventArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['encryptedTokenAccount', getAddressEncoder()],\n ['amountWithdrawn', getU64Encoder()],\n ['encryptedNewBalance', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['nonce', getU128Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getEncryptedTokensUnwrappedEventDecoder(): FixedSizeDecoder<EncryptedTokensUnwrappedEvent> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['encryptedTokenAccount', getAddressDecoder()],\n ['amountWithdrawn', getU64Decoder()],\n ['encryptedNewBalance', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['nonce', getU128Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getEncryptedTokensUnwrappedEventCodec(): FixedSizeCodec<\n EncryptedTokensUnwrappedEventArgs,\n EncryptedTokensUnwrappedEvent\n> {\n return combineCodec(\n getEncryptedTokensUnwrappedEventEncoder(),\n getEncryptedTokensUnwrappedEventDecoder()\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 EncryptedTokensWrappedError = { user: Address; timestamp: bigint };\n\nexport type EncryptedTokensWrappedErrorArgs = {\n user: Address;\n timestamp: number | bigint;\n};\n\nexport function getEncryptedTokensWrappedErrorEncoder(): FixedSizeEncoder<EncryptedTokensWrappedErrorArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getEncryptedTokensWrappedErrorDecoder(): FixedSizeDecoder<EncryptedTokensWrappedError> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getEncryptedTokensWrappedErrorCodec(): FixedSizeCodec<\n EncryptedTokensWrappedErrorArgs,\n EncryptedTokensWrappedError\n> {\n return combineCodec(\n getEncryptedTokensWrappedErrorEncoder(),\n getEncryptedTokensWrappedErrorDecoder()\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 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 EncryptedTokensWrappedEvent = {\n encryptedTokenAccount: Address;\n user: Address;\n depositAmount: bigint;\n encryptedNewBalance: Array<number>;\n nonce: bigint;\n timestamp: bigint;\n};\n\nexport type EncryptedTokensWrappedEventArgs = {\n encryptedTokenAccount: Address;\n user: Address;\n depositAmount: number | bigint;\n encryptedNewBalance: Array<number>;\n nonce: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getEncryptedTokensWrappedEventEncoder(): FixedSizeEncoder<EncryptedTokensWrappedEventArgs> {\n return getStructEncoder([\n ['encryptedTokenAccount', getAddressEncoder()],\n ['user', getAddressEncoder()],\n ['depositAmount', getU64Encoder()],\n ['encryptedNewBalance', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['nonce', getU128Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getEncryptedTokensWrappedEventDecoder(): FixedSizeDecoder<EncryptedTokensWrappedEvent> {\n return getStructDecoder([\n ['encryptedTokenAccount', getAddressDecoder()],\n ['user', getAddressDecoder()],\n ['depositAmount', getU64Decoder()],\n ['encryptedNewBalance', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['nonce', getU128Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getEncryptedTokensWrappedEventCodec(): FixedSizeCodec<\n EncryptedTokensWrappedEventArgs,\n EncryptedTokensWrappedEvent\n> {\n return combineCodec(\n getEncryptedTokensWrappedEventEncoder(),\n getEncryptedTokensWrappedEventDecoder()\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 EphemeralAccountClosedError = { user: Address; timestamp: bigint };\n\nexport type EphemeralAccountClosedErrorArgs = {\n user: Address;\n timestamp: number | bigint;\n};\n\nexport function getEphemeralAccountClosedErrorEncoder(): FixedSizeEncoder<EphemeralAccountClosedErrorArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getEphemeralAccountClosedErrorDecoder(): FixedSizeDecoder<EphemeralAccountClosedError> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getEphemeralAccountClosedErrorCodec(): FixedSizeCodec<\n EphemeralAccountClosedErrorArgs,\n EphemeralAccountClosedError\n> {\n return combineCodec(\n getEphemeralAccountClosedErrorEncoder(),\n getEphemeralAccountClosedErrorDecoder()\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 getU8Decoder,\n getU8Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type EphemeralAccountClosedEvent = {\n user: Address;\n encryptedTokenAccount: Address;\n encryptedNewBalance: Array<number>;\n nonce: bigint;\n timestamp: bigint;\n};\n\nexport type EphemeralAccountClosedEventArgs = {\n user: Address;\n encryptedTokenAccount: Address;\n encryptedNewBalance: Array<number>;\n nonce: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getEphemeralAccountClosedEventEncoder(): FixedSizeEncoder<EphemeralAccountClosedEventArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['encryptedTokenAccount', getAddressEncoder()],\n ['encryptedNewBalance', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['nonce', getU128Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getEphemeralAccountClosedEventDecoder(): FixedSizeDecoder<EphemeralAccountClosedEvent> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['encryptedTokenAccount', getAddressDecoder()],\n ['encryptedNewBalance', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['nonce', getU128Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getEphemeralAccountClosedEventCodec(): FixedSizeCodec<\n EphemeralAccountClosedEventArgs,\n EphemeralAccountClosedEvent\n> {\n return combineCodec(\n getEphemeralAccountClosedEventEncoder(),\n getEphemeralAccountClosedEventDecoder()\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 EphemeralEncryptedTokenAccountInitializedEvent = {\n encryptedTokenAccount: Address;\n owner: Address;\n tokenMint: Address;\n index: bigint;\n rentPayer: Address;\n timestamp: bigint;\n};\n\nexport type EphemeralEncryptedTokenAccountInitializedEventArgs = {\n encryptedTokenAccount: Address;\n owner: Address;\n tokenMint: Address;\n index: number | bigint;\n rentPayer: Address;\n timestamp: number | bigint;\n};\n\nexport function getEphemeralEncryptedTokenAccountInitializedEventEncoder(): FixedSizeEncoder<EphemeralEncryptedTokenAccountInitializedEventArgs> {\n return getStructEncoder([\n ['encryptedTokenAccount', getAddressEncoder()],\n ['owner', getAddressEncoder()],\n ['tokenMint', getAddressEncoder()],\n ['index', getU64Encoder()],\n ['rentPayer', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getEphemeralEncryptedTokenAccountInitializedEventDecoder(): FixedSizeDecoder<EphemeralEncryptedTokenAccountInitializedEvent> {\n return getStructDecoder([\n ['encryptedTokenAccount', getAddressDecoder()],\n ['owner', getAddressDecoder()],\n ['tokenMint', getAddressDecoder()],\n ['index', getU64Decoder()],\n ['rentPayer', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getEphemeralEncryptedTokenAccountInitializedEventCodec(): FixedSizeCodec<\n EphemeralEncryptedTokenAccountInitializedEventArgs,\n EphemeralEncryptedTokenAccountInitializedEvent\n> {\n return combineCodec(\n getEphemeralEncryptedTokenAccountInitializedEventEncoder(),\n getEphemeralEncryptedTokenAccountInitializedEventDecoder()\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 getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type FeesClaimedEvent = {\n tokenVault: Address;\n mint: Address;\n feeRecipient: Address;\n amount: bigint;\n timestamp: bigint;\n};\n\nexport type FeesClaimedEventArgs = {\n tokenVault: Address;\n mint: Address;\n feeRecipient: Address;\n amount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getFeesClaimedEventEncoder(): FixedSizeEncoder<FeesClaimedEventArgs> {\n return getStructEncoder([\n ['tokenVault', getAddressEncoder()],\n ['mint', getAddressEncoder()],\n ['feeRecipient', getAddressEncoder()],\n ['amount', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getFeesClaimedEventDecoder(): FixedSizeDecoder<FeesClaimedEvent> {\n return getStructDecoder([\n ['tokenVault', getAddressDecoder()],\n ['mint', getAddressDecoder()],\n ['feeRecipient', 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 getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\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';\n\nexport type MarketCreatedEvent = {\n market: Address;\n creator: Address;\n index: bigint;\n timeToStake: bigint;\n timeToReveal: bigint;\n marketAuthority: Option<Address>;\n authorizedReaderPubkey: Array<number>;\n unstakeDelaySeconds: bigint;\n allowClosingEarly: boolean;\n timestamp: bigint;\n};\n\nexport type MarketCreatedEventArgs = {\n market: Address;\n creator: Address;\n index: number | bigint;\n timeToStake: number | bigint;\n timeToReveal: number | bigint;\n marketAuthority: OptionOrNullable<Address>;\n authorizedReaderPubkey: Array<number>;\n unstakeDelaySeconds: number | bigint;\n allowClosingEarly: boolean;\n timestamp: number | bigint;\n};\n\nexport function getMarketCreatedEventEncoder(): Encoder<MarketCreatedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['creator', getAddressEncoder()],\n ['index', getU64Encoder()],\n ['timeToStake', getU64Encoder()],\n ['timeToReveal', getU64Encoder()],\n ['marketAuthority', getOptionEncoder(getAddressEncoder())],\n ['authorizedReaderPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['unstakeDelaySeconds', getU64Encoder()],\n ['allowClosingEarly', getBooleanEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getMarketCreatedEventDecoder(): Decoder<MarketCreatedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['creator', getAddressDecoder()],\n ['index', getU64Decoder()],\n ['timeToStake', getU64Decoder()],\n ['timeToReveal', getU64Decoder()],\n ['marketAuthority', getOptionDecoder(getAddressDecoder())],\n ['authorizedReaderPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['unstakeDelaySeconds', getU64Decoder()],\n ['allowClosingEarly', getBooleanDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getMarketCreatedEventCodec(): Codec<\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 openTimestamp: bigint;\n timestamp: bigint;\n};\n\nexport type MarketOpenedEventArgs = {\n market: Address;\n creator: Address;\n openTimestamp: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getMarketOpenedEventEncoder(): FixedSizeEncoder<MarketOpenedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['creator', getAddressEncoder()],\n ['openTimestamp', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getMarketOpenedEventDecoder(): FixedSizeDecoder<MarketOpenedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['creator', getAddressDecoder()],\n ['openTimestamp', 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 addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU32Decoder,\n getU32Encoder,\n getUtf8Decoder,\n getUtf8Encoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport type MarketOptionCreatedEvent = {\n option: Address;\n market: Address;\n creator: Address;\n byMarketCreator: boolean;\n index: number;\n name: string;\n timestamp: bigint;\n};\n\nexport type MarketOptionCreatedEventArgs = {\n option: Address;\n market: Address;\n creator: Address;\n byMarketCreator: boolean;\n index: number;\n name: string;\n timestamp: number | bigint;\n};\n\nexport function getMarketOptionCreatedEventEncoder(): Encoder<MarketOptionCreatedEventArgs> {\n return getStructEncoder([\n ['option', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['creator', getAddressEncoder()],\n ['byMarketCreator', getBooleanEncoder()],\n ['index', getU16Encoder()],\n ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getMarketOptionCreatedEventDecoder(): Decoder<MarketOptionCreatedEvent> {\n return getStructDecoder([\n ['option', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['creator', getAddressDecoder()],\n ['byMarketCreator', getBooleanDecoder()],\n ['index', getU16Decoder()],\n ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getMarketOptionCreatedEventCodec(): Codec<\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 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 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 getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type PendingDepositClaimedEvent = {\n user: Address;\n encryptedTokenAccount: Address;\n amount: bigint;\n timestamp: bigint;\n};\n\nexport type PendingDepositClaimedEventArgs = {\n user: Address;\n encryptedTokenAccount: Address;\n amount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getPendingDepositClaimedEventEncoder(): FixedSizeEncoder<PendingDepositClaimedEventArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['encryptedTokenAccount', getAddressEncoder()],\n ['amount', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getPendingDepositClaimedEventDecoder(): FixedSizeDecoder<PendingDepositClaimedEvent> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['encryptedTokenAccount', getAddressDecoder()],\n ['amount', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getPendingDepositClaimedEventCodec(): FixedSizeCodec<\n PendingDepositClaimedEventArgs,\n PendingDepositClaimedEvent\n> {\n return combineCodec(\n getPendingDepositClaimedEventEncoder(),\n getPendingDepositClaimedEventDecoder()\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 RevealPeriodExtendedEvent = {\n market: Address;\n authority: Address;\n newTimeToReveal: bigint;\n timestamp: bigint;\n};\n\nexport type RevealPeriodExtendedEventArgs = {\n market: Address;\n authority: Address;\n newTimeToReveal: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getRevealPeriodExtendedEventEncoder(): FixedSizeEncoder<RevealPeriodExtendedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['authority', getAddressEncoder()],\n ['newTimeToReveal', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRevealPeriodExtendedEventDecoder(): FixedSizeDecoder<RevealPeriodExtendedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['authority', getAddressDecoder()],\n ['newTimeToReveal', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRevealPeriodExtendedEventCodec(): FixedSizeCodec<\n RevealPeriodExtendedEventArgs,\n RevealPeriodExtendedEvent\n> {\n return combineCodec(\n getRevealPeriodExtendedEventEncoder(),\n getRevealPeriodExtendedEventDecoder()\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 getRevealSharesOutputStruct0Decoder,\n getRevealSharesOutputStruct0Encoder,\n type RevealSharesOutputStruct0,\n type RevealSharesOutputStruct0Args,\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 RevealSharesOutput = { field0: RevealSharesOutputStruct0 };\n\nexport type RevealSharesOutputArgs = { field0: RevealSharesOutputStruct0Args };\n\nexport function getRevealSharesOutputEncoder(): FixedSizeEncoder<RevealSharesOutputArgs> {\n return getStructEncoder([['field0', getRevealSharesOutputStruct0Encoder()]]);\n}\n\nexport function getRevealSharesOutputDecoder(): FixedSizeDecoder<RevealSharesOutput> {\n return getStructDecoder([['field0', getRevealSharesOutputStruct0Decoder()]]);\n}\n\nexport function getRevealSharesOutputCodec(): FixedSizeCodec<\n RevealSharesOutputArgs,\n RevealSharesOutput\n> {\n return combineCodec(\n getRevealSharesOutputEncoder(),\n getRevealSharesOutputDecoder()\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 getU128Decoder,\n getU128Encoder,\n getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RevealSharesOutputStruct0 = {\n field0: bigint;\n field1: number;\n field2: {\n encryptionKey: Array<number>;\n nonce: bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport type RevealSharesOutputStruct0Args = {\n field0: number | bigint;\n field1: number;\n field2: {\n encryptionKey: Array<number>;\n nonce: number | bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport function getRevealSharesOutputStruct0Encoder(): FixedSizeEncoder<RevealSharesOutputStruct0Args> {\n return getStructEncoder([\n ['field0', getU64Encoder()],\n ['field1', getU16Encoder()],\n [\n 'field2',\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 getRevealSharesOutputStruct0Decoder(): FixedSizeDecoder<RevealSharesOutputStruct0> {\n return getStructDecoder([\n ['field0', getU64Decoder()],\n ['field1', getU16Decoder()],\n [\n 'field2',\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 getRevealSharesOutputStruct0Codec(): FixedSizeCodec<\n RevealSharesOutputStruct0Args,\n RevealSharesOutputStruct0\n> {\n return combineCodec(\n getRevealSharesOutputStruct0Encoder(),\n getRevealSharesOutputStruct0Decoder()\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 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 RewardClaimedEvent = {\n owner: Address;\n market: Address;\n shareAccount: Address;\n option: number;\n rewardAmount: bigint;\n stakedAtTimestamp: bigint;\n unstakedAtTimestamp: bigint;\n revealedScore: bigint;\n revealedAmount: bigint;\n timestamp: bigint;\n};\n\nexport type RewardClaimedEventArgs = {\n owner: Address;\n market: Address;\n shareAccount: Address;\n option: number;\n rewardAmount: number | bigint;\n stakedAtTimestamp: number | bigint;\n unstakedAtTimestamp: number | bigint;\n revealedScore: number | bigint;\n revealedAmount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getRewardClaimedEventEncoder(): FixedSizeEncoder<RewardClaimedEventArgs> {\n return getStructEncoder([\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['shareAccount', getAddressEncoder()],\n ['option', getU16Encoder()],\n ['rewardAmount', getU64Encoder()],\n ['stakedAtTimestamp', getU64Encoder()],\n ['unstakedAtTimestamp', getU64Encoder()],\n ['revealedScore', getU64Encoder()],\n ['revealedAmount', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRewardClaimedEventDecoder(): FixedSizeDecoder<RewardClaimedEvent> {\n return getStructDecoder([\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['shareAccount', getAddressDecoder()],\n ['option', getU16Decoder()],\n ['rewardAmount', getU64Decoder()],\n ['stakedAtTimestamp', getU64Decoder()],\n ['unstakedAtTimestamp', getU64Decoder()],\n ['revealedScore', getU64Decoder()],\n ['revealedAmount', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRewardClaimedEventCodec(): FixedSizeCodec<\n RewardClaimedEventArgs,\n RewardClaimedEvent\n> {\n return combineCodec(\n getRewardClaimedEventEncoder(),\n getRewardClaimedEventDecoder()\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 RewardPoolIncreasedEvent = {\n market: Address;\n authority: Address;\n oldRewardAmount: bigint;\n newRewardAmount: bigint;\n timestamp: bigint;\n};\n\nexport type RewardPoolIncreasedEventArgs = {\n market: Address;\n authority: Address;\n oldRewardAmount: number | bigint;\n newRewardAmount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getRewardPoolIncreasedEventEncoder(): FixedSizeEncoder<RewardPoolIncreasedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['authority', getAddressEncoder()],\n ['oldRewardAmount', getU64Encoder()],\n ['newRewardAmount', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRewardPoolIncreasedEventDecoder(): FixedSizeDecoder<RewardPoolIncreasedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['authority', getAddressDecoder()],\n ['oldRewardAmount', getU64Decoder()],\n ['newRewardAmount', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRewardPoolIncreasedEventCodec(): FixedSizeCodec<\n RewardPoolIncreasedEventArgs,\n RewardPoolIncreasedEvent\n> {\n return combineCodec(\n getRewardPoolIncreasedEventEncoder(),\n getRewardPoolIncreasedEventDecoder()\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 ShareAccountInitializedEvent = {\n shareAccount: Address;\n owner: Address;\n market: Address;\n timestamp: bigint;\n};\n\nexport type ShareAccountInitializedEventArgs = {\n shareAccount: Address;\n owner: Address;\n market: Address;\n timestamp: number | bigint;\n};\n\nexport function getShareAccountInitializedEventEncoder(): FixedSizeEncoder<ShareAccountInitializedEventArgs> {\n return getStructEncoder([\n ['shareAccount', getAddressEncoder()],\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getShareAccountInitializedEventDecoder(): FixedSizeDecoder<ShareAccountInitializedEvent> {\n return getStructDecoder([\n ['shareAccount', getAddressDecoder()],\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getShareAccountInitializedEventCodec(): FixedSizeCodec<\n ShareAccountInitializedEventArgs,\n ShareAccountInitializedEvent\n> {\n return combineCodec(\n getShareAccountInitializedEventEncoder(),\n getShareAccountInitializedEventDecoder()\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 StakedError = { user: Address; timestamp: bigint };\n\nexport type StakedErrorArgs = { user: Address; timestamp: number | bigint };\n\nexport function getStakedErrorEncoder(): FixedSizeEncoder<StakedErrorArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakedErrorDecoder(): FixedSizeDecoder<StakedError> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakedErrorCodec(): FixedSizeCodec<\n StakedErrorArgs,\n StakedError\n> {\n return combineCodec(getStakedErrorEncoder(), getStakedErrorDecoder());\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 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 encryptedTokenAccount: Address;\n shareAccount: Address;\n shareEncryptedState: Array<Array<number>>;\n shareStateNonce: bigint;\n shareEncryptedStateDisclosure: Array<Array<number>>;\n shareStateDisclosureNonce: bigint;\n encryptedEtaBalance: Array<number>;\n etaBalanceNonce: bigint;\n timestamp: bigint;\n};\n\nexport type StakedEventArgs = {\n user: Address;\n market: Address;\n encryptedTokenAccount: Address;\n shareAccount: Address;\n shareEncryptedState: Array<Array<number>>;\n shareStateNonce: number | bigint;\n shareEncryptedStateDisclosure: Array<Array<number>>;\n shareStateDisclosureNonce: number | bigint;\n encryptedEtaBalance: Array<number>;\n etaBalanceNonce: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getStakedEventEncoder(): FixedSizeEncoder<StakedEventArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['encryptedTokenAccount', getAddressEncoder()],\n ['shareAccount', getAddressEncoder()],\n [\n 'shareEncryptedState',\n getArrayEncoder(getArrayEncoder(getU8Encoder(), { size: 32 }), {\n size: 2,\n }),\n ],\n ['shareStateNonce', getU128Encoder()],\n [\n 'shareEncryptedStateDisclosure',\n getArrayEncoder(getArrayEncoder(getU8Encoder(), { size: 32 }), {\n size: 2,\n }),\n ],\n ['shareStateDisclosureNonce', getU128Encoder()],\n ['encryptedEtaBalance', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['etaBalanceNonce', getU128Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakedEventDecoder(): FixedSizeDecoder<StakedEvent> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['encryptedTokenAccount', getAddressDecoder()],\n ['shareAccount', getAddressDecoder()],\n [\n 'shareEncryptedState',\n getArrayDecoder(getArrayDecoder(getU8Decoder(), { size: 32 }), {\n size: 2,\n }),\n ],\n ['shareStateNonce', getU128Decoder()],\n [\n 'shareEncryptedStateDisclosure',\n getArrayDecoder(getArrayDecoder(getU8Decoder(), { size: 32 }), {\n size: 2,\n }),\n ],\n ['shareStateDisclosureNonce', getU128Decoder()],\n ['encryptedEtaBalance', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['etaBalanceNonce', getU128Decoder()],\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 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 StakeRevealedError = { user: Address; timestamp: bigint };\n\nexport type StakeRevealedErrorArgs = {\n user: Address;\n timestamp: number | bigint;\n};\n\nexport function getStakeRevealedErrorEncoder(): FixedSizeEncoder<StakeRevealedErrorArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakeRevealedErrorDecoder(): FixedSizeDecoder<StakeRevealedError> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakeRevealedErrorCodec(): FixedSizeCodec<\n StakeRevealedErrorArgs,\n StakeRevealedError\n> {\n return combineCodec(\n getStakeRevealedErrorEncoder(),\n getStakeRevealedErrorDecoder()\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 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 StakeRevealedEvent = {\n user: Address;\n market: Address;\n encryptedTokenAccount: Address;\n shareAccount: Address;\n sharesAmount: bigint;\n selectedOption: number;\n timestamp: bigint;\n};\n\nexport type StakeRevealedEventArgs = {\n user: Address;\n market: Address;\n encryptedTokenAccount: Address;\n shareAccount: Address;\n sharesAmount: number | bigint;\n selectedOption: number;\n timestamp: number | bigint;\n};\n\nexport function getStakeRevealedEventEncoder(): FixedSizeEncoder<StakeRevealedEventArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['encryptedTokenAccount', getAddressEncoder()],\n ['shareAccount', getAddressEncoder()],\n ['sharesAmount', getU64Encoder()],\n ['selectedOption', getU16Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakeRevealedEventDecoder(): FixedSizeDecoder<StakeRevealedEvent> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['encryptedTokenAccount', getAddressDecoder()],\n ['shareAccount', getAddressDecoder()],\n ['sharesAmount', getU64Decoder()],\n ['selectedOption', getU16Decoder()],\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 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 TallyIncrementedEvent = {\n owner: Address;\n market: Address;\n shareAccount: Address;\n option: number;\n revealedAmount: bigint;\n userScore: bigint;\n timestamp: bigint;\n};\n\nexport type TallyIncrementedEventArgs = {\n owner: Address;\n market: Address;\n shareAccount: Address;\n option: number;\n revealedAmount: number | bigint;\n userScore: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getTallyIncrementedEventEncoder(): FixedSizeEncoder<TallyIncrementedEventArgs> {\n return getStructEncoder([\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['shareAccount', getAddressEncoder()],\n ['option', getU16Encoder()],\n ['revealedAmount', getU64Encoder()],\n ['userScore', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getTallyIncrementedEventDecoder(): FixedSizeDecoder<TallyIncrementedEvent> {\n return getStructDecoder([\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['shareAccount', getAddressDecoder()],\n ['option', getU16Decoder()],\n ['revealedAmount', getU64Decoder()],\n ['userScore', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getTallyIncrementedEventCodec(): FixedSizeCodec<\n TallyIncrementedEventArgs,\n TallyIncrementedEvent\n> {\n return combineCodec(\n getTallyIncrementedEventEncoder(),\n getTallyIncrementedEventDecoder()\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 type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type UnstakedError = { user: Address; timestamp: bigint };\n\nexport type UnstakedErrorArgs = { user: Address; timestamp: number | bigint };\n\nexport function getUnstakedErrorEncoder(): FixedSizeEncoder<UnstakedErrorArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getUnstakedErrorDecoder(): FixedSizeDecoder<UnstakedError> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getUnstakedErrorCodec(): FixedSizeCodec<\n UnstakedErrorArgs,\n UnstakedError\n> {\n return combineCodec(getUnstakedErrorEncoder(), getUnstakedErrorDecoder());\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 UnstakedEvent = {\n user: Address;\n market: Address;\n encryptedTokenAccount: Address;\n shareAccount: Address;\n timestamp: bigint;\n};\n\nexport type UnstakedEventArgs = {\n user: Address;\n market: Address;\n encryptedTokenAccount: Address;\n shareAccount: Address;\n timestamp: number | bigint;\n};\n\nexport function getUnstakedEventEncoder(): FixedSizeEncoder<UnstakedEventArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['encryptedTokenAccount', getAddressEncoder()],\n ['shareAccount', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getUnstakedEventDecoder(): FixedSizeDecoder<UnstakedEvent> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['encryptedTokenAccount', getAddressDecoder()],\n ['shareAccount', getAddressDecoder()],\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 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\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 UnstakeEarlyOutput = {\n field0: {\n encryptionKey: Array<number>;\n nonce: bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport type UnstakeEarlyOutputArgs = {\n field0: {\n encryptionKey: Array<number>;\n nonce: number | bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport function getUnstakeEarlyOutputEncoder(): FixedSizeEncoder<UnstakeEarlyOutputArgs> {\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}\n\nexport function getUnstakeEarlyOutputDecoder(): FixedSizeDecoder<UnstakeEarlyOutput> {\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}\n\nexport function getUnstakeEarlyOutputCodec(): FixedSizeCodec<\n UnstakeEarlyOutputArgs,\n UnstakeEarlyOutput\n> {\n return combineCodec(\n getUnstakeEarlyOutputEncoder(),\n getUnstakeEarlyOutputDecoder()\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 UnstakeInitiatedEvent = {\n user: Address;\n market: Address;\n shareAccount: Address;\n unstakeableAtTimestamp: bigint;\n timestamp: bigint;\n};\n\nexport type UnstakeInitiatedEventArgs = {\n user: Address;\n market: Address;\n shareAccount: Address;\n unstakeableAtTimestamp: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getUnstakeInitiatedEventEncoder(): FixedSizeEncoder<UnstakeInitiatedEventArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['shareAccount', getAddressEncoder()],\n ['unstakeableAtTimestamp', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getUnstakeInitiatedEventDecoder(): FixedSizeDecoder<UnstakeInitiatedEvent> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['shareAccount', getAddressDecoder()],\n ['unstakeableAtTimestamp', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getUnstakeInitiatedEventCodec(): FixedSizeCodec<\n UnstakeInitiatedEventArgs,\n UnstakeInitiatedEvent\n> {\n return combineCodec(\n getUnstakeInitiatedEventEncoder(),\n getUnstakeInitiatedEventDecoder()\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 getUnwrapEncryptedTokensOutputStruct0Decoder,\n getUnwrapEncryptedTokensOutputStruct0Encoder,\n type UnwrapEncryptedTokensOutputStruct0,\n type UnwrapEncryptedTokensOutputStruct0Args,\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 UnwrapEncryptedTokensOutput = {\n field0: UnwrapEncryptedTokensOutputStruct0;\n};\n\nexport type UnwrapEncryptedTokensOutputArgs = {\n field0: UnwrapEncryptedTokensOutputStruct0Args;\n};\n\nexport function getUnwrapEncryptedTokensOutputEncoder(): FixedSizeEncoder<UnwrapEncryptedTokensOutputArgs> {\n return getStructEncoder([\n ['field0', getUnwrapEncryptedTokensOutputStruct0Encoder()],\n ]);\n}\n\nexport function getUnwrapEncryptedTokensOutputDecoder(): FixedSizeDecoder<UnwrapEncryptedTokensOutput> {\n return getStructDecoder([\n ['field0', getUnwrapEncryptedTokensOutputStruct0Decoder()],\n ]);\n}\n\nexport function getUnwrapEncryptedTokensOutputCodec(): FixedSizeCodec<\n UnwrapEncryptedTokensOutputArgs,\n UnwrapEncryptedTokensOutput\n> {\n return combineCodec(\n getUnwrapEncryptedTokensOutputEncoder(),\n getUnwrapEncryptedTokensOutputDecoder()\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 getBooleanDecoder,\n getBooleanEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type UnwrapEncryptedTokensOutputStruct0 = {\n field0: boolean;\n field1: bigint;\n field2: {\n encryptionKey: Array<number>;\n nonce: bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport type UnwrapEncryptedTokensOutputStruct0Args = {\n field0: boolean;\n field1: number | bigint;\n field2: {\n encryptionKey: Array<number>;\n nonce: number | bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport function getUnwrapEncryptedTokensOutputStruct0Encoder(): FixedSizeEncoder<UnwrapEncryptedTokensOutputStruct0Args> {\n return getStructEncoder([\n ['field0', getBooleanEncoder()],\n ['field1', getU64Encoder()],\n [\n 'field2',\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 getUnwrapEncryptedTokensOutputStruct0Decoder(): FixedSizeDecoder<UnwrapEncryptedTokensOutputStruct0> {\n return getStructDecoder([\n ['field0', getBooleanDecoder()],\n ['field1', getU64Decoder()],\n [\n 'field2',\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 getUnwrapEncryptedTokensOutputStruct0Codec(): FixedSizeCodec<\n UnwrapEncryptedTokensOutputStruct0Args,\n UnwrapEncryptedTokensOutputStruct0\n> {\n return combineCodec(\n getUnwrapEncryptedTokensOutputStruct0Encoder(),\n getUnwrapEncryptedTokensOutputStruct0Decoder()\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 getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type WinningOption = { optionIndex: number; rewardPercentage: number };\n\nexport type WinningOptionArgs = WinningOption;\n\nexport function getWinningOptionEncoder(): FixedSizeEncoder<WinningOptionArgs> {\n return getStructEncoder([\n ['optionIndex', getU16Encoder()],\n ['rewardPercentage', getU8Encoder()],\n ]);\n}\n\nexport function getWinningOptionDecoder(): FixedSizeDecoder<WinningOption> {\n return getStructDecoder([\n ['optionIndex', getU16Decoder()],\n ['rewardPercentage', getU8Decoder()],\n ]);\n}\n\nexport function getWinningOptionCodec(): FixedSizeCodec<\n WinningOptionArgs,\n WinningOption\n> {\n return combineCodec(getWinningOptionEncoder(), getWinningOptionDecoder());\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 type Address,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\nimport {\n getWinningOptionDecoder,\n getWinningOptionEncoder,\n type WinningOption,\n type WinningOptionArgs,\n} from '.';\n\nexport type WinningOptionsSelectedEvent = {\n market: Address;\n authority: Address;\n selectedOptions: Array<WinningOption>;\n timestamp: bigint;\n};\n\nexport type WinningOptionsSelectedEventArgs = {\n market: Address;\n authority: Address;\n selectedOptions: Array<WinningOptionArgs>;\n timestamp: number | bigint;\n};\n\nexport function getWinningOptionsSelectedEventEncoder(): Encoder<WinningOptionsSelectedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['authority', getAddressEncoder()],\n ['selectedOptions', getArrayEncoder(getWinningOptionEncoder())],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getWinningOptionsSelectedEventDecoder(): Decoder<WinningOptionsSelectedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['authority', getAddressDecoder()],\n ['selectedOptions', getArrayDecoder(getWinningOptionDecoder())],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getWinningOptionsSelectedEventCodec(): Codec<\n WinningOptionsSelectedEventArgs,\n WinningOptionsSelectedEvent\n> {\n return combineCodec(\n getWinningOptionsSelectedEventEncoder(),\n getWinningOptionsSelectedEventDecoder()\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 getU128Decoder,\n getU128Encoder,\n getU8Decoder,\n getU8Encoder,\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 WrapEncryptedTokensOutput = {\n field0: {\n encryptionKey: Array<number>;\n nonce: bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport type WrapEncryptedTokensOutputArgs = {\n field0: {\n encryptionKey: Array<number>;\n nonce: number | bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport function getWrapEncryptedTokensOutputEncoder(): FixedSizeEncoder<WrapEncryptedTokensOutputArgs> {\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}\n\nexport function getWrapEncryptedTokensOutputDecoder(): FixedSizeDecoder<WrapEncryptedTokensOutput> {\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}\n\nexport function getWrapEncryptedTokensOutputCodec(): FixedSizeCodec<\n WrapEncryptedTokensOutputArgs,\n WrapEncryptedTokensOutput\n> {\n return combineCodec(\n getWrapEncryptedTokensOutputEncoder(),\n getWrapEncryptedTokensOutputDecoder()\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 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 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 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 '../types';\n\nexport const CLUSTER_DISCRIMINATOR = new Uint8Array([\n 236, 225, 118, 228, 173, 106, 18, 60,\n]);\n\nexport function getClusterDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(CLUSTER_DISCRIMINATOR);\n}\n\nexport type Cluster = {\n discriminator: ReadonlyUint8Array;\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 transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\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 (value) => ({ ...value, discriminator: CLUSTER_DISCRIMINATOR })\n );\n}\n\nexport function getClusterDecoder(): Decoder<Cluster> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\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\nexport function decodeCluster<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<Cluster, TAddress>;\nexport function decodeCluster<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<Cluster, TAddress>;\nexport function decodeCluster<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<Cluster, TAddress> | MaybeAccount<Cluster, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getClusterDecoder()\n );\n}\n\nexport async function fetchCluster<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<Cluster, TAddress>> {\n const maybeAccount = await fetchMaybeCluster(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeCluster<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<Cluster, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeCluster(maybeAccount);\n}\n\nexport async function fetchAllCluster(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<Cluster>[]> {\n const maybeAccounts = await fetchAllMaybeCluster(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeCluster(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<Cluster>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeCluster(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 getAddressDecoder,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\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 getCircuitSourceDecoder,\n getCircuitSourceEncoder,\n getComputationDefinitionMetaDecoder,\n getComputationDefinitionMetaEncoder,\n type CircuitSource,\n type CircuitSourceArgs,\n type ComputationDefinitionMeta,\n type ComputationDefinitionMetaArgs,\n} from '../types';\n\nexport const COMPUTATION_DEFINITION_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 245, 176, 217, 221, 253, 104, 172, 200,\n]);\n\nexport function getComputationDefinitionAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n COMPUTATION_DEFINITION_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type ComputationDefinitionAccount = {\n discriminator: ReadonlyUint8Array;\n finalizationAuthority: Option<Address>;\n cuAmount: bigint;\n definition: ComputationDefinitionMeta;\n circuitSource: CircuitSource;\n bump: number;\n};\n\nexport type ComputationDefinitionAccountArgs = {\n finalizationAuthority: OptionOrNullable<Address>;\n cuAmount: number | bigint;\n definition: ComputationDefinitionMetaArgs;\n circuitSource: CircuitSourceArgs;\n bump: number;\n};\n\nexport function getComputationDefinitionAccountEncoder(): Encoder<ComputationDefinitionAccountArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['finalizationAuthority', getOptionEncoder(getAddressEncoder())],\n ['cuAmount', getU64Encoder()],\n ['definition', getComputationDefinitionMetaEncoder()],\n ['circuitSource', getCircuitSourceEncoder()],\n ['bump', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: COMPUTATION_DEFINITION_ACCOUNT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getComputationDefinitionAccountDecoder(): Decoder<ComputationDefinitionAccount> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['finalizationAuthority', getOptionDecoder(getAddressDecoder())],\n ['cuAmount', getU64Decoder()],\n ['definition', getComputationDefinitionMetaDecoder()],\n ['circuitSource', getCircuitSourceDecoder()],\n ['bump', getU8Decoder()],\n ]);\n}\n\nexport function getComputationDefinitionAccountCodec(): Codec<\n ComputationDefinitionAccountArgs,\n ComputationDefinitionAccount\n> {\n return combineCodec(\n getComputationDefinitionAccountEncoder(),\n getComputationDefinitionAccountDecoder()\n );\n}\n\nexport function decodeComputationDefinitionAccount<\n TAddress extends string = string,\n>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<ComputationDefinitionAccount, TAddress>;\nexport function decodeComputationDefinitionAccount<\n TAddress extends string = string,\n>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<ComputationDefinitionAccount, TAddress>;\nexport function decodeComputationDefinitionAccount<\n TAddress extends string = string,\n>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n | Account<ComputationDefinitionAccount, TAddress>\n | MaybeAccount<ComputationDefinitionAccount, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getComputationDefinitionAccountDecoder()\n );\n}\n\nexport async function fetchComputationDefinitionAccount<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<ComputationDefinitionAccount, TAddress>> {\n const maybeAccount = await fetchMaybeComputationDefinitionAccount(\n rpc,\n address,\n config\n );\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeComputationDefinitionAccount<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<ComputationDefinitionAccount, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeComputationDefinitionAccount(maybeAccount);\n}\n\nexport async function fetchAllComputationDefinitionAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<ComputationDefinitionAccount>[]> {\n const maybeAccounts = await fetchAllMaybeComputationDefinitionAccount(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeComputationDefinitionAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<ComputationDefinitionAccount>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeComputationDefinitionAccount(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 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 ENCRYPTED_TOKEN_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 238, 123, 84, 113, 137, 77, 62, 75,\n]);\n\nexport function getEncryptedTokenAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n ENCRYPTED_TOKEN_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type EncryptedTokenAccount = {\n discriminator: ReadonlyUint8Array;\n encryptedState: Array<Array<number>>;\n bump: number;\n index: bigint;\n owner: Address;\n stateNonce: bigint;\n tokenMint: Address;\n userPubkey: Array<number>;\n locked: boolean;\n pendingDeposit: bigint;\n rentPayer: Option<Address>;\n isInitialized: boolean;\n};\n\nexport type EncryptedTokenAccountArgs = {\n encryptedState: Array<Array<number>>;\n bump: number;\n index: number | bigint;\n owner: Address;\n stateNonce: number | bigint;\n tokenMint: Address;\n userPubkey: Array<number>;\n locked: boolean;\n pendingDeposit: number | bigint;\n rentPayer: OptionOrNullable<Address>;\n isInitialized: boolean;\n};\n\nexport function getEncryptedTokenAccountEncoder(): Encoder<EncryptedTokenAccountArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n [\n 'encryptedState',\n getArrayEncoder(getArrayEncoder(getU8Encoder(), { size: 32 }), {\n size: 1,\n }),\n ],\n ['bump', getU8Encoder()],\n ['index', getU64Encoder()],\n ['owner', getAddressEncoder()],\n ['stateNonce', getU128Encoder()],\n ['tokenMint', getAddressEncoder()],\n ['userPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['locked', getBooleanEncoder()],\n ['pendingDeposit', getU64Encoder()],\n ['rentPayer', getOptionEncoder(getAddressEncoder())],\n ['isInitialized', getBooleanEncoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: ENCRYPTED_TOKEN_ACCOUNT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getEncryptedTokenAccountDecoder(): Decoder<EncryptedTokenAccount> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n [\n 'encryptedState',\n getArrayDecoder(getArrayDecoder(getU8Decoder(), { size: 32 }), {\n size: 1,\n }),\n ],\n ['bump', getU8Decoder()],\n ['index', getU64Decoder()],\n ['owner', getAddressDecoder()],\n ['stateNonce', getU128Decoder()],\n ['tokenMint', getAddressDecoder()],\n ['userPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['locked', getBooleanDecoder()],\n ['pendingDeposit', getU64Decoder()],\n ['rentPayer', getOptionDecoder(getAddressDecoder())],\n ['isInitialized', getBooleanDecoder()],\n ]);\n}\n\nexport function getEncryptedTokenAccountCodec(): Codec<\n EncryptedTokenAccountArgs,\n EncryptedTokenAccount\n> {\n return combineCodec(\n getEncryptedTokenAccountEncoder(),\n getEncryptedTokenAccountDecoder()\n );\n}\n\nexport function decodeEncryptedTokenAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<EncryptedTokenAccount, TAddress>;\nexport function decodeEncryptedTokenAccount<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<EncryptedTokenAccount, TAddress>;\nexport function decodeEncryptedTokenAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n | Account<EncryptedTokenAccount, TAddress>\n | MaybeAccount<EncryptedTokenAccount, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getEncryptedTokenAccountDecoder()\n );\n}\n\nexport async function fetchEncryptedTokenAccount<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<EncryptedTokenAccount, TAddress>> {\n const maybeAccount = await fetchMaybeEncryptedTokenAccount(\n rpc,\n address,\n config\n );\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeEncryptedTokenAccount<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<EncryptedTokenAccount, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeEncryptedTokenAccount(maybeAccount);\n}\n\nexport async function fetchAllEncryptedTokenAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<EncryptedTokenAccount>[]> {\n const maybeAccounts = await fetchAllMaybeEncryptedTokenAccount(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeEncryptedTokenAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<EncryptedTokenAccount>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeEncryptedTokenAccount(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 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 FEE_POOL_DISCRIMINATOR = new Uint8Array([\n 172, 38, 77, 146, 148, 5, 51, 242,\n]);\n\nexport function getFeePoolDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(FEE_POOL_DISCRIMINATOR);\n}\n\nexport type FeePool = { discriminator: ReadonlyUint8Array; bump: number };\n\nexport type FeePoolArgs = { bump: number };\n\nexport function getFeePoolEncoder(): FixedSizeEncoder<FeePoolArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: FEE_POOL_DISCRIMINATOR })\n );\n}\n\nexport function getFeePoolDecoder(): FixedSizeDecoder<FeePool> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ]);\n}\n\nexport function getFeePoolCodec(): FixedSizeCodec<FeePoolArgs, FeePool> {\n return combineCodec(getFeePoolEncoder(), getFeePoolDecoder());\n}\n\nexport function decodeFeePool<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<FeePool, TAddress>;\nexport function decodeFeePool<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<FeePool, TAddress>;\nexport function decodeFeePool<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<FeePool, TAddress> | MaybeAccount<FeePool, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getFeePoolDecoder()\n );\n}\n\nexport async function fetchFeePool<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<FeePool, TAddress>> {\n const maybeAccount = await fetchMaybeFeePool(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeFeePool<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<FeePool, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeFeePool(maybeAccount);\n}\n\nexport async function fetchAllFeePool(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<FeePool>[]> {\n const maybeAccounts = await fetchAllMaybeFeePool(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeFeePool(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<FeePool>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeFeePool(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 getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\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 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 getMxeStatusDecoder,\n getMxeStatusEncoder,\n getUtilityPubkeysDecoder,\n getUtilityPubkeysEncoder,\n type MxeStatus,\n type MxeStatusArgs,\n type UtilityPubkeys,\n type UtilityPubkeysArgs,\n} from '../types';\n\nexport const M_X_E_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 103, 26, 85, 250, 179, 159, 17, 117,\n]);\n\nexport function getMXEAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n M_X_E_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type MXEAccount = {\n discriminator: ReadonlyUint8Array;\n cluster: Option<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 cluster: OptionOrNullable<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 transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['cluster', getOptionEncoder(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 (value) => ({ ...value, discriminator: M_X_E_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getMXEAccountDecoder(): Decoder<MXEAccount> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['cluster', getOptionDecoder(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\nexport function decodeMXEAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<MXEAccount, TAddress>;\nexport function decodeMXEAccount<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<MXEAccount, TAddress>;\nexport function decodeMXEAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<MXEAccount, TAddress> | MaybeAccount<MXEAccount, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getMXEAccountDecoder()\n );\n}\n\nexport async function fetchMXEAccount<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<MXEAccount, TAddress>> {\n const maybeAccount = await fetchMaybeMXEAccount(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeMXEAccount<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<MXEAccount, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeMXEAccount(maybeAccount);\n}\n\nexport async function fetchAllMXEAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<MXEAccount>[]> {\n const maybeAccounts = await fetchAllMaybeMXEAccount(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeMXEAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<MXEAccount>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeMXEAccount(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 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 getWinningOptionDecoder,\n getWinningOptionEncoder,\n type WinningOption,\n type WinningOptionArgs,\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: number;\n openTimestamp: Option<bigint>;\n timeToStake: bigint;\n timeToReveal: bigint;\n selectedOptions: Option<Array<WinningOption>>;\n rewardAmount: bigint;\n marketAuthority: Option<Address>;\n mint: Address;\n earlinessCutoffSeconds: bigint;\n unstakeDelaySeconds: bigint;\n authorizedReaderPubkey: Array<number>;\n allowClosingEarly: boolean;\n};\n\nexport type OpportunityMarketArgs = {\n bump: number;\n creator: Address;\n index: number | bigint;\n totalOptions: number;\n openTimestamp: OptionOrNullable<number | bigint>;\n timeToStake: number | bigint;\n timeToReveal: number | bigint;\n selectedOptions: OptionOrNullable<Array<WinningOptionArgs>>;\n rewardAmount: number | bigint;\n marketAuthority: OptionOrNullable<Address>;\n mint: Address;\n earlinessCutoffSeconds: number | bigint;\n unstakeDelaySeconds: number | bigint;\n authorizedReaderPubkey: Array<number>;\n allowClosingEarly: boolean;\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', getU16Encoder()],\n ['openTimestamp', getOptionEncoder(getU64Encoder())],\n ['timeToStake', getU64Encoder()],\n ['timeToReveal', getU64Encoder()],\n [\n 'selectedOptions',\n getOptionEncoder(getArrayEncoder(getWinningOptionEncoder())),\n ],\n ['rewardAmount', getU64Encoder()],\n ['marketAuthority', getOptionEncoder(getAddressEncoder())],\n ['mint', getAddressEncoder()],\n ['earlinessCutoffSeconds', getU64Encoder()],\n ['unstakeDelaySeconds', getU64Encoder()],\n ['authorizedReaderPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['allowClosingEarly', getBooleanEncoder()],\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', getU16Decoder()],\n ['openTimestamp', getOptionDecoder(getU64Decoder())],\n ['timeToStake', getU64Decoder()],\n ['timeToReveal', getU64Decoder()],\n [\n 'selectedOptions',\n getOptionDecoder(getArrayDecoder(getWinningOptionDecoder())),\n ],\n ['rewardAmount', getU64Decoder()],\n ['marketAuthority', getOptionDecoder(getAddressDecoder())],\n ['mint', getAddressDecoder()],\n ['earlinessCutoffSeconds', getU64Decoder()],\n ['unstakeDelaySeconds', getU64Decoder()],\n ['authorizedReaderPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['allowClosingEarly', getBooleanDecoder()],\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 addDecoderSizePrefix,\n addEncoderSizePrefix,\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 getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\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 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 creator: Address;\n index: number;\n /** Name of the option */\n name: string;\n /** Total shares bought for this option (tally) */\n totalShares: Option<bigint>;\n totalScore: Option<bigint>;\n initialized: boolean;\n};\n\nexport type OpportunityMarketOptionArgs = {\n bump: number;\n creator: Address;\n index: number;\n /** Name of the option */\n name: string;\n /** Total shares bought for this option (tally) */\n totalShares: OptionOrNullable<number | bigint>;\n totalScore: OptionOrNullable<number | bigint>;\n initialized: boolean;\n};\n\nexport function getOpportunityMarketOptionEncoder(): Encoder<OpportunityMarketOptionArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['creator', getAddressEncoder()],\n ['index', getU16Encoder()],\n ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n ['totalShares', getOptionEncoder(getU64Encoder())],\n ['totalScore', getOptionEncoder(getU64Encoder())],\n ['initialized', getBooleanEncoder()],\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 ['creator', getAddressDecoder()],\n ['index', getU16Decoder()],\n ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ['totalShares', getOptionDecoder(getU64Decoder())],\n ['totalScore', getOptionDecoder(getU64Decoder())],\n ['initialized', getBooleanDecoder()],\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 getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\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 SHARE_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 244, 129, 214, 179, 30, 194, 247, 141,\n]);\n\nexport function getShareAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n SHARE_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type ShareAccount = {\n discriminator: ReadonlyUint8Array;\n encryptedState: Array<Array<number>>;\n stateNonce: bigint;\n bump: number;\n owner: Address;\n market: Address;\n encryptedStateDisclosure: Array<Array<number>>;\n stateNonceDisclosure: bigint;\n stakedAtTimestamp: Option<bigint>;\n unstakedAtTimestamp: Option<bigint>;\n revealedAmount: Option<bigint>;\n revealedOption: Option<number>;\n revealedScore: Option<bigint>;\n totalIncremented: boolean;\n unstakeableAtTimestamp: Option<bigint>;\n locked: boolean;\n};\n\nexport type ShareAccountArgs = {\n encryptedState: Array<Array<number>>;\n stateNonce: number | bigint;\n bump: number;\n owner: Address;\n market: Address;\n encryptedStateDisclosure: Array<Array<number>>;\n stateNonceDisclosure: number | bigint;\n stakedAtTimestamp: OptionOrNullable<number | bigint>;\n unstakedAtTimestamp: OptionOrNullable<number | bigint>;\n revealedAmount: OptionOrNullable<number | bigint>;\n revealedOption: OptionOrNullable<number>;\n revealedScore: OptionOrNullable<number | bigint>;\n totalIncremented: boolean;\n unstakeableAtTimestamp: OptionOrNullable<number | bigint>;\n locked: boolean;\n};\n\nexport function getShareAccountEncoder(): Encoder<ShareAccountArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n [\n 'encryptedState',\n getArrayEncoder(getArrayEncoder(getU8Encoder(), { size: 32 }), {\n size: 2,\n }),\n ],\n ['stateNonce', getU128Encoder()],\n ['bump', getU8Encoder()],\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n [\n 'encryptedStateDisclosure',\n getArrayEncoder(getArrayEncoder(getU8Encoder(), { size: 32 }), {\n size: 2,\n }),\n ],\n ['stateNonceDisclosure', getU128Encoder()],\n ['stakedAtTimestamp', getOptionEncoder(getU64Encoder())],\n ['unstakedAtTimestamp', getOptionEncoder(getU64Encoder())],\n ['revealedAmount', getOptionEncoder(getU64Encoder())],\n ['revealedOption', getOptionEncoder(getU16Encoder())],\n ['revealedScore', getOptionEncoder(getU64Encoder())],\n ['totalIncremented', getBooleanEncoder()],\n ['unstakeableAtTimestamp', getOptionEncoder(getU64Encoder())],\n ['locked', getBooleanEncoder()],\n ]),\n (value) => ({ ...value, discriminator: SHARE_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getShareAccountDecoder(): Decoder<ShareAccount> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n [\n 'encryptedState',\n getArrayDecoder(getArrayDecoder(getU8Decoder(), { size: 32 }), {\n size: 2,\n }),\n ],\n ['stateNonce', getU128Decoder()],\n ['bump', getU8Decoder()],\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n [\n 'encryptedStateDisclosure',\n getArrayDecoder(getArrayDecoder(getU8Decoder(), { size: 32 }), {\n size: 2,\n }),\n ],\n ['stateNonceDisclosure', getU128Decoder()],\n ['stakedAtTimestamp', getOptionDecoder(getU64Decoder())],\n ['unstakedAtTimestamp', getOptionDecoder(getU64Decoder())],\n ['revealedAmount', getOptionDecoder(getU64Decoder())],\n ['revealedOption', getOptionDecoder(getU16Decoder())],\n ['revealedScore', getOptionDecoder(getU64Decoder())],\n ['totalIncremented', getBooleanDecoder()],\n ['unstakeableAtTimestamp', getOptionDecoder(getU64Decoder())],\n ['locked', getBooleanDecoder()],\n ]);\n}\n\nexport function getShareAccountCodec(): Codec<ShareAccountArgs, ShareAccount> {\n return combineCodec(getShareAccountEncoder(), getShareAccountDecoder());\n}\n\nexport function decodeShareAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<ShareAccount, TAddress>;\nexport function decodeShareAccount<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<ShareAccount, TAddress>;\nexport function decodeShareAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<ShareAccount, TAddress> | MaybeAccount<ShareAccount, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getShareAccountDecoder()\n );\n}\n\nexport async function fetchShareAccount<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<ShareAccount, TAddress>> {\n const maybeAccount = await fetchMaybeShareAccount(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeShareAccount<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<ShareAccount, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeShareAccount(maybeAccount);\n}\n\nexport async function fetchAllShareAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<ShareAccount>[]> {\n const maybeAccounts = await fetchAllMaybeShareAccount(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeShareAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<ShareAccount>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeShareAccount(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 getAddressDecoder,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\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 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 TOKEN_VAULT_DISCRIMINATOR = new Uint8Array([\n 121, 7, 84, 254, 151, 228, 43, 144,\n]);\n\nexport function getTokenVaultDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(TOKEN_VAULT_DISCRIMINATOR);\n}\n\nexport type TokenVault = {\n discriminator: ReadonlyUint8Array;\n bump: number;\n fundManager: Address;\n mint: Address;\n collectedFees: bigint;\n protocolFeeBp: number;\n};\n\nexport type TokenVaultArgs = {\n bump: number;\n fundManager: Address;\n mint: Address;\n collectedFees: number | bigint;\n protocolFeeBp: number;\n};\n\nexport function getTokenVaultEncoder(): FixedSizeEncoder<TokenVaultArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['fundManager', getAddressEncoder()],\n ['mint', getAddressEncoder()],\n ['collectedFees', getU64Encoder()],\n ['protocolFeeBp', getU16Encoder()],\n ]),\n (value) => ({ ...value, discriminator: TOKEN_VAULT_DISCRIMINATOR })\n );\n}\n\nexport function getTokenVaultDecoder(): FixedSizeDecoder<TokenVault> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ['fundManager', getAddressDecoder()],\n ['mint', getAddressDecoder()],\n ['collectedFees', getU64Decoder()],\n ['protocolFeeBp', getU16Decoder()],\n ]);\n}\n\nexport function getTokenVaultCodec(): FixedSizeCodec<\n TokenVaultArgs,\n TokenVault\n> {\n return combineCodec(getTokenVaultEncoder(), getTokenVaultDecoder());\n}\n\nexport function decodeTokenVault<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<TokenVault, TAddress>;\nexport function decodeTokenVault<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<TokenVault, TAddress>;\nexport function decodeTokenVault<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<TokenVault, TAddress> | MaybeAccount<TokenVault, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getTokenVaultDecoder()\n );\n}\n\nexport async function fetchTokenVault<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<TokenVault, TAddress>> {\n const maybeAccount = await fetchMaybeTokenVault(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeTokenVault<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<TokenVault, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeTokenVault(maybeAccount);\n}\n\nexport async function fetchAllTokenVault(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<TokenVault>[]> {\n const maybeAccounts = await fetchAllMaybeTokenVault(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeTokenVault(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<TokenVault>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeTokenVault(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/** ClusterNotSet: Cluster not set */\nexport const OPPORTUNITY_MARKET_ERROR__CLUSTER_NOT_SET = 0x1771; // 6001\n/** Unauthorized: Unauthorized */\nexport const OPPORTUNITY_MARKET_ERROR__UNAUTHORIZED = 0x1772; // 6002\n/** InsufficientBalance: Insufficient balance */\nexport const OPPORTUNITY_MARKET_ERROR__INSUFFICIENT_BALANCE = 0x1773; // 6003\n/** InsufficientRewardFunding: Insufficient reward funding */\nexport const OPPORTUNITY_MARKET_ERROR__INSUFFICIENT_REWARD_FUNDING = 0x1774; // 6004\n/** InvalidTimestamp: Timestamp must be in the future */\nexport const OPPORTUNITY_MARKET_ERROR__INVALID_TIMESTAMP = 0x1775; // 6005\n/** MarketAlreadyOpen: Market is already open */\nexport const OPPORTUNITY_MARKET_ERROR__MARKET_ALREADY_OPEN = 0x1776; // 6006\n/** InvalidOptionIndex: Invalid option index */\nexport const OPPORTUNITY_MARKET_ERROR__INVALID_OPTION_INDEX = 0x1777; // 6007\n/** MarketNotOpen: Market is not open */\nexport const OPPORTUNITY_MARKET_ERROR__MARKET_NOT_OPEN = 0x1778; // 6008\n/** StakingNotActive: Staking period is not active */\nexport const OPPORTUNITY_MARKET_ERROR__STAKING_NOT_ACTIVE = 0x1779; // 6009\n/** WinnerAlreadySelected: Market winner already selected */\nexport const OPPORTUNITY_MARKET_ERROR__WINNER_ALREADY_SELECTED = 0x177a; // 6010\n/** AlreadyRevealed: Shares already revealed */\nexport const OPPORTUNITY_MARKET_ERROR__ALREADY_REVEALED = 0x177b; // 6011\n/** MarketNotResolved: Staking period not over */\nexport const OPPORTUNITY_MARKET_ERROR__MARKET_NOT_RESOLVED = 0x177c; // 6012\n/** NotRevealed: Shares not yet revealed */\nexport const OPPORTUNITY_MARKET_ERROR__NOT_REVEALED = 0x177d; // 6013\n/** TallyAlreadyIncremented: Tally already incremented for this share 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: Shares already unstaked */\nexport const OPPORTUNITY_MARKET_ERROR__ALREADY_UNSTAKED = 0x1782; // 6018\n/** AlreadyPurchased: Shares already purchased for this share account */\nexport const OPPORTUNITY_MARKET_ERROR__ALREADY_PURCHASED = 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, shares, 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/** UnstakeDelayNotMet: Unstake delay period has not passed yet */\nexport const OPPORTUNITY_MARKET_ERROR__UNSTAKE_DELAY_NOT_MET = 0x1788; // 6024\n/** UnstakeNotInitiated: Unstake has not been initiated */\nexport const OPPORTUNITY_MARKET_ERROR__UNSTAKE_NOT_INITIATED = 0x1789; // 6025\n/** ClosingEarlyNotAllowed: Market cannot be closed before stake period ends */\nexport const OPPORTUNITY_MARKET_ERROR__CLOSING_EARLY_NOT_ALLOWED = 0x178a; // 6026\n/** NoFeesToClaim: No fees to claim */\nexport const OPPORTUNITY_MARKET_ERROR__NO_FEES_TO_CLAIM = 0x178b; // 6027\n/** InvalidWinningOptionsInput: Invalid winning options input */\nexport const OPPORTUNITY_MARKET_ERROR__INVALID_WINNING_OPTIONS_INPUT = 0x178c; // 6028\n/** RewardAmountNotIncreased: New reward amount must be greater than current */\nexport const OPPORTUNITY_MARKET_ERROR__REWARD_AMOUNT_NOT_INCREASED = 0x178d; // 6029\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_PURCHASED\n | typeof OPPORTUNITY_MARKET_ERROR__ALREADY_REVEALED\n | typeof OPPORTUNITY_MARKET_ERROR__ALREADY_UNSTAKED\n | typeof OPPORTUNITY_MARKET_ERROR__CLOSING_EARLY_NOT_ALLOWED\n | typeof OPPORTUNITY_MARKET_ERROR__CLUSTER_NOT_SET\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_MINT\n | typeof OPPORTUNITY_MARKET_ERROR__INVALID_OPTION_INDEX\n | typeof OPPORTUNITY_MARKET_ERROR__INVALID_TIMESTAMP\n | typeof OPPORTUNITY_MARKET_ERROR__INVALID_WINNING_OPTIONS_INPUT\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__NOT_REVEALED\n | typeof OPPORTUNITY_MARKET_ERROR__OVERFLOW\n | typeof OPPORTUNITY_MARKET_ERROR__REVEAL_PERIOD_ENDED\n | typeof OPPORTUNITY_MARKET_ERROR__REWARD_AMOUNT_NOT_INCREASED\n | typeof OPPORTUNITY_MARKET_ERROR__STAKING_NOT_ACTIVE\n | typeof OPPORTUNITY_MARKET_ERROR__TALLY_ALREADY_INCREMENTED\n | typeof OPPORTUNITY_MARKET_ERROR__UNAUTHORIZED\n | typeof OPPORTUNITY_MARKET_ERROR__UNSTAKE_DELAY_NOT_MET\n | typeof OPPORTUNITY_MARKET_ERROR__UNSTAKE_NOT_INITIATED\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, shares, or below minimum deposit`,\n [OPPORTUNITY_MARKET_ERROR__ALREADY_PURCHASED]: `Shares already purchased for this share account`,\n [OPPORTUNITY_MARKET_ERROR__ALREADY_REVEALED]: `Shares already revealed`,\n [OPPORTUNITY_MARKET_ERROR__ALREADY_UNSTAKED]: `Shares already unstaked`,\n [OPPORTUNITY_MARKET_ERROR__CLOSING_EARLY_NOT_ALLOWED]: `Market cannot be closed before stake period ends`,\n [OPPORTUNITY_MARKET_ERROR__CLUSTER_NOT_SET]: `Cluster not set`,\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_MINT]: `Token mint does not match account mint`,\n [OPPORTUNITY_MARKET_ERROR__INVALID_OPTION_INDEX]: `Invalid option index`,\n [OPPORTUNITY_MARKET_ERROR__INVALID_TIMESTAMP]: `Timestamp must be in the future`,\n [OPPORTUNITY_MARKET_ERROR__INVALID_WINNING_OPTIONS_INPUT]: `Invalid winning options input`,\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]: `Staking period not over`,\n [OPPORTUNITY_MARKET_ERROR__NO_FEES_TO_CLAIM]: `No fees to claim`,\n [OPPORTUNITY_MARKET_ERROR__NOT_REVEALED]: `Shares not yet revealed`,\n [OPPORTUNITY_MARKET_ERROR__OVERFLOW]: `Arithmetic overflow`,\n [OPPORTUNITY_MARKET_ERROR__REVEAL_PERIOD_ENDED]: `Reveal period has already ended`,\n [OPPORTUNITY_MARKET_ERROR__REWARD_AMOUNT_NOT_INCREASED]: `New reward amount must be greater than current`,\n [OPPORTUNITY_MARKET_ERROR__STAKING_NOT_ACTIVE]: `Staking period is not active`,\n [OPPORTUNITY_MARKET_ERROR__TALLY_ALREADY_INCREMENTED]: `Tally already incremented for this share account`,\n [OPPORTUNITY_MARKET_ERROR__UNAUTHORIZED]: `Unauthorized`,\n [OPPORTUNITY_MARKET_ERROR__UNSTAKE_DELAY_NOT_MET]: `Unstake delay period has not passed yet`,\n [OPPORTUNITY_MARKET_ERROR__UNSTAKE_NOT_INITIATED]: `Unstake has not been initiated`,\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 ParsedAddMarketOptionAsCreatorInstruction,\n type ParsedAddMarketOptionInstruction,\n type ParsedAddOptionStakeCallbackInstruction,\n type ParsedAddOptionStakeCompDefInstruction,\n type ParsedBuyOpportunityMarketSharesCallbackInstruction,\n type ParsedBuyOpportunityMarketSharesCompDefInstruction,\n type ParsedClaimFeesInstruction,\n type ParsedClaimPendingDepositInstruction,\n type ParsedCloseEphemeralEncryptedTokenAccountCallbackInstruction,\n type ParsedCloseEphemeralEncryptedTokenAccountCompDefInstruction,\n type ParsedCloseEphemeralEncryptedTokenAccountInstruction,\n type ParsedCloseShareAccountInstruction,\n type ParsedCreateMarketInstruction,\n type ParsedDoUnstakeEarlyInstruction,\n type ParsedExtendRevealPeriodInstruction,\n type ParsedIncreaseRewardPoolInstruction,\n type ParsedIncrementOptionTallyInstruction,\n type ParsedInitCentralStateInstruction,\n type ParsedInitEncryptedTokenAccountInstruction,\n type ParsedInitEphemeralEncryptedTokenAccountInstruction,\n type ParsedInitShareAccountInstruction,\n type ParsedInitTokenVaultInstruction,\n type ParsedOpenMarketInstruction,\n type ParsedRevealSharesCallbackInstruction,\n type ParsedRevealSharesCompDefInstruction,\n type ParsedRevealSharesInstruction,\n type ParsedSelectWinningOptionsInstruction,\n type ParsedStakeInstruction,\n type ParsedTransferCentralStateAuthorityInstruction,\n type ParsedUnstakeEarlyCallbackInstruction,\n type ParsedUnstakeEarlyCompDefInstruction,\n type ParsedUnstakeEarlyInstruction,\n type ParsedUnwrapEncryptedTokensCallbackInstruction,\n type ParsedUnwrapEncryptedTokensCompDefInstruction,\n type ParsedUnwrapEncryptedTokensInstruction,\n type ParsedUpdateCentralStateInstruction,\n type ParsedWrapEncryptedTokensCallbackInstruction,\n type ParsedWrapEncryptedTokensCompDefInstruction,\n type ParsedWrapEncryptedTokensInstruction,\n} from '../instructions';\n\nexport const OPPORTUNITY_MARKET_PROGRAM_ADDRESS =\n 'bncZ1gDqgqhSWFzcxjeMoCtqN7odS8wYn1nS5tXZ9jA' as Address<'bncZ1gDqgqhSWFzcxjeMoCtqN7odS8wYn1nS5tXZ9jA'>;\n\nexport enum OpportunityMarketAccount {\n ArciumSignerAccount,\n CentralState,\n ClockAccount,\n Cluster,\n ComputationDefinitionAccount,\n EncryptedTokenAccount,\n FeePool,\n MXEAccount,\n OpportunityMarket,\n OpportunityMarketOption,\n ShareAccount,\n TokenVault,\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([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([201, 49, 35, 231, 4, 164, 205, 91])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.CentralState;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([152, 171, 158, 195, 75, 61, 51, 8])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.ClockAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([236, 225, 118, 228, 173, 106, 18, 60])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.Cluster;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([245, 176, 217, 221, 253, 104, 172, 200])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.ComputationDefinitionAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([238, 123, 84, 113, 137, 77, 62, 75])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.EncryptedTokenAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([172, 38, 77, 146, 148, 5, 51, 242])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.FeePool;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([103, 26, 85, 250, 179, 159, 17, 117])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.MXEAccount;\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([244, 129, 214, 179, 30, 194, 247, 141])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.ShareAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([121, 7, 84, 254, 151, 228, 43, 144])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.TokenVault;\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 AddMarketOptionAsCreator,\n AddOptionStakeCallback,\n AddOptionStakeCompDef,\n BuyOpportunityMarketSharesCallback,\n BuyOpportunityMarketSharesCompDef,\n ClaimFees,\n ClaimPendingDeposit,\n CloseEphemeralEncryptedTokenAccount,\n CloseEphemeralEncryptedTokenAccountCallback,\n CloseEphemeralEncryptedTokenAccountCompDef,\n CloseShareAccount,\n CreateMarket,\n DoUnstakeEarly,\n ExtendRevealPeriod,\n IncreaseRewardPool,\n IncrementOptionTally,\n InitCentralState,\n InitEncryptedTokenAccount,\n InitEphemeralEncryptedTokenAccount,\n InitShareAccount,\n InitTokenVault,\n OpenMarket,\n RevealShares,\n RevealSharesCallback,\n RevealSharesCompDef,\n SelectWinningOptions,\n Stake,\n TransferCentralStateAuthority,\n UnstakeEarly,\n UnstakeEarlyCallback,\n UnstakeEarlyCompDef,\n UnwrapEncryptedTokens,\n UnwrapEncryptedTokensCallback,\n UnwrapEncryptedTokensCompDef,\n UpdateCentralState,\n WrapEncryptedTokens,\n WrapEncryptedTokensCallback,\n WrapEncryptedTokensCompDef,\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([216, 154, 167, 90, 134, 172, 43, 68])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.AddMarketOptionAsCreator;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([58, 174, 2, 200, 118, 153, 169, 10])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.AddOptionStakeCallback;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([214, 157, 74, 10, 70, 212, 4, 46])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.AddOptionStakeCompDef;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([177, 167, 6, 168, 16, 41, 123, 23])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.BuyOpportunityMarketSharesCallback;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([111, 144, 68, 110, 33, 204, 64, 235])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.BuyOpportunityMarketSharesCompDef;\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([236, 140, 88, 225, 51, 46, 77, 249])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.ClaimPendingDeposit;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([30, 176, 151, 78, 234, 64, 254, 63])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.CloseEphemeralEncryptedTokenAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([169, 52, 248, 50, 36, 66, 181, 9])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.CloseEphemeralEncryptedTokenAccountCallback;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([162, 99, 122, 48, 158, 203, 176, 243])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.CloseEphemeralEncryptedTokenAccountCompDef;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([67, 139, 193, 149, 242, 202, 59, 214])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.CloseShareAccount;\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([23, 184, 57, 106, 191, 197, 209, 50])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.DoUnstakeEarly;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([95, 102, 32, 59, 88, 1, 211, 128])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.ExtendRevealPeriod;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([140, 244, 44, 96, 126, 219, 140, 0])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.IncreaseRewardPool;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([93, 109, 206, 212, 231, 51, 71, 122])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.IncrementOptionTally;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([132, 108, 150, 180, 190, 48, 103, 90])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.InitCentralState;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([50, 44, 236, 188, 218, 183, 120, 61])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.InitEncryptedTokenAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([193, 174, 116, 225, 159, 78, 6, 234])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.InitEphemeralEncryptedTokenAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([141, 106, 216, 55, 166, 167, 139, 141])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.InitShareAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([203, 26, 194, 169, 252, 226, 179, 180])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.InitTokenVault;\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([35, 237, 35, 4, 200, 197, 110, 118])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.RevealShares;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([181, 56, 156, 218, 30, 234, 255, 68])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.RevealSharesCallback;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([101, 145, 43, 177, 171, 13, 172, 254])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.RevealSharesCompDef;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([56, 237, 171, 43, 247, 124, 100, 20])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.SelectWinningOptions;\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([237, 33, 80, 239, 189, 157, 253, 90])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.TransferCentralStateAuthority;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([246, 212, 81, 180, 65, 2, 126, 125])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.UnstakeEarly;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([106, 110, 72, 0, 25, 127, 188, 205])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.UnstakeEarlyCallback;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([40, 120, 116, 55, 117, 67, 141, 9])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.UnstakeEarlyCompDef;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([223, 93, 223, 112, 29, 86, 208, 219])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.UnwrapEncryptedTokens;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([79, 46, 246, 46, 89, 103, 215, 38])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.UnwrapEncryptedTokensCallback;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([130, 70, 53, 253, 16, 169, 50, 36])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.UnwrapEncryptedTokensCompDef;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([228, 211, 60, 53, 115, 153, 149, 194])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.UpdateCentralState;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([249, 160, 73, 35, 110, 134, 22, 106])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.WrapEncryptedTokens;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([27, 163, 220, 185, 248, 98, 6, 225])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.WrapEncryptedTokensCallback;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([197, 168, 125, 251, 47, 209, 49, 126])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.WrapEncryptedTokensCompDef;\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 = 'bncZ1gDqgqhSWFzcxjeMoCtqN7odS8wYn1nS5tXZ9jA',\n> =\n | ({\n instructionType: OpportunityMarketInstruction.AddMarketOption;\n } & ParsedAddMarketOptionInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.AddMarketOptionAsCreator;\n } & ParsedAddMarketOptionAsCreatorInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.AddOptionStakeCallback;\n } & ParsedAddOptionStakeCallbackInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.AddOptionStakeCompDef;\n } & ParsedAddOptionStakeCompDefInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.BuyOpportunityMarketSharesCallback;\n } & ParsedBuyOpportunityMarketSharesCallbackInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.BuyOpportunityMarketSharesCompDef;\n } & ParsedBuyOpportunityMarketSharesCompDefInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.ClaimFees;\n } & ParsedClaimFeesInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.ClaimPendingDeposit;\n } & ParsedClaimPendingDepositInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CloseEphemeralEncryptedTokenAccount;\n } & ParsedCloseEphemeralEncryptedTokenAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CloseEphemeralEncryptedTokenAccountCallback;\n } & ParsedCloseEphemeralEncryptedTokenAccountCallbackInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CloseEphemeralEncryptedTokenAccountCompDef;\n } & ParsedCloseEphemeralEncryptedTokenAccountCompDefInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CloseShareAccount;\n } & ParsedCloseShareAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CreateMarket;\n } & ParsedCreateMarketInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.DoUnstakeEarly;\n } & ParsedDoUnstakeEarlyInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.ExtendRevealPeriod;\n } & ParsedExtendRevealPeriodInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.IncreaseRewardPool;\n } & ParsedIncreaseRewardPoolInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.IncrementOptionTally;\n } & ParsedIncrementOptionTallyInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.InitCentralState;\n } & ParsedInitCentralStateInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.InitEncryptedTokenAccount;\n } & ParsedInitEncryptedTokenAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.InitEphemeralEncryptedTokenAccount;\n } & ParsedInitEphemeralEncryptedTokenAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.InitShareAccount;\n } & ParsedInitShareAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.InitTokenVault;\n } & ParsedInitTokenVaultInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.OpenMarket;\n } & ParsedOpenMarketInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.RevealShares;\n } & ParsedRevealSharesInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.RevealSharesCallback;\n } & ParsedRevealSharesCallbackInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.RevealSharesCompDef;\n } & ParsedRevealSharesCompDefInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.SelectWinningOptions;\n } & ParsedSelectWinningOptionsInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.Stake;\n } & ParsedStakeInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.TransferCentralStateAuthority;\n } & ParsedTransferCentralStateAuthorityInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.UnstakeEarly;\n } & ParsedUnstakeEarlyInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.UnstakeEarlyCallback;\n } & ParsedUnstakeEarlyCallbackInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.UnstakeEarlyCompDef;\n } & ParsedUnstakeEarlyCompDefInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.UnwrapEncryptedTokens;\n } & ParsedUnwrapEncryptedTokensInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.UnwrapEncryptedTokensCallback;\n } & ParsedUnwrapEncryptedTokensCallbackInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.UnwrapEncryptedTokensCompDef;\n } & ParsedUnwrapEncryptedTokensCompDefInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.UpdateCentralState;\n } & ParsedUpdateCentralStateInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.WrapEncryptedTokens;\n } & ParsedWrapEncryptedTokensInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.WrapEncryptedTokensCallback;\n } & ParsedWrapEncryptedTokensCallbackInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.WrapEncryptedTokensCompDef;\n } & ParsedWrapEncryptedTokensCompDefInstruction<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 addDecoderSizePrefix,\n addEncoderSizePrefix,\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 getU16Decoder,\n getU16Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\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 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 TAccountCreator extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountCentralState extends string | AccountMeta<string> = string,\n TAccountOption extends string | AccountMeta<string> = string,\n TAccountSourceEta extends string | AccountMeta<string> = string,\n TAccountShareAccount 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 TAccountCreator extends string\n ? WritableSignerAccount<TAccountCreator> &\n AccountSignerMeta<TAccountCreator>\n : TAccountCreator,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountCentralState extends string\n ? ReadonlyAccount<TAccountCentralState>\n : TAccountCentralState,\n TAccountOption extends string\n ? WritableAccount<TAccountOption>\n : TAccountOption,\n TAccountSourceEta extends string\n ? WritableAccount<TAccountSourceEta>\n : TAccountSourceEta,\n TAccountShareAccount extends string\n ? WritableAccount<TAccountShareAccount>\n : TAccountShareAccount,\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 AddMarketOptionInstructionData = {\n discriminator: ReadonlyUint8Array;\n computationOffset: bigint;\n optionIndex: number;\n shareAccountId: number;\n name: string;\n amountCiphertext: Array<number>;\n inputNonce: bigint;\n authorizedReaderNonce: bigint;\n};\n\nexport type AddMarketOptionInstructionDataArgs = {\n computationOffset: number | bigint;\n optionIndex: number;\n shareAccountId: number;\n name: string;\n amountCiphertext: Array<number>;\n inputNonce: number | bigint;\n authorizedReaderNonce: number | bigint;\n};\n\nexport function getAddMarketOptionInstructionDataEncoder(): Encoder<AddMarketOptionInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['computationOffset', getU64Encoder()],\n ['optionIndex', getU16Encoder()],\n ['shareAccountId', getU32Encoder()],\n ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n ['amountCiphertext', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['inputNonce', getU128Encoder()],\n ['authorizedReaderNonce', getU128Encoder()],\n ]),\n (value) => ({ ...value, discriminator: ADD_MARKET_OPTION_DISCRIMINATOR })\n );\n}\n\nexport function getAddMarketOptionInstructionDataDecoder(): Decoder<AddMarketOptionInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['computationOffset', getU64Decoder()],\n ['optionIndex', getU16Decoder()],\n ['shareAccountId', getU32Decoder()],\n ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ['amountCiphertext', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['inputNonce', getU128Decoder()],\n ['authorizedReaderNonce', getU128Decoder()],\n ]);\n}\n\nexport function getAddMarketOptionInstructionDataCodec(): Codec<\n AddMarketOptionInstructionDataArgs,\n AddMarketOptionInstructionData\n> {\n return combineCodec(\n getAddMarketOptionInstructionDataEncoder(),\n getAddMarketOptionInstructionDataDecoder()\n );\n}\n\nexport type AddMarketOptionAsyncInput<\n TAccountCreator extends string = string,\n TAccountMarket extends string = string,\n TAccountCentralState extends string = string,\n TAccountOption extends string = string,\n TAccountSourceEta extends string = string,\n TAccountShareAccount 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 creator: TransactionSigner<TAccountCreator>;\n market: Address<TAccountMarket>;\n centralState?: Address<TAccountCentralState>;\n option?: Address<TAccountOption>;\n sourceEta: Address<TAccountSourceEta>;\n shareAccount?: Address<TAccountShareAccount>;\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: AddMarketOptionInstructionDataArgs['computationOffset'];\n optionIndex: AddMarketOptionInstructionDataArgs['optionIndex'];\n shareAccountId: AddMarketOptionInstructionDataArgs['shareAccountId'];\n name: AddMarketOptionInstructionDataArgs['name'];\n amountCiphertext: AddMarketOptionInstructionDataArgs['amountCiphertext'];\n inputNonce: AddMarketOptionInstructionDataArgs['inputNonce'];\n authorizedReaderNonce: AddMarketOptionInstructionDataArgs['authorizedReaderNonce'];\n};\n\nexport async function getAddMarketOptionInstructionAsync<\n TAccountCreator extends string,\n TAccountMarket extends string,\n TAccountCentralState extends string,\n TAccountOption extends string,\n TAccountSourceEta extends string,\n TAccountShareAccount 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: AddMarketOptionAsyncInput<\n TAccountCreator,\n TAccountMarket,\n TAccountCentralState,\n TAccountOption,\n TAccountSourceEta,\n TAccountShareAccount,\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 AddMarketOptionInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountMarket,\n TAccountCentralState,\n TAccountOption,\n TAccountSourceEta,\n TAccountShareAccount,\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 creator: { value: input.creator ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n centralState: { value: input.centralState ?? null, isWritable: false },\n option: { value: input.option ?? null, isWritable: true },\n sourceEta: { value: input.sourceEta ?? null, isWritable: true },\n shareAccount: { value: input.shareAccount ?? 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.centralState.value) {\n accounts.centralState.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 99, 101, 110, 116, 114, 97, 108, 95, 115, 116, 97, 116, 101,\n ])\n ),\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 getU16Encoder().encode(expectSome(args.optionIndex)),\n ],\n });\n }\n if (!accounts.shareAccount.value) {\n accounts.shareAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 104, 97, 114, 101, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.creator.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU32Encoder().encode(expectSome(args.shareAccountId)),\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.creator),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.centralState),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.sourceEta),\n getAccountMeta(accounts.shareAccount),\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: getAddMarketOptionInstructionDataEncoder().encode(\n args as AddMarketOptionInstructionDataArgs\n ),\n programAddress,\n } as AddMarketOptionInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountMarket,\n TAccountCentralState,\n TAccountOption,\n TAccountSourceEta,\n TAccountShareAccount,\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 AddMarketOptionInput<\n TAccountCreator extends string = string,\n TAccountMarket extends string = string,\n TAccountCentralState extends string = string,\n TAccountOption extends string = string,\n TAccountSourceEta extends string = string,\n TAccountShareAccount 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 creator: TransactionSigner<TAccountCreator>;\n market: Address<TAccountMarket>;\n centralState: Address<TAccountCentralState>;\n option: Address<TAccountOption>;\n sourceEta: Address<TAccountSourceEta>;\n shareAccount: Address<TAccountShareAccount>;\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: AddMarketOptionInstructionDataArgs['computationOffset'];\n optionIndex: AddMarketOptionInstructionDataArgs['optionIndex'];\n shareAccountId: AddMarketOptionInstructionDataArgs['shareAccountId'];\n name: AddMarketOptionInstructionDataArgs['name'];\n amountCiphertext: AddMarketOptionInstructionDataArgs['amountCiphertext'];\n inputNonce: AddMarketOptionInstructionDataArgs['inputNonce'];\n authorizedReaderNonce: AddMarketOptionInstructionDataArgs['authorizedReaderNonce'];\n};\n\nexport function getAddMarketOptionInstruction<\n TAccountCreator extends string,\n TAccountMarket extends string,\n TAccountCentralState extends string,\n TAccountOption extends string,\n TAccountSourceEta extends string,\n TAccountShareAccount 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: AddMarketOptionInput<\n TAccountCreator,\n TAccountMarket,\n TAccountCentralState,\n TAccountOption,\n TAccountSourceEta,\n TAccountShareAccount,\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): AddMarketOptionInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountMarket,\n TAccountCentralState,\n TAccountOption,\n TAccountSourceEta,\n TAccountShareAccount,\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 creator: { value: input.creator ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n centralState: { value: input.centralState ?? null, isWritable: false },\n option: { value: input.option ?? null, isWritable: true },\n sourceEta: { value: input.sourceEta ?? null, isWritable: true },\n shareAccount: { value: input.shareAccount ?? 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.creator),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.centralState),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.sourceEta),\n getAccountMeta(accounts.shareAccount),\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: getAddMarketOptionInstructionDataEncoder().encode(\n args as AddMarketOptionInstructionDataArgs\n ),\n programAddress,\n } as AddMarketOptionInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountMarket,\n TAccountCentralState,\n TAccountOption,\n TAccountSourceEta,\n TAccountShareAccount,\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 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 creator: TAccountMetas[0];\n market: TAccountMetas[1];\n centralState: TAccountMetas[2];\n option: TAccountMetas[3];\n sourceEta: TAccountMetas[4];\n shareAccount: TAccountMetas[5];\n signPdaAccount: TAccountMetas[6];\n mxeAccount: TAccountMetas[7];\n mempoolAccount: TAccountMetas[8];\n executingPool: TAccountMetas[9];\n computationAccount: TAccountMetas[10];\n compDefAccount: TAccountMetas[11];\n clusterAccount: TAccountMetas[12];\n poolAccount: TAccountMetas[13];\n clockAccount: TAccountMetas[14];\n systemProgram: TAccountMetas[15];\n arciumProgram: TAccountMetas[16];\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 < 17) {\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 market: getNextAccount(),\n centralState: getNextAccount(),\n option: getNextAccount(),\n sourceEta: getNextAccount(),\n shareAccount: 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: 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 addDecoderSizePrefix,\n addEncoderSizePrefix,\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU32Decoder,\n getU32Encoder,\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 ADD_MARKET_OPTION_AS_CREATOR_DISCRIMINATOR = new Uint8Array([\n 216, 154, 167, 90, 134, 172, 43, 68,\n]);\n\nexport function getAddMarketOptionAsCreatorDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n ADD_MARKET_OPTION_AS_CREATOR_DISCRIMINATOR\n );\n}\n\nexport type AddMarketOptionAsCreatorInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\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 TAccountCreator extends string\n ? WritableSignerAccount<TAccountCreator> &\n AccountSignerMeta<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 AddMarketOptionAsCreatorInstructionData = {\n discriminator: ReadonlyUint8Array;\n optionIndex: number;\n name: string;\n};\n\nexport type AddMarketOptionAsCreatorInstructionDataArgs = {\n optionIndex: number;\n name: string;\n};\n\nexport function getAddMarketOptionAsCreatorInstructionDataEncoder(): Encoder<AddMarketOptionAsCreatorInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['optionIndex', getU16Encoder()],\n ['name', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: ADD_MARKET_OPTION_AS_CREATOR_DISCRIMINATOR,\n })\n );\n}\n\nexport function getAddMarketOptionAsCreatorInstructionDataDecoder(): Decoder<AddMarketOptionAsCreatorInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['optionIndex', getU16Decoder()],\n ['name', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n ]);\n}\n\nexport function getAddMarketOptionAsCreatorInstructionDataCodec(): Codec<\n AddMarketOptionAsCreatorInstructionDataArgs,\n AddMarketOptionAsCreatorInstructionData\n> {\n return combineCodec(\n getAddMarketOptionAsCreatorInstructionDataEncoder(),\n getAddMarketOptionAsCreatorInstructionDataDecoder()\n );\n}\n\nexport type AddMarketOptionAsCreatorAsyncInput<\n TAccountCreator extends string = string,\n TAccountMarket extends string = string,\n TAccountOption extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n creator: TransactionSigner<TAccountCreator>;\n market: Address<TAccountMarket>;\n option?: Address<TAccountOption>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionIndex: AddMarketOptionAsCreatorInstructionDataArgs['optionIndex'];\n name: AddMarketOptionAsCreatorInstructionDataArgs['name'];\n};\n\nexport async function getAddMarketOptionAsCreatorInstructionAsync<\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: AddMarketOptionAsCreatorAsyncInput<\n TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n AddMarketOptionAsCreatorInstruction<\n TProgramAddress,\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 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 getU16Encoder().encode(expectSome(args.optionIndex)),\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.creator),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getAddMarketOptionAsCreatorInstructionDataEncoder().encode(\n args as AddMarketOptionAsCreatorInstructionDataArgs\n ),\n programAddress,\n } as AddMarketOptionAsCreatorInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type AddMarketOptionAsCreatorInput<\n TAccountCreator extends string = string,\n TAccountMarket extends string = string,\n TAccountOption extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n creator: TransactionSigner<TAccountCreator>;\n market: Address<TAccountMarket>;\n option: Address<TAccountOption>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionIndex: AddMarketOptionAsCreatorInstructionDataArgs['optionIndex'];\n name: AddMarketOptionAsCreatorInstructionDataArgs['name'];\n};\n\nexport function getAddMarketOptionAsCreatorInstruction<\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: AddMarketOptionAsCreatorInput<\n TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): AddMarketOptionAsCreatorInstruction<\n TProgramAddress,\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 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.creator),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getAddMarketOptionAsCreatorInstructionDataEncoder().encode(\n args as AddMarketOptionAsCreatorInstructionDataArgs\n ),\n programAddress,\n } as AddMarketOptionAsCreatorInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedAddMarketOptionAsCreatorInstruction<\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 market: TAccountMetas[1];\n option: TAccountMetas[2];\n systemProgram: TAccountMetas[3];\n };\n data: AddMarketOptionAsCreatorInstructionData;\n};\n\nexport function parseAddMarketOptionAsCreatorInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedAddMarketOptionAsCreatorInstruction<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 creator: getNextAccount(),\n market: getNextAccount(),\n option: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getAddMarketOptionAsCreatorInstructionDataDecoder().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 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 getAddOptionStakeOutputDecoder,\n getAddOptionStakeOutputEncoder,\n type AddOptionStakeOutput,\n type AddOptionStakeOutputArgs,\n} from '../types';\n\nexport const ADD_OPTION_STAKE_CALLBACK_DISCRIMINATOR = new Uint8Array([\n 58, 174, 2, 200, 118, 153, 169, 10,\n]);\n\nexport function getAddOptionStakeCallbackDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n ADD_OPTION_STAKE_CALLBACK_DISCRIMINATOR\n );\n}\n\nexport type AddOptionStakeCallbackInstruction<\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 TAccountSourceEta extends string | AccountMeta<string> = string,\n TAccountShareAccount 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 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 TAccountSourceEta extends string\n ? WritableAccount<TAccountSourceEta>\n : TAccountSourceEta,\n TAccountShareAccount extends string\n ? WritableAccount<TAccountShareAccount>\n : TAccountShareAccount,\n TAccountOption extends string\n ? WritableAccount<TAccountOption>\n : TAccountOption,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type AddOptionStakeCallbackInstructionData = {\n discriminator: ReadonlyUint8Array;\n output:\n | {\n __kind: 'Success';\n fields: readonly [AddOptionStakeOutput, Array<number>];\n }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [AddOptionStakeOutput];\n };\n};\n\nexport type AddOptionStakeCallbackInstructionDataArgs = {\n output:\n | {\n __kind: 'Success';\n fields: readonly [AddOptionStakeOutputArgs, Array<number>];\n }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [AddOptionStakeOutputArgs];\n };\n};\n\nexport function getAddOptionStakeCallbackInstructionDataEncoder(): Encoder<AddOptionStakeCallbackInstructionDataArgs> {\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 getAddOptionStakeOutputEncoder(),\n getArrayEncoder(getU8Encoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitEncoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructEncoder([\n ['fields', getTupleEncoder([getAddOptionStakeOutputEncoder()])],\n ]),\n ],\n ]),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: ADD_OPTION_STAKE_CALLBACK_DISCRIMINATOR,\n })\n );\n}\n\nexport function getAddOptionStakeCallbackInstructionDataDecoder(): Decoder<AddOptionStakeCallbackInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n [\n 'output',\n getDiscriminatedUnionDecoder([\n [\n 'Success',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([\n getAddOptionStakeOutputDecoder(),\n getArrayDecoder(getU8Decoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitDecoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructDecoder([\n ['fields', getTupleDecoder([getAddOptionStakeOutputDecoder()])],\n ]),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getAddOptionStakeCallbackInstructionDataCodec(): Codec<\n AddOptionStakeCallbackInstructionDataArgs,\n AddOptionStakeCallbackInstructionData\n> {\n return combineCodec(\n getAddOptionStakeCallbackInstructionDataEncoder(),\n getAddOptionStakeCallbackInstructionDataDecoder()\n );\n}\n\nexport type AddOptionStakeCallbackInput<\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 TAccountSourceEta extends string = string,\n TAccountShareAccount extends string = string,\n TAccountOption 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 sourceEta: Address<TAccountSourceEta>;\n shareAccount: Address<TAccountShareAccount>;\n option: Address<TAccountOption>;\n output: AddOptionStakeCallbackInstructionDataArgs['output'];\n};\n\nexport function getAddOptionStakeCallbackInstruction<\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 TAccountSourceEta extends string,\n TAccountShareAccount extends string,\n TAccountOption extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: AddOptionStakeCallbackInput<\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountSourceEta,\n TAccountShareAccount,\n TAccountOption\n >,\n config?: { programAddress?: TProgramAddress }\n): AddOptionStakeCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountSourceEta,\n TAccountShareAccount,\n TAccountOption\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 sourceEta: { value: input.sourceEta ?? null, isWritable: true },\n shareAccount: { value: input.shareAccount ?? 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.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.sourceEta),\n getAccountMeta(accounts.shareAccount),\n getAccountMeta(accounts.option),\n ],\n data: getAddOptionStakeCallbackInstructionDataEncoder().encode(\n args as AddOptionStakeCallbackInstructionDataArgs\n ),\n programAddress,\n } as AddOptionStakeCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountSourceEta,\n TAccountShareAccount,\n TAccountOption\n >);\n}\n\nexport type ParsedAddOptionStakeCallbackInstruction<\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 sourceEta: TAccountMetas[6];\n shareAccount: TAccountMetas[7];\n option: TAccountMetas[8];\n };\n data: AddOptionStakeCallbackInstructionData;\n};\n\nexport function parseAddOptionStakeCallbackInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedAddOptionStakeCallbackInstruction<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 arciumProgram: getNextAccount(),\n compDefAccount: getNextAccount(),\n mxeAccount: getNextAccount(),\n computationAccount: getNextAccount(),\n clusterAccount: getNextAccount(),\n instructionsSysvar: getNextAccount(),\n sourceEta: getNextAccount(),\n shareAccount: getNextAccount(),\n option: getNextAccount(),\n },\n data: getAddOptionStakeCallbackInstructionDataDecoder().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 ADD_OPTION_STAKE_COMP_DEF_DISCRIMINATOR = new Uint8Array([\n 214, 157, 74, 10, 70, 212, 4, 46,\n]);\n\nexport function getAddOptionStakeCompDefDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n ADD_OPTION_STAKE_COMP_DEF_DISCRIMINATOR\n );\n}\n\nexport type AddOptionStakeCompDefInstruction<\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 AddOptionStakeCompDefInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type AddOptionStakeCompDefInstructionDataArgs = {};\n\nexport function getAddOptionStakeCompDefInstructionDataEncoder(): FixedSizeEncoder<AddOptionStakeCompDefInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({\n ...value,\n discriminator: ADD_OPTION_STAKE_COMP_DEF_DISCRIMINATOR,\n })\n );\n}\n\nexport function getAddOptionStakeCompDefInstructionDataDecoder(): FixedSizeDecoder<AddOptionStakeCompDefInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getAddOptionStakeCompDefInstructionDataCodec(): FixedSizeCodec<\n AddOptionStakeCompDefInstructionDataArgs,\n AddOptionStakeCompDefInstructionData\n> {\n return combineCodec(\n getAddOptionStakeCompDefInstructionDataEncoder(),\n getAddOptionStakeCompDefInstructionDataDecoder()\n );\n}\n\nexport type AddOptionStakeCompDefInput<\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 getAddOptionStakeCompDefInstruction<\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: AddOptionStakeCompDefInput<\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): AddOptionStakeCompDefInstruction<\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: getAddOptionStakeCompDefInstructionDataEncoder().encode({}),\n programAddress,\n } as AddOptionStakeCompDefInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedAddOptionStakeCompDefInstruction<\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: AddOptionStakeCompDefInstructionData;\n};\n\nexport function parseAddOptionStakeCompDefInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedAddOptionStakeCompDefInstruction<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: getAddOptionStakeCompDefInstructionDataDecoder().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 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 getBuyOpportunityMarketSharesOutputDecoder,\n getBuyOpportunityMarketSharesOutputEncoder,\n type BuyOpportunityMarketSharesOutput,\n type BuyOpportunityMarketSharesOutputArgs,\n} from '../types';\n\nexport const BUY_OPPORTUNITY_MARKET_SHARES_CALLBACK_DISCRIMINATOR =\n new Uint8Array([177, 167, 6, 168, 16, 41, 123, 23]);\n\nexport function getBuyOpportunityMarketSharesCallbackDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n BUY_OPPORTUNITY_MARKET_SHARES_CALLBACK_DISCRIMINATOR\n );\n}\n\nexport type BuyOpportunityMarketSharesCallbackInstruction<\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 TAccountUserEncryptedTokenAccount extends string | AccountMeta<string> =\n string,\n TAccountShareAccount 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 TAccountUserEncryptedTokenAccount extends string\n ? WritableAccount<TAccountUserEncryptedTokenAccount>\n : TAccountUserEncryptedTokenAccount,\n TAccountShareAccount extends string\n ? WritableAccount<TAccountShareAccount>\n : TAccountShareAccount,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type BuyOpportunityMarketSharesCallbackInstructionData = {\n discriminator: ReadonlyUint8Array;\n output:\n | {\n __kind: 'Success';\n fields: readonly [BuyOpportunityMarketSharesOutput, Array<number>];\n }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [BuyOpportunityMarketSharesOutput];\n };\n};\n\nexport type BuyOpportunityMarketSharesCallbackInstructionDataArgs = {\n output:\n | {\n __kind: 'Success';\n fields: readonly [BuyOpportunityMarketSharesOutputArgs, Array<number>];\n }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [BuyOpportunityMarketSharesOutputArgs];\n };\n};\n\nexport function getBuyOpportunityMarketSharesCallbackInstructionDataEncoder(): Encoder<BuyOpportunityMarketSharesCallbackInstructionDataArgs> {\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 getBuyOpportunityMarketSharesOutputEncoder(),\n getArrayEncoder(getU8Encoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitEncoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructEncoder([\n [\n 'fields',\n getTupleEncoder([getBuyOpportunityMarketSharesOutputEncoder()]),\n ],\n ]),\n ],\n ]),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: BUY_OPPORTUNITY_MARKET_SHARES_CALLBACK_DISCRIMINATOR,\n })\n );\n}\n\nexport function getBuyOpportunityMarketSharesCallbackInstructionDataDecoder(): Decoder<BuyOpportunityMarketSharesCallbackInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n [\n 'output',\n getDiscriminatedUnionDecoder([\n [\n 'Success',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([\n getBuyOpportunityMarketSharesOutputDecoder(),\n getArrayDecoder(getU8Decoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitDecoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([getBuyOpportunityMarketSharesOutputDecoder()]),\n ],\n ]),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getBuyOpportunityMarketSharesCallbackInstructionDataCodec(): Codec<\n BuyOpportunityMarketSharesCallbackInstructionDataArgs,\n BuyOpportunityMarketSharesCallbackInstructionData\n> {\n return combineCodec(\n getBuyOpportunityMarketSharesCallbackInstructionDataEncoder(),\n getBuyOpportunityMarketSharesCallbackInstructionDataDecoder()\n );\n}\n\nexport type BuyOpportunityMarketSharesCallbackInput<\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 TAccountUserEncryptedTokenAccount extends string = string,\n TAccountShareAccount 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 userEncryptedTokenAccount: Address<TAccountUserEncryptedTokenAccount>;\n shareAccount: Address<TAccountShareAccount>;\n output: BuyOpportunityMarketSharesCallbackInstructionDataArgs['output'];\n};\n\nexport function getBuyOpportunityMarketSharesCallbackInstruction<\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 TAccountUserEncryptedTokenAccount extends string,\n TAccountShareAccount extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: BuyOpportunityMarketSharesCallbackInput<\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountUserEncryptedTokenAccount,\n TAccountShareAccount\n >,\n config?: { programAddress?: TProgramAddress }\n): BuyOpportunityMarketSharesCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountUserEncryptedTokenAccount,\n TAccountShareAccount\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 userEncryptedTokenAccount: {\n value: input.userEncryptedTokenAccount ?? null,\n isWritable: true,\n },\n shareAccount: { value: input.shareAccount ?? 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.userEncryptedTokenAccount),\n getAccountMeta(accounts.shareAccount),\n ],\n data: getBuyOpportunityMarketSharesCallbackInstructionDataEncoder().encode(\n args as BuyOpportunityMarketSharesCallbackInstructionDataArgs\n ),\n programAddress,\n } as BuyOpportunityMarketSharesCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountUserEncryptedTokenAccount,\n TAccountShareAccount\n >);\n}\n\nexport type ParsedBuyOpportunityMarketSharesCallbackInstruction<\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 userEncryptedTokenAccount: TAccountMetas[6];\n shareAccount: TAccountMetas[7];\n };\n data: BuyOpportunityMarketSharesCallbackInstructionData;\n};\n\nexport function parseBuyOpportunityMarketSharesCallbackInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedBuyOpportunityMarketSharesCallbackInstruction<\n TProgram,\n TAccountMetas\n> {\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 userEncryptedTokenAccount: getNextAccount(),\n shareAccount: getNextAccount(),\n },\n data: getBuyOpportunityMarketSharesCallbackInstructionDataDecoder().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 BUY_OPPORTUNITY_MARKET_SHARES_COMP_DEF_DISCRIMINATOR =\n new Uint8Array([111, 144, 68, 110, 33, 204, 64, 235]);\n\nexport function getBuyOpportunityMarketSharesCompDefDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n BUY_OPPORTUNITY_MARKET_SHARES_COMP_DEF_DISCRIMINATOR\n );\n}\n\nexport type BuyOpportunityMarketSharesCompDefInstruction<\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 BuyOpportunityMarketSharesCompDefInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type BuyOpportunityMarketSharesCompDefInstructionDataArgs = {};\n\nexport function getBuyOpportunityMarketSharesCompDefInstructionDataEncoder(): FixedSizeEncoder<BuyOpportunityMarketSharesCompDefInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({\n ...value,\n discriminator: BUY_OPPORTUNITY_MARKET_SHARES_COMP_DEF_DISCRIMINATOR,\n })\n );\n}\n\nexport function getBuyOpportunityMarketSharesCompDefInstructionDataDecoder(): FixedSizeDecoder<BuyOpportunityMarketSharesCompDefInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getBuyOpportunityMarketSharesCompDefInstructionDataCodec(): FixedSizeCodec<\n BuyOpportunityMarketSharesCompDefInstructionDataArgs,\n BuyOpportunityMarketSharesCompDefInstructionData\n> {\n return combineCodec(\n getBuyOpportunityMarketSharesCompDefInstructionDataEncoder(),\n getBuyOpportunityMarketSharesCompDefInstructionDataDecoder()\n );\n}\n\nexport type BuyOpportunityMarketSharesCompDefInput<\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 getBuyOpportunityMarketSharesCompDefInstruction<\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: BuyOpportunityMarketSharesCompDefInput<\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): BuyOpportunityMarketSharesCompDefInstruction<\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: getBuyOpportunityMarketSharesCompDefInstructionDataEncoder().encode(\n {}\n ),\n programAddress,\n } as BuyOpportunityMarketSharesCompDefInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedBuyOpportunityMarketSharesCompDefInstruction<\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: BuyOpportunityMarketSharesCompDefInstructionData;\n};\n\nexport function parseBuyOpportunityMarketSharesCompDefInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedBuyOpportunityMarketSharesCompDefInstruction<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: getBuyOpportunityMarketSharesCompDefInstructionDataDecoder().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 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 TAccountCentralState extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountTokenVault extends string | AccountMeta<string> = string,\n TAccountTokenVaultAta extends string | AccountMeta<string> = string,\n TAccountFeeRecipientTokenAccount extends string | AccountMeta<string> =\n 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 TAccountCentralState extends string\n ? ReadonlyAccount<TAccountCentralState>\n : TAccountCentralState,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountTokenVault extends string\n ? WritableAccount<TAccountTokenVault>\n : TAccountTokenVault,\n TAccountTokenVaultAta extends string\n ? WritableAccount<TAccountTokenVaultAta>\n : TAccountTokenVaultAta,\n TAccountFeeRecipientTokenAccount extends string\n ? WritableAccount<TAccountFeeRecipientTokenAccount>\n : TAccountFeeRecipientTokenAccount,\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 TAccountCentralState extends string = string,\n TAccountTokenMint extends string = string,\n TAccountTokenVault extends string = string,\n TAccountTokenVaultAta extends string = string,\n TAccountFeeRecipientTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n centralState?: Address<TAccountCentralState>;\n tokenMint: Address<TAccountTokenMint>;\n tokenVault?: Address<TAccountTokenVault>;\n tokenVaultAta?: Address<TAccountTokenVaultAta>;\n feeRecipientTokenAccount: Address<TAccountFeeRecipientTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport async function getClaimFeesInstructionAsync<\n TAccountSigner extends string,\n TAccountCentralState extends string,\n TAccountTokenMint extends string,\n TAccountTokenVault extends string,\n TAccountTokenVaultAta extends string,\n TAccountFeeRecipientTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ClaimFeesAsyncInput<\n TAccountSigner,\n TAccountCentralState,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountFeeRecipientTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n ClaimFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountCentralState,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountFeeRecipientTokenAccount,\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 centralState: { value: input.centralState ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n tokenVault: { value: input.tokenVault ?? null, isWritable: true },\n tokenVaultAta: { value: input.tokenVaultAta ?? null, isWritable: true },\n feeRecipientTokenAccount: {\n value: input.feeRecipientTokenAccount ?? 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.centralState.value) {\n accounts.centralState.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 99, 101, 110, 116, 114, 97, 108, 95, 115, 116, 97, 116, 101,\n ])\n ),\n ],\n });\n }\n if (!accounts.tokenVault.value) {\n accounts.tokenVault.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116])\n ),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.tokenVaultAta.value) {\n accounts.tokenVaultAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.tokenVault.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.centralState),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.tokenVaultAta),\n getAccountMeta(accounts.feeRecipientTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getClaimFeesInstructionDataEncoder().encode({}),\n programAddress,\n } as ClaimFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountCentralState,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountFeeRecipientTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type ClaimFeesInput<\n TAccountSigner extends string = string,\n TAccountCentralState extends string = string,\n TAccountTokenMint extends string = string,\n TAccountTokenVault extends string = string,\n TAccountTokenVaultAta extends string = string,\n TAccountFeeRecipientTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n centralState: Address<TAccountCentralState>;\n tokenMint: Address<TAccountTokenMint>;\n tokenVault: Address<TAccountTokenVault>;\n tokenVaultAta: Address<TAccountTokenVaultAta>;\n feeRecipientTokenAccount: Address<TAccountFeeRecipientTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport function getClaimFeesInstruction<\n TAccountSigner extends string,\n TAccountCentralState extends string,\n TAccountTokenMint extends string,\n TAccountTokenVault extends string,\n TAccountTokenVaultAta extends string,\n TAccountFeeRecipientTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ClaimFeesInput<\n TAccountSigner,\n TAccountCentralState,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountFeeRecipientTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): ClaimFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountCentralState,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountFeeRecipientTokenAccount,\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 centralState: { value: input.centralState ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n tokenVault: { value: input.tokenVault ?? null, isWritable: true },\n tokenVaultAta: { value: input.tokenVaultAta ?? null, isWritable: true },\n feeRecipientTokenAccount: {\n value: input.feeRecipientTokenAccount ?? 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.centralState),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.tokenVaultAta),\n getAccountMeta(accounts.feeRecipientTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getClaimFeesInstructionDataEncoder().encode({}),\n programAddress,\n } as ClaimFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountCentralState,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountFeeRecipientTokenAccount,\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 centralState: TAccountMetas[1];\n tokenMint: TAccountMetas[2];\n tokenVault: TAccountMetas[3];\n tokenVaultAta: TAccountMetas[4];\n feeRecipientTokenAccount: 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 centralState: getNextAccount(),\n tokenMint: getNextAccount(),\n tokenVault: getNextAccount(),\n tokenVaultAta: getNextAccount(),\n feeRecipientTokenAccount: 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_PENDING_DEPOSIT_DISCRIMINATOR = new Uint8Array([\n 236, 140, 88, 225, 51, 46, 77, 249,\n]);\n\nexport function getClaimPendingDepositDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLAIM_PENDING_DEPOSIT_DISCRIMINATOR\n );\n}\n\nexport type ClaimPendingDepositInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountEncryptedTokenAccount extends string | AccountMeta<string> = string,\n TAccountTokenVault extends string | AccountMeta<string> = string,\n TAccountTokenVaultAta extends string | AccountMeta<string> = string,\n TAccountSignerTokenAccount 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 ? WritableSignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountEncryptedTokenAccount extends string\n ? WritableAccount<TAccountEncryptedTokenAccount>\n : TAccountEncryptedTokenAccount,\n TAccountTokenVault extends string\n ? ReadonlyAccount<TAccountTokenVault>\n : TAccountTokenVault,\n TAccountTokenVaultAta extends string\n ? WritableAccount<TAccountTokenVaultAta>\n : TAccountTokenVaultAta,\n TAccountSignerTokenAccount extends string\n ? WritableAccount<TAccountSignerTokenAccount>\n : TAccountSignerTokenAccount,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ClaimPendingDepositInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type ClaimPendingDepositInstructionDataArgs = {};\n\nexport function getClaimPendingDepositInstructionDataEncoder(): FixedSizeEncoder<ClaimPendingDepositInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({\n ...value,\n discriminator: CLAIM_PENDING_DEPOSIT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getClaimPendingDepositInstructionDataDecoder(): FixedSizeDecoder<ClaimPendingDepositInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getClaimPendingDepositInstructionDataCodec(): FixedSizeCodec<\n ClaimPendingDepositInstructionDataArgs,\n ClaimPendingDepositInstructionData\n> {\n return combineCodec(\n getClaimPendingDepositInstructionDataEncoder(),\n getClaimPendingDepositInstructionDataDecoder()\n );\n}\n\nexport type ClaimPendingDepositAsyncInput<\n TAccountSigner extends string = string,\n TAccountTokenMint extends string = string,\n TAccountEncryptedTokenAccount extends string = string,\n TAccountTokenVault extends string = string,\n TAccountTokenVaultAta extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n tokenMint: Address<TAccountTokenMint>;\n encryptedTokenAccount: Address<TAccountEncryptedTokenAccount>;\n /** Token vault holding all wrapped tokens */\n tokenVault?: Address<TAccountTokenVault>;\n /** ATA owned by TokenVault PDA (source of pending tokens) */\n tokenVaultAta?: Address<TAccountTokenVaultAta>;\n /** Signer's token account (destination for claimed tokens) */\n signerTokenAccount: Address<TAccountSignerTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport async function getClaimPendingDepositInstructionAsync<\n TAccountSigner extends string,\n TAccountTokenMint extends string,\n TAccountEncryptedTokenAccount extends string,\n TAccountTokenVault extends string,\n TAccountTokenVaultAta extends string,\n TAccountSignerTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ClaimPendingDepositAsyncInput<\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountSignerTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n ClaimPendingDepositInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountSignerTokenAccount,\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: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n encryptedTokenAccount: {\n value: input.encryptedTokenAccount ?? null,\n isWritable: true,\n },\n tokenVault: { value: input.tokenVault ?? null, isWritable: false },\n tokenVaultAta: { value: input.tokenVaultAta ?? null, isWritable: true },\n signerTokenAccount: {\n value: input.signerTokenAccount ?? 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.tokenVault.value) {\n accounts.tokenVault.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116])\n ),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.tokenVaultAta.value) {\n accounts.tokenVaultAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.tokenVault.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.tokenMint),\n getAccountMeta(accounts.encryptedTokenAccount),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.tokenVaultAta),\n getAccountMeta(accounts.signerTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getClaimPendingDepositInstructionDataEncoder().encode({}),\n programAddress,\n } as ClaimPendingDepositInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountSignerTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type ClaimPendingDepositInput<\n TAccountSigner extends string = string,\n TAccountTokenMint extends string = string,\n TAccountEncryptedTokenAccount extends string = string,\n TAccountTokenVault extends string = string,\n TAccountTokenVaultAta extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n tokenMint: Address<TAccountTokenMint>;\n encryptedTokenAccount: Address<TAccountEncryptedTokenAccount>;\n /** Token vault holding all wrapped tokens */\n tokenVault: Address<TAccountTokenVault>;\n /** ATA owned by TokenVault PDA (source of pending tokens) */\n tokenVaultAta: Address<TAccountTokenVaultAta>;\n /** Signer's token account (destination for claimed tokens) */\n signerTokenAccount: Address<TAccountSignerTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport function getClaimPendingDepositInstruction<\n TAccountSigner extends string,\n TAccountTokenMint extends string,\n TAccountEncryptedTokenAccount extends string,\n TAccountTokenVault extends string,\n TAccountTokenVaultAta extends string,\n TAccountSignerTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ClaimPendingDepositInput<\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountSignerTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): ClaimPendingDepositInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountSignerTokenAccount,\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: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n encryptedTokenAccount: {\n value: input.encryptedTokenAccount ?? null,\n isWritable: true,\n },\n tokenVault: { value: input.tokenVault ?? null, isWritable: false },\n tokenVaultAta: { value: input.tokenVaultAta ?? null, isWritable: true },\n signerTokenAccount: {\n value: input.signerTokenAccount ?? 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.tokenMint),\n getAccountMeta(accounts.encryptedTokenAccount),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.tokenVaultAta),\n getAccountMeta(accounts.signerTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getClaimPendingDepositInstructionDataEncoder().encode({}),\n programAddress,\n } as ClaimPendingDepositInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountSignerTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type ParsedClaimPendingDepositInstruction<\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 tokenMint: TAccountMetas[1];\n encryptedTokenAccount: TAccountMetas[2];\n /** Token vault holding all wrapped tokens */\n tokenVault: TAccountMetas[3];\n /** ATA owned by TokenVault PDA (source of pending tokens) */\n tokenVaultAta: TAccountMetas[4];\n /** Signer's token account (destination for claimed tokens) */\n signerTokenAccount: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n };\n data: ClaimPendingDepositInstructionData;\n};\n\nexport function parseClaimPendingDepositInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedClaimPendingDepositInstruction<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 tokenMint: getNextAccount(),\n encryptedTokenAccount: getNextAccount(),\n tokenVault: getNextAccount(),\n tokenVaultAta: getNextAccount(),\n signerTokenAccount: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getClaimPendingDepositInstructionDataDecoder().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 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_EPHEMERAL_ENCRYPTED_TOKEN_ACCOUNT_DISCRIMINATOR =\n new Uint8Array([30, 176, 151, 78, 234, 64, 254, 63]);\n\nexport function getCloseEphemeralEncryptedTokenAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLOSE_EPHEMERAL_ENCRYPTED_TOKEN_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type CloseEphemeralEncryptedTokenAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountRegularEncryptedTokenAccount extends string | AccountMeta<string> =\n string,\n TAccountEphemeralEncryptedTokenAccount extends string | AccountMeta<string> =\n string,\n TAccountRentRecipient 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 TAccountTokenProgram extends string | AccountMeta<string> = string,\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 TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountRegularEncryptedTokenAccount extends string\n ? WritableAccount<TAccountRegularEncryptedTokenAccount>\n : TAccountRegularEncryptedTokenAccount,\n TAccountEphemeralEncryptedTokenAccount extends string\n ? WritableAccount<TAccountEphemeralEncryptedTokenAccount>\n : TAccountEphemeralEncryptedTokenAccount,\n TAccountRentRecipient extends string\n ? WritableAccount<TAccountRentRecipient>\n : TAccountRentRecipient,\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 TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountArciumProgram extends string\n ? ReadonlyAccount<TAccountArciumProgram>\n : TAccountArciumProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CloseEphemeralEncryptedTokenAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n computationOffset: bigint;\n index: bigint;\n};\n\nexport type CloseEphemeralEncryptedTokenAccountInstructionDataArgs = {\n computationOffset: number | bigint;\n index: number | bigint;\n};\n\nexport function getCloseEphemeralEncryptedTokenAccountInstructionDataEncoder(): FixedSizeEncoder<CloseEphemeralEncryptedTokenAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['computationOffset', getU64Encoder()],\n ['index', getU64Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: CLOSE_EPHEMERAL_ENCRYPTED_TOKEN_ACCOUNT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getCloseEphemeralEncryptedTokenAccountInstructionDataDecoder(): FixedSizeDecoder<CloseEphemeralEncryptedTokenAccountInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['computationOffset', getU64Decoder()],\n ['index', getU64Decoder()],\n ]);\n}\n\nexport function getCloseEphemeralEncryptedTokenAccountInstructionDataCodec(): FixedSizeCodec<\n CloseEphemeralEncryptedTokenAccountInstructionDataArgs,\n CloseEphemeralEncryptedTokenAccountInstructionData\n> {\n return combineCodec(\n getCloseEphemeralEncryptedTokenAccountInstructionDataEncoder(),\n getCloseEphemeralEncryptedTokenAccountInstructionDataDecoder()\n );\n}\n\nexport type CloseEphemeralEncryptedTokenAccountAsyncInput<\n TAccountSigner extends string = string,\n TAccountTokenMint extends string = string,\n TAccountRegularEncryptedTokenAccount extends string = string,\n TAccountEphemeralEncryptedTokenAccount extends string = string,\n TAccountRentRecipient 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 TAccountTokenProgram extends string = string,\n TAccountArciumProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n tokenMint: Address<TAccountTokenMint>;\n regularEncryptedTokenAccount?: Address<TAccountRegularEncryptedTokenAccount>;\n /** Ephemeral ETA to close (index != 0), must be owned by signer */\n ephemeralEncryptedTokenAccount?: Address<TAccountEphemeralEncryptedTokenAccount>;\n rentRecipient: Address<TAccountRentRecipient>;\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 tokenProgram: Address<TAccountTokenProgram>;\n arciumProgram?: Address<TAccountArciumProgram>;\n computationOffset: CloseEphemeralEncryptedTokenAccountInstructionDataArgs['computationOffset'];\n index: CloseEphemeralEncryptedTokenAccountInstructionDataArgs['index'];\n};\n\nexport async function getCloseEphemeralEncryptedTokenAccountInstructionAsync<\n TAccountSigner extends string,\n TAccountTokenMint extends string,\n TAccountRegularEncryptedTokenAccount extends string,\n TAccountEphemeralEncryptedTokenAccount extends string,\n TAccountRentRecipient 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 TAccountTokenProgram extends string,\n TAccountArciumProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseEphemeralEncryptedTokenAccountAsyncInput<\n TAccountSigner,\n TAccountTokenMint,\n TAccountRegularEncryptedTokenAccount,\n TAccountEphemeralEncryptedTokenAccount,\n TAccountRentRecipient,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountArciumProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CloseEphemeralEncryptedTokenAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountRegularEncryptedTokenAccount,\n TAccountEphemeralEncryptedTokenAccount,\n TAccountRentRecipient,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountTokenProgram,\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 tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n regularEncryptedTokenAccount: {\n value: input.regularEncryptedTokenAccount ?? null,\n isWritable: true,\n },\n ephemeralEncryptedTokenAccount: {\n value: input.ephemeralEncryptedTokenAccount ?? null,\n isWritable: true,\n },\n rentRecipient: { value: input.rentRecipient ?? 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 tokenProgram: { value: input.tokenProgram ?? 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.regularEncryptedTokenAccount.value) {\n accounts.regularEncryptedTokenAccount.value =\n await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 101, 110, 99, 114, 121, 112, 116, 101, 100, 95, 116, 111, 107,\n 101, 110, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n getAddressEncoder().encode(expectAddress(accounts.signer.value)),\n getBytesEncoder().encode(new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0])),\n ],\n });\n }\n if (!accounts.ephemeralEncryptedTokenAccount.value) {\n accounts.ephemeralEncryptedTokenAccount.value =\n await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 101, 110, 99, 114, 121, 112, 116, 101, 100, 95, 116, 111, 107,\n 101, 110, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n getAddressEncoder().encode(expectAddress(accounts.signer.value)),\n getU64Encoder().encode(expectSome(args.index)),\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.tokenMint),\n getAccountMeta(accounts.regularEncryptedTokenAccount),\n getAccountMeta(accounts.ephemeralEncryptedTokenAccount),\n getAccountMeta(accounts.rentRecipient),\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.tokenProgram),\n getAccountMeta(accounts.arciumProgram),\n ],\n data: getCloseEphemeralEncryptedTokenAccountInstructionDataEncoder().encode(\n args as CloseEphemeralEncryptedTokenAccountInstructionDataArgs\n ),\n programAddress,\n } as CloseEphemeralEncryptedTokenAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountRegularEncryptedTokenAccount,\n TAccountEphemeralEncryptedTokenAccount,\n TAccountRentRecipient,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountArciumProgram\n >);\n}\n\nexport type CloseEphemeralEncryptedTokenAccountInput<\n TAccountSigner extends string = string,\n TAccountTokenMint extends string = string,\n TAccountRegularEncryptedTokenAccount extends string = string,\n TAccountEphemeralEncryptedTokenAccount extends string = string,\n TAccountRentRecipient 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 TAccountTokenProgram extends string = string,\n TAccountArciumProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n tokenMint: Address<TAccountTokenMint>;\n regularEncryptedTokenAccount: Address<TAccountRegularEncryptedTokenAccount>;\n /** Ephemeral ETA to close (index != 0), must be owned by signer */\n ephemeralEncryptedTokenAccount: Address<TAccountEphemeralEncryptedTokenAccount>;\n rentRecipient: Address<TAccountRentRecipient>;\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 tokenProgram: Address<TAccountTokenProgram>;\n arciumProgram?: Address<TAccountArciumProgram>;\n computationOffset: CloseEphemeralEncryptedTokenAccountInstructionDataArgs['computationOffset'];\n index: CloseEphemeralEncryptedTokenAccountInstructionDataArgs['index'];\n};\n\nexport function getCloseEphemeralEncryptedTokenAccountInstruction<\n TAccountSigner extends string,\n TAccountTokenMint extends string,\n TAccountRegularEncryptedTokenAccount extends string,\n TAccountEphemeralEncryptedTokenAccount extends string,\n TAccountRentRecipient 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 TAccountTokenProgram extends string,\n TAccountArciumProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseEphemeralEncryptedTokenAccountInput<\n TAccountSigner,\n TAccountTokenMint,\n TAccountRegularEncryptedTokenAccount,\n TAccountEphemeralEncryptedTokenAccount,\n TAccountRentRecipient,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountArciumProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CloseEphemeralEncryptedTokenAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountRegularEncryptedTokenAccount,\n TAccountEphemeralEncryptedTokenAccount,\n TAccountRentRecipient,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountTokenProgram,\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 tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n regularEncryptedTokenAccount: {\n value: input.regularEncryptedTokenAccount ?? null,\n isWritable: true,\n },\n ephemeralEncryptedTokenAccount: {\n value: input.ephemeralEncryptedTokenAccount ?? null,\n isWritable: true,\n },\n rentRecipient: { value: input.rentRecipient ?? 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 tokenProgram: { value: input.tokenProgram ?? 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.tokenMint),\n getAccountMeta(accounts.regularEncryptedTokenAccount),\n getAccountMeta(accounts.ephemeralEncryptedTokenAccount),\n getAccountMeta(accounts.rentRecipient),\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.tokenProgram),\n getAccountMeta(accounts.arciumProgram),\n ],\n data: getCloseEphemeralEncryptedTokenAccountInstructionDataEncoder().encode(\n args as CloseEphemeralEncryptedTokenAccountInstructionDataArgs\n ),\n programAddress,\n } as CloseEphemeralEncryptedTokenAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountRegularEncryptedTokenAccount,\n TAccountEphemeralEncryptedTokenAccount,\n TAccountRentRecipient,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountArciumProgram\n >);\n}\n\nexport type ParsedCloseEphemeralEncryptedTokenAccountInstruction<\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 tokenMint: TAccountMetas[1];\n regularEncryptedTokenAccount: TAccountMetas[2];\n /** Ephemeral ETA to close (index != 0), must be owned by signer */\n ephemeralEncryptedTokenAccount: TAccountMetas[3];\n rentRecipient: TAccountMetas[4];\n signPdaAccount: TAccountMetas[5];\n mxeAccount: TAccountMetas[6];\n mempoolAccount: TAccountMetas[7];\n executingPool: TAccountMetas[8];\n computationAccount: TAccountMetas[9];\n compDefAccount: TAccountMetas[10];\n clusterAccount: TAccountMetas[11];\n poolAccount: TAccountMetas[12];\n clockAccount: TAccountMetas[13];\n systemProgram: TAccountMetas[14];\n tokenProgram: TAccountMetas[15];\n arciumProgram: TAccountMetas[16];\n };\n data: CloseEphemeralEncryptedTokenAccountInstructionData;\n};\n\nexport function parseCloseEphemeralEncryptedTokenAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedCloseEphemeralEncryptedTokenAccountInstruction<\n TProgram,\n TAccountMetas\n> {\n if (instruction.accounts.length < 17) {\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 tokenMint: getNextAccount(),\n regularEncryptedTokenAccount: getNextAccount(),\n ephemeralEncryptedTokenAccount: getNextAccount(),\n rentRecipient: 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 tokenProgram: getNextAccount(),\n arciumProgram: getNextAccount(),\n },\n data: getCloseEphemeralEncryptedTokenAccountInstructionDataDecoder().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 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 getCloseEphemeralEncryptedTokenAccountOutputDecoder,\n getCloseEphemeralEncryptedTokenAccountOutputEncoder,\n type CloseEphemeralEncryptedTokenAccountOutput,\n type CloseEphemeralEncryptedTokenAccountOutputArgs,\n} from '../types';\n\nexport const CLOSE_EPHEMERAL_ENCRYPTED_TOKEN_ACCOUNT_CALLBACK_DISCRIMINATOR =\n new Uint8Array([169, 52, 248, 50, 36, 66, 181, 9]);\n\nexport function getCloseEphemeralEncryptedTokenAccountCallbackDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLOSE_EPHEMERAL_ENCRYPTED_TOKEN_ACCOUNT_CALLBACK_DISCRIMINATOR\n );\n}\n\nexport type CloseEphemeralEncryptedTokenAccountCallbackInstruction<\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 TAccountRegularEncryptedTokenAccount extends string | AccountMeta<string> =\n string,\n TAccountEphemeralEncryptedTokenAccount extends string | AccountMeta<string> =\n string,\n TAccountRentRecipient 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 TAccountRegularEncryptedTokenAccount extends string\n ? WritableAccount<TAccountRegularEncryptedTokenAccount>\n : TAccountRegularEncryptedTokenAccount,\n TAccountEphemeralEncryptedTokenAccount extends string\n ? WritableAccount<TAccountEphemeralEncryptedTokenAccount>\n : TAccountEphemeralEncryptedTokenAccount,\n TAccountRentRecipient extends string\n ? WritableAccount<TAccountRentRecipient>\n : TAccountRentRecipient,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CloseEphemeralEncryptedTokenAccountCallbackInstructionData = {\n discriminator: ReadonlyUint8Array;\n output:\n | {\n __kind: 'Success';\n fields: readonly [\n CloseEphemeralEncryptedTokenAccountOutput,\n Array<number>,\n ];\n }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [CloseEphemeralEncryptedTokenAccountOutput];\n };\n};\n\nexport type CloseEphemeralEncryptedTokenAccountCallbackInstructionDataArgs = {\n output:\n | {\n __kind: 'Success';\n fields: readonly [\n CloseEphemeralEncryptedTokenAccountOutputArgs,\n Array<number>,\n ];\n }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [CloseEphemeralEncryptedTokenAccountOutputArgs];\n };\n};\n\nexport function getCloseEphemeralEncryptedTokenAccountCallbackInstructionDataEncoder(): Encoder<CloseEphemeralEncryptedTokenAccountCallbackInstructionDataArgs> {\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 getCloseEphemeralEncryptedTokenAccountOutputEncoder(),\n getArrayEncoder(getU8Encoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitEncoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructEncoder([\n [\n 'fields',\n getTupleEncoder([\n getCloseEphemeralEncryptedTokenAccountOutputEncoder(),\n ]),\n ],\n ]),\n ],\n ]),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator:\n CLOSE_EPHEMERAL_ENCRYPTED_TOKEN_ACCOUNT_CALLBACK_DISCRIMINATOR,\n })\n );\n}\n\nexport function getCloseEphemeralEncryptedTokenAccountCallbackInstructionDataDecoder(): Decoder<CloseEphemeralEncryptedTokenAccountCallbackInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n [\n 'output',\n getDiscriminatedUnionDecoder([\n [\n 'Success',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([\n getCloseEphemeralEncryptedTokenAccountOutputDecoder(),\n getArrayDecoder(getU8Decoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitDecoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([\n getCloseEphemeralEncryptedTokenAccountOutputDecoder(),\n ]),\n ],\n ]),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getCloseEphemeralEncryptedTokenAccountCallbackInstructionDataCodec(): Codec<\n CloseEphemeralEncryptedTokenAccountCallbackInstructionDataArgs,\n CloseEphemeralEncryptedTokenAccountCallbackInstructionData\n> {\n return combineCodec(\n getCloseEphemeralEncryptedTokenAccountCallbackInstructionDataEncoder(),\n getCloseEphemeralEncryptedTokenAccountCallbackInstructionDataDecoder()\n );\n}\n\nexport type CloseEphemeralEncryptedTokenAccountCallbackInput<\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 TAccountRegularEncryptedTokenAccount extends string = string,\n TAccountEphemeralEncryptedTokenAccount extends string = string,\n TAccountRentRecipient 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 regularEncryptedTokenAccount: Address<TAccountRegularEncryptedTokenAccount>;\n ephemeralEncryptedTokenAccount: Address<TAccountEphemeralEncryptedTokenAccount>;\n rentRecipient: Address<TAccountRentRecipient>;\n output: CloseEphemeralEncryptedTokenAccountCallbackInstructionDataArgs['output'];\n};\n\nexport function getCloseEphemeralEncryptedTokenAccountCallbackInstruction<\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 TAccountRegularEncryptedTokenAccount extends string,\n TAccountEphemeralEncryptedTokenAccount extends string,\n TAccountRentRecipient extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseEphemeralEncryptedTokenAccountCallbackInput<\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountRegularEncryptedTokenAccount,\n TAccountEphemeralEncryptedTokenAccount,\n TAccountRentRecipient\n >,\n config?: { programAddress?: TProgramAddress }\n): CloseEphemeralEncryptedTokenAccountCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountRegularEncryptedTokenAccount,\n TAccountEphemeralEncryptedTokenAccount,\n TAccountRentRecipient\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 regularEncryptedTokenAccount: {\n value: input.regularEncryptedTokenAccount ?? null,\n isWritable: true,\n },\n ephemeralEncryptedTokenAccount: {\n value: input.ephemeralEncryptedTokenAccount ?? null,\n isWritable: true,\n },\n rentRecipient: { value: input.rentRecipient ?? 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.regularEncryptedTokenAccount),\n getAccountMeta(accounts.ephemeralEncryptedTokenAccount),\n getAccountMeta(accounts.rentRecipient),\n ],\n data: getCloseEphemeralEncryptedTokenAccountCallbackInstructionDataEncoder().encode(\n args as CloseEphemeralEncryptedTokenAccountCallbackInstructionDataArgs\n ),\n programAddress,\n } as CloseEphemeralEncryptedTokenAccountCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountRegularEncryptedTokenAccount,\n TAccountEphemeralEncryptedTokenAccount,\n TAccountRentRecipient\n >);\n}\n\nexport type ParsedCloseEphemeralEncryptedTokenAccountCallbackInstruction<\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 regularEncryptedTokenAccount: TAccountMetas[6];\n ephemeralEncryptedTokenAccount: TAccountMetas[7];\n rentRecipient: TAccountMetas[8];\n };\n data: CloseEphemeralEncryptedTokenAccountCallbackInstructionData;\n};\n\nexport function parseCloseEphemeralEncryptedTokenAccountCallbackInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedCloseEphemeralEncryptedTokenAccountCallbackInstruction<\n TProgram,\n TAccountMetas\n> {\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 arciumProgram: getNextAccount(),\n compDefAccount: getNextAccount(),\n mxeAccount: getNextAccount(),\n computationAccount: getNextAccount(),\n clusterAccount: getNextAccount(),\n instructionsSysvar: getNextAccount(),\n regularEncryptedTokenAccount: getNextAccount(),\n ephemeralEncryptedTokenAccount: getNextAccount(),\n rentRecipient: getNextAccount(),\n },\n data: getCloseEphemeralEncryptedTokenAccountCallbackInstructionDataDecoder().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 CLOSE_EPHEMERAL_ENCRYPTED_TOKEN_ACCOUNT_COMP_DEF_DISCRIMINATOR =\n new Uint8Array([162, 99, 122, 48, 158, 203, 176, 243]);\n\nexport function getCloseEphemeralEncryptedTokenAccountCompDefDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLOSE_EPHEMERAL_ENCRYPTED_TOKEN_ACCOUNT_COMP_DEF_DISCRIMINATOR\n );\n}\n\nexport type CloseEphemeralEncryptedTokenAccountCompDefInstruction<\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 CloseEphemeralEncryptedTokenAccountCompDefInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type CloseEphemeralEncryptedTokenAccountCompDefInstructionDataArgs = {};\n\nexport function getCloseEphemeralEncryptedTokenAccountCompDefInstructionDataEncoder(): FixedSizeEncoder<CloseEphemeralEncryptedTokenAccountCompDefInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({\n ...value,\n discriminator:\n CLOSE_EPHEMERAL_ENCRYPTED_TOKEN_ACCOUNT_COMP_DEF_DISCRIMINATOR,\n })\n );\n}\n\nexport function getCloseEphemeralEncryptedTokenAccountCompDefInstructionDataDecoder(): FixedSizeDecoder<CloseEphemeralEncryptedTokenAccountCompDefInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getCloseEphemeralEncryptedTokenAccountCompDefInstructionDataCodec(): FixedSizeCodec<\n CloseEphemeralEncryptedTokenAccountCompDefInstructionDataArgs,\n CloseEphemeralEncryptedTokenAccountCompDefInstructionData\n> {\n return combineCodec(\n getCloseEphemeralEncryptedTokenAccountCompDefInstructionDataEncoder(),\n getCloseEphemeralEncryptedTokenAccountCompDefInstructionDataDecoder()\n );\n}\n\nexport type CloseEphemeralEncryptedTokenAccountCompDefInput<\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 getCloseEphemeralEncryptedTokenAccountCompDefInstruction<\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: CloseEphemeralEncryptedTokenAccountCompDefInput<\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CloseEphemeralEncryptedTokenAccountCompDefInstruction<\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: getCloseEphemeralEncryptedTokenAccountCompDefInstructionDataEncoder().encode(\n {}\n ),\n programAddress,\n } as CloseEphemeralEncryptedTokenAccountCompDefInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCloseEphemeralEncryptedTokenAccountCompDefInstruction<\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: CloseEphemeralEncryptedTokenAccountCompDefInstructionData;\n};\n\nexport function parseCloseEphemeralEncryptedTokenAccountCompDefInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedCloseEphemeralEncryptedTokenAccountCompDefInstruction<\n TProgram,\n TAccountMetas\n> {\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: getCloseEphemeralEncryptedTokenAccountCompDefInstructionDataDecoder().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 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_SHARE_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 67, 139, 193, 149, 242, 202, 59, 214,\n]);\n\nexport function getCloseShareAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLOSE_SHARE_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type CloseShareAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountOwner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountShareAccount 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 TAccountShareAccount extends string\n ? WritableAccount<TAccountShareAccount>\n : TAccountShareAccount,\n TAccountOption extends string\n ? ReadonlyAccount<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 CloseShareAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n optionIndex: number;\n shareAccountId: number;\n};\n\nexport type CloseShareAccountInstructionDataArgs = {\n optionIndex: number;\n shareAccountId: number;\n};\n\nexport function getCloseShareAccountInstructionDataEncoder(): FixedSizeEncoder<CloseShareAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['optionIndex', getU16Encoder()],\n ['shareAccountId', getU32Encoder()],\n ]),\n (value) => ({ ...value, discriminator: CLOSE_SHARE_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getCloseShareAccountInstructionDataDecoder(): FixedSizeDecoder<CloseShareAccountInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['optionIndex', getU16Decoder()],\n ['shareAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getCloseShareAccountInstructionDataCodec(): FixedSizeCodec<\n CloseShareAccountInstructionDataArgs,\n CloseShareAccountInstructionData\n> {\n return combineCodec(\n getCloseShareAccountInstructionDataEncoder(),\n getCloseShareAccountInstructionDataDecoder()\n );\n}\n\nexport type CloseShareAccountAsyncInput<\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountShareAccount 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 shareAccount?: Address<TAccountShareAccount>;\n option?: Address<TAccountOption>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market's ATA holding reward tokens */\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 optionIndex: CloseShareAccountInstructionDataArgs['optionIndex'];\n shareAccountId: CloseShareAccountInstructionDataArgs['shareAccountId'];\n};\n\nexport async function getCloseShareAccountInstructionAsync<\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountShareAccount 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: CloseShareAccountAsyncInput<\n TAccountOwner,\n TAccountMarket,\n TAccountShareAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CloseShareAccountInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountShareAccount,\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 shareAccount: { value: input.shareAccount ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: false },\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.shareAccount.value) {\n accounts.shareAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 104, 97, 114, 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.shareAccountId)),\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 getU16Encoder().encode(expectSome(args.optionIndex)),\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.shareAccount),\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: getCloseShareAccountInstructionDataEncoder().encode(\n args as CloseShareAccountInstructionDataArgs\n ),\n programAddress,\n } as CloseShareAccountInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountShareAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type CloseShareAccountInput<\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountShareAccount 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 shareAccount: Address<TAccountShareAccount>;\n option: Address<TAccountOption>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market's ATA holding reward tokens */\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 optionIndex: CloseShareAccountInstructionDataArgs['optionIndex'];\n shareAccountId: CloseShareAccountInstructionDataArgs['shareAccountId'];\n};\n\nexport function getCloseShareAccountInstruction<\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountShareAccount 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: CloseShareAccountInput<\n TAccountOwner,\n TAccountMarket,\n TAccountShareAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CloseShareAccountInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountShareAccount,\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 shareAccount: { value: input.shareAccount ?? null, isWritable: true },\n option: { value: input.option ?? null, isWritable: false },\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.shareAccount),\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: getCloseShareAccountInstructionDataEncoder().encode(\n args as CloseShareAccountInstructionDataArgs\n ),\n programAddress,\n } as CloseShareAccountInstruction<\n TProgramAddress,\n TAccountOwner,\n TAccountMarket,\n TAccountShareAccount,\n TAccountOption,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCloseShareAccountInstruction<\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 shareAccount: TAccountMetas[2];\n option: TAccountMetas[3];\n tokenMint: TAccountMetas[4];\n /** Market's ATA holding reward tokens */\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: CloseShareAccountInstructionData;\n};\n\nexport function parseCloseShareAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedCloseShareAccountInstruction<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 shareAccount: getNextAccount(),\n option: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n ownerTokenAccount: getNextAccount(),\n tokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCloseShareAccountInstructionDataDecoder().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 getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\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 Option,\n type OptionOrNullable,\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 TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountCentralState extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TAccountAssociatedTokenProgram extends string | AccountMeta<string> =\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',\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 TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountCentralState extends string\n ? ReadonlyAccount<TAccountCentralState>\n : TAccountCentralState,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountAssociatedTokenProgram extends string\n ? ReadonlyAccount<TAccountAssociatedTokenProgram>\n : TAccountAssociatedTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateMarketInstructionData = {\n discriminator: ReadonlyUint8Array;\n marketIndex: bigint;\n rewardAmount: bigint;\n timeToStake: bigint;\n timeToReveal: bigint;\n marketAuthority: Option<Address>;\n unstakeDelaySeconds: bigint;\n authorizedReaderPubkey: Array<number>;\n allowClosingEarly: boolean;\n};\n\nexport type CreateMarketInstructionDataArgs = {\n marketIndex: number | bigint;\n rewardAmount: number | bigint;\n timeToStake: number | bigint;\n timeToReveal: number | bigint;\n marketAuthority: OptionOrNullable<Address>;\n unstakeDelaySeconds: number | bigint;\n authorizedReaderPubkey: Array<number>;\n allowClosingEarly: boolean;\n};\n\nexport function getCreateMarketInstructionDataEncoder(): Encoder<CreateMarketInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['marketIndex', getU64Encoder()],\n ['rewardAmount', getU64Encoder()],\n ['timeToStake', getU64Encoder()],\n ['timeToReveal', getU64Encoder()],\n ['marketAuthority', getOptionEncoder(getAddressEncoder())],\n ['unstakeDelaySeconds', getU64Encoder()],\n ['authorizedReaderPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['allowClosingEarly', getBooleanEncoder()],\n ]),\n (value) => ({ ...value, discriminator: CREATE_MARKET_DISCRIMINATOR })\n );\n}\n\nexport function getCreateMarketInstructionDataDecoder(): Decoder<CreateMarketInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['marketIndex', getU64Decoder()],\n ['rewardAmount', getU64Decoder()],\n ['timeToStake', getU64Decoder()],\n ['timeToReveal', getU64Decoder()],\n ['marketAuthority', getOptionDecoder(getAddressDecoder())],\n ['unstakeDelaySeconds', getU64Decoder()],\n ['authorizedReaderPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['allowClosingEarly', getBooleanDecoder()],\n ]);\n}\n\nexport function getCreateMarketInstructionDataCodec(): Codec<\n CreateMarketInstructionDataArgs,\n CreateMarketInstructionData\n> {\n return combineCodec(\n getCreateMarketInstructionDataEncoder(),\n getCreateMarketInstructionDataDecoder()\n );\n}\n\nexport type CreateMarketAsyncInput<\n TAccountCreator extends string = string,\n TAccountTokenMint extends string = string,\n TAccountCentralState extends string = string,\n TAccountMarket extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n> = {\n creator: TransactionSigner<TAccountCreator>;\n tokenMint: Address<TAccountTokenMint>;\n centralState?: Address<TAccountCentralState>;\n market?: Address<TAccountMarket>;\n /** ATA owned by market PDA, holds reward tokens */\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n systemProgram?: Address<TAccountSystemProgram>;\n tokenProgram: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n marketIndex: CreateMarketInstructionDataArgs['marketIndex'];\n rewardAmount: CreateMarketInstructionDataArgs['rewardAmount'];\n timeToStake: CreateMarketInstructionDataArgs['timeToStake'];\n timeToReveal: CreateMarketInstructionDataArgs['timeToReveal'];\n marketAuthority: CreateMarketInstructionDataArgs['marketAuthority'];\n unstakeDelaySeconds: CreateMarketInstructionDataArgs['unstakeDelaySeconds'];\n authorizedReaderPubkey: CreateMarketInstructionDataArgs['authorizedReaderPubkey'];\n allowClosingEarly: CreateMarketInstructionDataArgs['allowClosingEarly'];\n};\n\nexport async function getCreateMarketInstructionAsync<\n TAccountCreator extends string,\n TAccountTokenMint extends string,\n TAccountCentralState extends string,\n TAccountMarket extends string,\n TAccountMarketTokenAta extends string,\n TAccountSystemProgram extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CreateMarketAsyncInput<\n TAccountCreator,\n TAccountTokenMint,\n TAccountCentralState,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CreateMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountTokenMint,\n TAccountCentralState,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram\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 tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n centralState: { value: input.centralState ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n associatedTokenProgram: {\n value: input.associatedTokenProgram ?? null,\n isWritable: false,\n },\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.centralState.value) {\n accounts.centralState.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 99, 101, 110, 116, 114, 97, 108, 95, 115, 116, 97, 116, 101,\n ])\n ),\n ],\n });\n }\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(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.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n if (!accounts.associatedTokenProgram.value) {\n accounts.associatedTokenProgram.value =\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.creator),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.centralState),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n ],\n data: getCreateMarketInstructionDataEncoder().encode(\n args as CreateMarketInstructionDataArgs\n ),\n programAddress,\n } as CreateMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountTokenMint,\n TAccountCentralState,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram\n >);\n}\n\nexport type CreateMarketInput<\n TAccountCreator extends string = string,\n TAccountTokenMint extends string = string,\n TAccountCentralState extends string = string,\n TAccountMarket extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n> = {\n creator: TransactionSigner<TAccountCreator>;\n tokenMint: Address<TAccountTokenMint>;\n centralState: Address<TAccountCentralState>;\n market: Address<TAccountMarket>;\n /** ATA owned by market PDA, holds reward tokens */\n marketTokenAta: Address<TAccountMarketTokenAta>;\n systemProgram?: Address<TAccountSystemProgram>;\n tokenProgram: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n marketIndex: CreateMarketInstructionDataArgs['marketIndex'];\n rewardAmount: CreateMarketInstructionDataArgs['rewardAmount'];\n timeToStake: CreateMarketInstructionDataArgs['timeToStake'];\n timeToReveal: CreateMarketInstructionDataArgs['timeToReveal'];\n marketAuthority: CreateMarketInstructionDataArgs['marketAuthority'];\n unstakeDelaySeconds: CreateMarketInstructionDataArgs['unstakeDelaySeconds'];\n authorizedReaderPubkey: CreateMarketInstructionDataArgs['authorizedReaderPubkey'];\n allowClosingEarly: CreateMarketInstructionDataArgs['allowClosingEarly'];\n};\n\nexport function getCreateMarketInstruction<\n TAccountCreator extends string,\n TAccountTokenMint extends string,\n TAccountCentralState extends string,\n TAccountMarket extends string,\n TAccountMarketTokenAta extends string,\n TAccountSystemProgram extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CreateMarketInput<\n TAccountCreator,\n TAccountTokenMint,\n TAccountCentralState,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CreateMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountTokenMint,\n TAccountCentralState,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram\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 tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n centralState: { value: input.centralState ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n associatedTokenProgram: {\n value: input.associatedTokenProgram ?? null,\n isWritable: false,\n },\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 if (!accounts.associatedTokenProgram.value) {\n accounts.associatedTokenProgram.value =\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.creator),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.centralState),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n ],\n data: getCreateMarketInstructionDataEncoder().encode(\n args as CreateMarketInstructionDataArgs\n ),\n programAddress,\n } as CreateMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountTokenMint,\n TAccountCentralState,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram\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 tokenMint: TAccountMetas[1];\n centralState: TAccountMetas[2];\n market: TAccountMetas[3];\n /** ATA owned by market PDA, holds reward tokens */\n marketTokenAta: TAccountMetas[4];\n systemProgram: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n associatedTokenProgram: TAccountMetas[7];\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 < 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 creator: getNextAccount(),\n tokenMint: getNextAccount(),\n centralState: getNextAccount(),\n market: getNextAccount(),\n marketTokenAta: getNextAccount(),\n systemProgram: getNextAccount(),\n tokenProgram: getNextAccount(),\n associatedTokenProgram: 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 getAddressDecoder,\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 DO_UNSTAKE_EARLY_DISCRIMINATOR = new Uint8Array([\n 23, 184, 57, 106, 191, 197, 209, 50,\n]);\n\nexport function getDoUnstakeEarlyDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n DO_UNSTAKE_EARLY_DISCRIMINATOR\n );\n}\n\nexport type DoUnstakeEarlyInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountUserEta extends string | AccountMeta<string> = string,\n TAccountShareAccount 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 TAccountMarket extends string\n ? ReadonlyAccount<TAccountMarket>\n : TAccountMarket,\n TAccountUserEta extends string\n ? WritableAccount<TAccountUserEta>\n : TAccountUserEta,\n TAccountShareAccount extends string\n ? WritableAccount<TAccountShareAccount>\n : TAccountShareAccount,\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 DoUnstakeEarlyInstructionData = {\n discriminator: ReadonlyUint8Array;\n computationOffset: bigint;\n shareAccountId: number;\n shareAccountOwner: Address;\n};\n\nexport type DoUnstakeEarlyInstructionDataArgs = {\n computationOffset: number | bigint;\n shareAccountId: number;\n shareAccountOwner: Address;\n};\n\nexport function getDoUnstakeEarlyInstructionDataEncoder(): FixedSizeEncoder<DoUnstakeEarlyInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['computationOffset', getU64Encoder()],\n ['shareAccountId', getU32Encoder()],\n ['shareAccountOwner', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: DO_UNSTAKE_EARLY_DISCRIMINATOR })\n );\n}\n\nexport function getDoUnstakeEarlyInstructionDataDecoder(): FixedSizeDecoder<DoUnstakeEarlyInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['computationOffset', getU64Decoder()],\n ['shareAccountId', getU32Decoder()],\n ['shareAccountOwner', getAddressDecoder()],\n ]);\n}\n\nexport function getDoUnstakeEarlyInstructionDataCodec(): FixedSizeCodec<\n DoUnstakeEarlyInstructionDataArgs,\n DoUnstakeEarlyInstructionData\n> {\n return combineCodec(\n getDoUnstakeEarlyInstructionDataEncoder(),\n getDoUnstakeEarlyInstructionDataDecoder()\n );\n}\n\nexport type DoUnstakeEarlyAsyncInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountUserEta extends string = string,\n TAccountShareAccount 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 market: Address<TAccountMarket>;\n userEta: Address<TAccountUserEta>;\n shareAccount?: Address<TAccountShareAccount>;\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: DoUnstakeEarlyInstructionDataArgs['computationOffset'];\n shareAccountId: DoUnstakeEarlyInstructionDataArgs['shareAccountId'];\n shareAccountOwner: DoUnstakeEarlyInstructionDataArgs['shareAccountOwner'];\n};\n\nexport async function getDoUnstakeEarlyInstructionAsync<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountUserEta extends string,\n TAccountShareAccount 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: DoUnstakeEarlyAsyncInput<\n TAccountSigner,\n TAccountMarket,\n TAccountUserEta,\n TAccountShareAccount,\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 DoUnstakeEarlyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountUserEta,\n TAccountShareAccount,\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 market: { value: input.market ?? null, isWritable: false },\n userEta: { value: input.userEta ?? null, isWritable: true },\n shareAccount: { value: input.shareAccount ?? 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.shareAccount.value) {\n accounts.shareAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 104, 97, 114, 101, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectSome(args.shareAccountOwner)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU32Encoder().encode(expectSome(args.shareAccountId)),\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.market),\n getAccountMeta(accounts.userEta),\n getAccountMeta(accounts.shareAccount),\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: getDoUnstakeEarlyInstructionDataEncoder().encode(\n args as DoUnstakeEarlyInstructionDataArgs\n ),\n programAddress,\n } as DoUnstakeEarlyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountUserEta,\n TAccountShareAccount,\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 DoUnstakeEarlyInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountUserEta extends string = string,\n TAccountShareAccount 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 market: Address<TAccountMarket>;\n userEta: Address<TAccountUserEta>;\n shareAccount: Address<TAccountShareAccount>;\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: DoUnstakeEarlyInstructionDataArgs['computationOffset'];\n shareAccountId: DoUnstakeEarlyInstructionDataArgs['shareAccountId'];\n shareAccountOwner: DoUnstakeEarlyInstructionDataArgs['shareAccountOwner'];\n};\n\nexport function getDoUnstakeEarlyInstruction<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountUserEta extends string,\n TAccountShareAccount 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: DoUnstakeEarlyInput<\n TAccountSigner,\n TAccountMarket,\n TAccountUserEta,\n TAccountShareAccount,\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): DoUnstakeEarlyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountUserEta,\n TAccountShareAccount,\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 market: { value: input.market ?? null, isWritable: false },\n userEta: { value: input.userEta ?? null, isWritable: true },\n shareAccount: { value: input.shareAccount ?? 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.market),\n getAccountMeta(accounts.userEta),\n getAccountMeta(accounts.shareAccount),\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: getDoUnstakeEarlyInstructionDataEncoder().encode(\n args as DoUnstakeEarlyInstructionDataArgs\n ),\n programAddress,\n } as DoUnstakeEarlyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountUserEta,\n TAccountShareAccount,\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 ParsedDoUnstakeEarlyInstruction<\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 userEta: TAccountMetas[2];\n shareAccount: 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: DoUnstakeEarlyInstructionData;\n};\n\nexport function parseDoUnstakeEarlyInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedDoUnstakeEarlyInstruction<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 market: getNextAccount(),\n userEta: getNextAccount(),\n shareAccount: 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: getDoUnstakeEarlyInstructionDataDecoder().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 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 EXTEND_REVEAL_PERIOD_DISCRIMINATOR = new Uint8Array([\n 95, 102, 32, 59, 88, 1, 211, 128,\n]);\n\nexport function getExtendRevealPeriodDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n EXTEND_REVEAL_PERIOD_DISCRIMINATOR\n );\n}\n\nexport type ExtendRevealPeriodInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountAuthority 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 TAccountAuthority extends string\n ? ReadonlySignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ExtendRevealPeriodInstructionData = {\n discriminator: ReadonlyUint8Array;\n newTimeToReveal: bigint;\n};\n\nexport type ExtendRevealPeriodInstructionDataArgs = {\n newTimeToReveal: number | bigint;\n};\n\nexport function getExtendRevealPeriodInstructionDataEncoder(): FixedSizeEncoder<ExtendRevealPeriodInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['newTimeToReveal', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: EXTEND_REVEAL_PERIOD_DISCRIMINATOR })\n );\n}\n\nexport function getExtendRevealPeriodInstructionDataDecoder(): FixedSizeDecoder<ExtendRevealPeriodInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['newTimeToReveal', getU64Decoder()],\n ]);\n}\n\nexport function getExtendRevealPeriodInstructionDataCodec(): FixedSizeCodec<\n ExtendRevealPeriodInstructionDataArgs,\n ExtendRevealPeriodInstructionData\n> {\n return combineCodec(\n getExtendRevealPeriodInstructionDataEncoder(),\n getExtendRevealPeriodInstructionDataDecoder()\n );\n}\n\nexport type ExtendRevealPeriodInput<\n TAccountAuthority extends string = string,\n TAccountMarket extends string = string,\n> = {\n authority: TransactionSigner<TAccountAuthority>;\n market: Address<TAccountMarket>;\n newTimeToReveal: ExtendRevealPeriodInstructionDataArgs['newTimeToReveal'];\n};\n\nexport function getExtendRevealPeriodInstruction<\n TAccountAuthority extends string,\n TAccountMarket extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ExtendRevealPeriodInput<TAccountAuthority, TAccountMarket>,\n config?: { programAddress?: TProgramAddress }\n): ExtendRevealPeriodInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountMarket\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n authority: { value: input.authority ?? 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 // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.market),\n ],\n data: getExtendRevealPeriodInstructionDataEncoder().encode(\n args as ExtendRevealPeriodInstructionDataArgs\n ),\n programAddress,\n } as ExtendRevealPeriodInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountMarket\n >);\n}\n\nexport type ParsedExtendRevealPeriodInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n authority: TAccountMetas[0];\n market: TAccountMetas[1];\n };\n data: ExtendRevealPeriodInstructionData;\n};\n\nexport function parseExtendRevealPeriodInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedExtendRevealPeriodInstruction<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: { authority: getNextAccount(), market: getNextAccount() },\n data: getExtendRevealPeriodInstructionDataDecoder().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 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 {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const INCREASE_REWARD_POOL_DISCRIMINATOR = new Uint8Array([\n 140, 244, 44, 96, 126, 219, 140, 0,\n]);\n\nexport function getIncreaseRewardPoolDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INCREASE_REWARD_POOL_DISCRIMINATOR\n );\n}\n\nexport type IncreaseRewardPoolInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountAuthority 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 TAccountTokenProgram extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountAuthority extends string\n ? ReadonlySignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarketTokenAta extends string\n ? ReadonlyAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type IncreaseRewardPoolInstructionData = {\n discriminator: ReadonlyUint8Array;\n newRewardAmount: bigint;\n};\n\nexport type IncreaseRewardPoolInstructionDataArgs = {\n newRewardAmount: number | bigint;\n};\n\nexport function getIncreaseRewardPoolInstructionDataEncoder(): FixedSizeEncoder<IncreaseRewardPoolInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['newRewardAmount', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: INCREASE_REWARD_POOL_DISCRIMINATOR })\n );\n}\n\nexport function getIncreaseRewardPoolInstructionDataDecoder(): FixedSizeDecoder<IncreaseRewardPoolInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['newRewardAmount', getU64Decoder()],\n ]);\n}\n\nexport function getIncreaseRewardPoolInstructionDataCodec(): FixedSizeCodec<\n IncreaseRewardPoolInstructionDataArgs,\n IncreaseRewardPoolInstructionData\n> {\n return combineCodec(\n getIncreaseRewardPoolInstructionDataEncoder(),\n getIncreaseRewardPoolInstructionDataDecoder()\n );\n}\n\nexport type IncreaseRewardPoolAsyncInput<\n TAccountAuthority extends string = string,\n TAccountMarket extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n authority: TransactionSigner<TAccountAuthority>;\n market: Address<TAccountMarket>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market's ATA holding reward tokens */\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n newRewardAmount: IncreaseRewardPoolInstructionDataArgs['newRewardAmount'];\n};\n\nexport async function getIncreaseRewardPoolInstructionAsync<\n TAccountAuthority extends string,\n TAccountMarket extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: IncreaseRewardPoolAsyncInput<\n TAccountAuthority,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n IncreaseRewardPoolInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\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 authority: { value: input.authority ?? 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: false },\n tokenProgram: { value: input.tokenProgram ?? 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\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getIncreaseRewardPoolInstructionDataEncoder().encode(\n args as IncreaseRewardPoolInstructionDataArgs\n ),\n programAddress,\n } as IncreaseRewardPoolInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\n >);\n}\n\nexport type IncreaseRewardPoolInput<\n TAccountAuthority extends string = string,\n TAccountMarket extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n authority: TransactionSigner<TAccountAuthority>;\n market: Address<TAccountMarket>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market's ATA holding reward tokens */\n marketTokenAta: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n newRewardAmount: IncreaseRewardPoolInstructionDataArgs['newRewardAmount'];\n};\n\nexport function getIncreaseRewardPoolInstruction<\n TAccountAuthority extends string,\n TAccountMarket extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: IncreaseRewardPoolInput<\n TAccountAuthority,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): IncreaseRewardPoolInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n authority: { value: input.authority ?? 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: false },\n tokenProgram: { value: input.tokenProgram ?? 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.authority),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getIncreaseRewardPoolInstructionDataEncoder().encode(\n args as IncreaseRewardPoolInstructionDataArgs\n ),\n programAddress,\n } as IncreaseRewardPoolInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\n >);\n}\n\nexport type ParsedIncreaseRewardPoolInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n authority: TAccountMetas[0];\n market: TAccountMetas[1];\n tokenMint: TAccountMetas[2];\n /** Market's ATA holding reward tokens */\n marketTokenAta: TAccountMetas[3];\n tokenProgram: TAccountMetas[4];\n };\n data: IncreaseRewardPoolInstructionData;\n};\n\nexport function parseIncreaseRewardPoolInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedIncreaseRewardPoolInstruction<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 authority: getNextAccount(),\n market: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getIncreaseRewardPoolInstructionDataDecoder().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 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 INCREMENT_OPTION_TALLY_DISCRIMINATOR = new Uint8Array([\n 93, 109, 206, 212, 231, 51, 71, 122,\n]);\n\nexport function getIncrementOptionTallyDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INCREMENT_OPTION_TALLY_DISCRIMINATOR\n );\n}\n\nexport type IncrementOptionTallyInstruction<\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 TAccountShareAccount 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 ? ReadonlyAccount<TAccountMarket>\n : TAccountMarket,\n TAccountShareAccount extends string\n ? WritableAccount<TAccountShareAccount>\n : TAccountShareAccount,\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 IncrementOptionTallyInstructionData = {\n discriminator: ReadonlyUint8Array;\n optionIndex: number;\n shareAccountId: number;\n};\n\nexport type IncrementOptionTallyInstructionDataArgs = {\n optionIndex: number;\n shareAccountId: number;\n};\n\nexport function getIncrementOptionTallyInstructionDataEncoder(): FixedSizeEncoder<IncrementOptionTallyInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['optionIndex', getU16Encoder()],\n ['shareAccountId', getU32Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: INCREMENT_OPTION_TALLY_DISCRIMINATOR,\n })\n );\n}\n\nexport function getIncrementOptionTallyInstructionDataDecoder(): FixedSizeDecoder<IncrementOptionTallyInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['optionIndex', getU16Decoder()],\n ['shareAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getIncrementOptionTallyInstructionDataCodec(): FixedSizeCodec<\n IncrementOptionTallyInstructionDataArgs,\n IncrementOptionTallyInstructionData\n> {\n return combineCodec(\n getIncrementOptionTallyInstructionDataEncoder(),\n getIncrementOptionTallyInstructionDataDecoder()\n );\n}\n\nexport type IncrementOptionTallyAsyncInput<\n TAccountSigner extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountShareAccount 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 shareAccount?: Address<TAccountShareAccount>;\n option?: Address<TAccountOption>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionIndex: IncrementOptionTallyInstructionDataArgs['optionIndex'];\n shareAccountId: IncrementOptionTallyInstructionDataArgs['shareAccountId'];\n};\n\nexport async function getIncrementOptionTallyInstructionAsync<\n TAccountSigner extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountShareAccount extends string,\n TAccountOption extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: IncrementOptionTallyAsyncInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountShareAccount,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n IncrementOptionTallyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountShareAccount,\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: false },\n shareAccount: { value: input.shareAccount ?? 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.shareAccount.value) {\n accounts.shareAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 104, 97, 114, 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.shareAccountId)),\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 getU16Encoder().encode(expectSome(args.optionIndex)),\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.shareAccount),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getIncrementOptionTallyInstructionDataEncoder().encode(\n args as IncrementOptionTallyInstructionDataArgs\n ),\n programAddress,\n } as IncrementOptionTallyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountShareAccount,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type IncrementOptionTallyInput<\n TAccountSigner extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountShareAccount 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 shareAccount: Address<TAccountShareAccount>;\n option: Address<TAccountOption>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionIndex: IncrementOptionTallyInstructionDataArgs['optionIndex'];\n shareAccountId: IncrementOptionTallyInstructionDataArgs['shareAccountId'];\n};\n\nexport function getIncrementOptionTallyInstruction<\n TAccountSigner extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountShareAccount extends string,\n TAccountOption extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: IncrementOptionTallyInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountShareAccount,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): IncrementOptionTallyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountShareAccount,\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: false },\n shareAccount: { value: input.shareAccount ?? 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.shareAccount),\n getAccountMeta(accounts.option),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getIncrementOptionTallyInstructionDataEncoder().encode(\n args as IncrementOptionTallyInstructionDataArgs\n ),\n programAddress,\n } as IncrementOptionTallyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountShareAccount,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedIncrementOptionTallyInstruction<\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 shareAccount: TAccountMetas[3];\n option: TAccountMetas[4];\n systemProgram: TAccountMetas[5];\n };\n data: IncrementOptionTallyInstructionData;\n};\n\nexport function parseIncrementOptionTallyInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedIncrementOptionTallyInstruction<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 shareAccount: getNextAccount(),\n option: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getIncrementOptionTallyInstructionDataDecoder().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 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 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 INIT_CENTRAL_STATE_DISCRIMINATOR = new Uint8Array([\n 132, 108, 150, 180, 190, 48, 103, 90,\n]);\n\nexport function getInitCentralStateDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INIT_CENTRAL_STATE_DISCRIMINATOR\n );\n}\n\nexport type InitCentralStateInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountCentralState 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 TAccountCentralState extends string\n ? WritableAccount<TAccountCentralState>\n : TAccountCentralState,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitCentralStateInstructionData = {\n discriminator: ReadonlyUint8Array;\n earlinessCutoffSeconds: bigint;\n minOptionDeposit: bigint;\n protocolFeeBp: number;\n feeRecipient: Address;\n};\n\nexport type InitCentralStateInstructionDataArgs = {\n earlinessCutoffSeconds: number | bigint;\n minOptionDeposit: number | bigint;\n protocolFeeBp: number;\n feeRecipient: Address;\n};\n\nexport function getInitCentralStateInstructionDataEncoder(): FixedSizeEncoder<InitCentralStateInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['earlinessCutoffSeconds', getU64Encoder()],\n ['minOptionDeposit', getU64Encoder()],\n ['protocolFeeBp', getU16Encoder()],\n ['feeRecipient', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: INIT_CENTRAL_STATE_DISCRIMINATOR })\n );\n}\n\nexport function getInitCentralStateInstructionDataDecoder(): FixedSizeDecoder<InitCentralStateInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['earlinessCutoffSeconds', getU64Decoder()],\n ['minOptionDeposit', getU64Decoder()],\n ['protocolFeeBp', getU16Decoder()],\n ['feeRecipient', getAddressDecoder()],\n ]);\n}\n\nexport function getInitCentralStateInstructionDataCodec(): FixedSizeCodec<\n InitCentralStateInstructionDataArgs,\n InitCentralStateInstructionData\n> {\n return combineCodec(\n getInitCentralStateInstructionDataEncoder(),\n getInitCentralStateInstructionDataDecoder()\n );\n}\n\nexport type InitCentralStateAsyncInput<\n TAccountPayer extends string = string,\n TAccountCentralState extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n centralState?: Address<TAccountCentralState>;\n systemProgram?: Address<TAccountSystemProgram>;\n earlinessCutoffSeconds: InitCentralStateInstructionDataArgs['earlinessCutoffSeconds'];\n minOptionDeposit: InitCentralStateInstructionDataArgs['minOptionDeposit'];\n protocolFeeBp: InitCentralStateInstructionDataArgs['protocolFeeBp'];\n feeRecipient: InitCentralStateInstructionDataArgs['feeRecipient'];\n};\n\nexport async function getInitCentralStateInstructionAsync<\n TAccountPayer extends string,\n TAccountCentralState extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitCentralStateAsyncInput<\n TAccountPayer,\n TAccountCentralState,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n InitCentralStateInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountCentralState,\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 centralState: { value: input.centralState ?? 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.centralState.value) {\n accounts.centralState.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 99, 101, 110, 116, 114, 97, 108, 95, 115, 116, 97, 116, 101,\n ])\n ),\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.centralState),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitCentralStateInstructionDataEncoder().encode(\n args as InitCentralStateInstructionDataArgs\n ),\n programAddress,\n } as InitCentralStateInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountCentralState,\n TAccountSystemProgram\n >);\n}\n\nexport type InitCentralStateInput<\n TAccountPayer extends string = string,\n TAccountCentralState extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n centralState: Address<TAccountCentralState>;\n systemProgram?: Address<TAccountSystemProgram>;\n earlinessCutoffSeconds: InitCentralStateInstructionDataArgs['earlinessCutoffSeconds'];\n minOptionDeposit: InitCentralStateInstructionDataArgs['minOptionDeposit'];\n protocolFeeBp: InitCentralStateInstructionDataArgs['protocolFeeBp'];\n feeRecipient: InitCentralStateInstructionDataArgs['feeRecipient'];\n};\n\nexport function getInitCentralStateInstruction<\n TAccountPayer extends string,\n TAccountCentralState extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitCentralStateInput<\n TAccountPayer,\n TAccountCentralState,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): InitCentralStateInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountCentralState,\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 centralState: { value: input.centralState ?? 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.centralState),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitCentralStateInstructionDataEncoder().encode(\n args as InitCentralStateInstructionDataArgs\n ),\n programAddress,\n } as InitCentralStateInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountCentralState,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedInitCentralStateInstruction<\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 centralState: TAccountMetas[1];\n systemProgram: TAccountMetas[2];\n };\n data: InitCentralStateInstructionData;\n};\n\nexport function parseInitCentralStateInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedInitCentralStateInstruction<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 centralState: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitCentralStateInstructionDataDecoder().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 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 getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const INIT_ENCRYPTED_TOKEN_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 50, 44, 236, 188, 218, 183, 120, 61,\n]);\n\nexport function getInitEncryptedTokenAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INIT_ENCRYPTED_TOKEN_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type InitEncryptedTokenAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountEncryptedTokenAccount 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 TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountEncryptedTokenAccount extends string\n ? WritableAccount<TAccountEncryptedTokenAccount>\n : TAccountEncryptedTokenAccount,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitEncryptedTokenAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n userPubkey: Array<number>;\n stateNonce: bigint;\n};\n\nexport type InitEncryptedTokenAccountInstructionDataArgs = {\n userPubkey: Array<number>;\n stateNonce: number | bigint;\n};\n\nexport function getInitEncryptedTokenAccountInstructionDataEncoder(): FixedSizeEncoder<InitEncryptedTokenAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['userPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['stateNonce', getU128Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: INIT_ENCRYPTED_TOKEN_ACCOUNT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitEncryptedTokenAccountInstructionDataDecoder(): FixedSizeDecoder<InitEncryptedTokenAccountInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['userPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['stateNonce', getU128Decoder()],\n ]);\n}\n\nexport function getInitEncryptedTokenAccountInstructionDataCodec(): FixedSizeCodec<\n InitEncryptedTokenAccountInstructionDataArgs,\n InitEncryptedTokenAccountInstructionData\n> {\n return combineCodec(\n getInitEncryptedTokenAccountInstructionDataEncoder(),\n getInitEncryptedTokenAccountInstructionDataDecoder()\n );\n}\n\nexport type InitEncryptedTokenAccountAsyncInput<\n TAccountSigner extends string = string,\n TAccountTokenMint extends string = string,\n TAccountEncryptedTokenAccount extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n tokenMint: Address<TAccountTokenMint>;\n encryptedTokenAccount?: Address<TAccountEncryptedTokenAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n userPubkey: InitEncryptedTokenAccountInstructionDataArgs['userPubkey'];\n stateNonce: InitEncryptedTokenAccountInstructionDataArgs['stateNonce'];\n};\n\nexport async function getInitEncryptedTokenAccountInstructionAsync<\n TAccountSigner extends string,\n TAccountTokenMint extends string,\n TAccountEncryptedTokenAccount extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitEncryptedTokenAccountAsyncInput<\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n InitEncryptedTokenAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\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 tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n encryptedTokenAccount: {\n value: input.encryptedTokenAccount ?? null,\n isWritable: true,\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.encryptedTokenAccount.value) {\n accounts.encryptedTokenAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 101, 110, 99, 114, 121, 112, 116, 101, 100, 95, 116, 111, 107, 101,\n 110, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n getAddressEncoder().encode(expectAddress(accounts.signer.value)),\n getBytesEncoder().encode(new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0])),\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.tokenMint),\n getAccountMeta(accounts.encryptedTokenAccount),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitEncryptedTokenAccountInstructionDataEncoder().encode(\n args as InitEncryptedTokenAccountInstructionDataArgs\n ),\n programAddress,\n } as InitEncryptedTokenAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountSystemProgram\n >);\n}\n\nexport type InitEncryptedTokenAccountInput<\n TAccountSigner extends string = string,\n TAccountTokenMint extends string = string,\n TAccountEncryptedTokenAccount extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n tokenMint: Address<TAccountTokenMint>;\n encryptedTokenAccount: Address<TAccountEncryptedTokenAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n userPubkey: InitEncryptedTokenAccountInstructionDataArgs['userPubkey'];\n stateNonce: InitEncryptedTokenAccountInstructionDataArgs['stateNonce'];\n};\n\nexport function getInitEncryptedTokenAccountInstruction<\n TAccountSigner extends string,\n TAccountTokenMint extends string,\n TAccountEncryptedTokenAccount extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitEncryptedTokenAccountInput<\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): InitEncryptedTokenAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\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 tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n encryptedTokenAccount: {\n value: input.encryptedTokenAccount ?? null,\n isWritable: true,\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.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.tokenMint),\n getAccountMeta(accounts.encryptedTokenAccount),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitEncryptedTokenAccountInstructionDataEncoder().encode(\n args as InitEncryptedTokenAccountInstructionDataArgs\n ),\n programAddress,\n } as InitEncryptedTokenAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedInitEncryptedTokenAccountInstruction<\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 tokenMint: TAccountMetas[1];\n encryptedTokenAccount: TAccountMetas[2];\n systemProgram: TAccountMetas[3];\n };\n data: InitEncryptedTokenAccountInstructionData;\n};\n\nexport function parseInitEncryptedTokenAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedInitEncryptedTokenAccountInstruction<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 tokenMint: getNextAccount(),\n encryptedTokenAccount: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitEncryptedTokenAccountInstructionDataDecoder().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 getU128Decoder,\n getU128Encoder,\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 INIT_EPHEMERAL_ENCRYPTED_TOKEN_ACCOUNT_DISCRIMINATOR =\n new Uint8Array([193, 174, 116, 225, 159, 78, 6, 234]);\n\nexport function getInitEphemeralEncryptedTokenAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INIT_EPHEMERAL_ENCRYPTED_TOKEN_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type InitEphemeralEncryptedTokenAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountOwner extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountSourceEncryptedTokenAccount extends string | AccountMeta<string> =\n string,\n TAccountEphemeralEncryptedTokenAccount extends string | AccountMeta<string> =\n 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 TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountSourceEncryptedTokenAccount extends string\n ? ReadonlyAccount<TAccountSourceEncryptedTokenAccount>\n : TAccountSourceEncryptedTokenAccount,\n TAccountEphemeralEncryptedTokenAccount extends string\n ? WritableAccount<TAccountEphemeralEncryptedTokenAccount>\n : TAccountEphemeralEncryptedTokenAccount,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitEphemeralEncryptedTokenAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n index: bigint;\n stateNonce: bigint;\n};\n\nexport type InitEphemeralEncryptedTokenAccountInstructionDataArgs = {\n index: number | bigint;\n stateNonce: number | bigint;\n};\n\nexport function getInitEphemeralEncryptedTokenAccountInstructionDataEncoder(): FixedSizeEncoder<InitEphemeralEncryptedTokenAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['index', getU64Encoder()],\n ['stateNonce', getU128Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: INIT_EPHEMERAL_ENCRYPTED_TOKEN_ACCOUNT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitEphemeralEncryptedTokenAccountInstructionDataDecoder(): FixedSizeDecoder<InitEphemeralEncryptedTokenAccountInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['index', getU64Decoder()],\n ['stateNonce', getU128Decoder()],\n ]);\n}\n\nexport function getInitEphemeralEncryptedTokenAccountInstructionDataCodec(): FixedSizeCodec<\n InitEphemeralEncryptedTokenAccountInstructionDataArgs,\n InitEphemeralEncryptedTokenAccountInstructionData\n> {\n return combineCodec(\n getInitEphemeralEncryptedTokenAccountInstructionDataEncoder(),\n getInitEphemeralEncryptedTokenAccountInstructionDataDecoder()\n );\n}\n\nexport type InitEphemeralEncryptedTokenAccountAsyncInput<\n TAccountSigner extends string = string,\n TAccountOwner extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSourceEncryptedTokenAccount extends string = string,\n TAccountEphemeralEncryptedTokenAccount extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n owner: Address<TAccountOwner>;\n tokenMint: Address<TAccountTokenMint>;\n /** Source ETA - must be a regular ETA (derived with index 0) */\n sourceEncryptedTokenAccount?: Address<TAccountSourceEncryptedTokenAccount>;\n /** New ephemeral ETA - derived with index in seed */\n ephemeralEncryptedTokenAccount?: Address<TAccountEphemeralEncryptedTokenAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n index: InitEphemeralEncryptedTokenAccountInstructionDataArgs['index'];\n stateNonce: InitEphemeralEncryptedTokenAccountInstructionDataArgs['stateNonce'];\n};\n\nexport async function getInitEphemeralEncryptedTokenAccountInstructionAsync<\n TAccountSigner extends string,\n TAccountOwner extends string,\n TAccountTokenMint extends string,\n TAccountSourceEncryptedTokenAccount extends string,\n TAccountEphemeralEncryptedTokenAccount extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitEphemeralEncryptedTokenAccountAsyncInput<\n TAccountSigner,\n TAccountOwner,\n TAccountTokenMint,\n TAccountSourceEncryptedTokenAccount,\n TAccountEphemeralEncryptedTokenAccount,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n InitEphemeralEncryptedTokenAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountTokenMint,\n TAccountSourceEncryptedTokenAccount,\n TAccountEphemeralEncryptedTokenAccount,\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 tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n sourceEncryptedTokenAccount: {\n value: input.sourceEncryptedTokenAccount ?? null,\n isWritable: false,\n },\n ephemeralEncryptedTokenAccount: {\n value: input.ephemeralEncryptedTokenAccount ?? null,\n isWritable: true,\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.sourceEncryptedTokenAccount.value) {\n accounts.sourceEncryptedTokenAccount.value = await getProgramDerivedAddress(\n {\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 101, 110, 99, 114, 121, 112, 116, 101, 100, 95, 116, 111, 107,\n 101, 110, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n getAddressEncoder().encode(expectAddress(accounts.owner.value)),\n getBytesEncoder().encode(new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0])),\n ],\n }\n );\n }\n if (!accounts.ephemeralEncryptedTokenAccount.value) {\n accounts.ephemeralEncryptedTokenAccount.value =\n await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 101, 110, 99, 114, 121, 112, 116, 101, 100, 95, 116, 111, 107,\n 101, 110, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n getAddressEncoder().encode(expectAddress(accounts.owner.value)),\n getU64Encoder().encode(expectSome(args.index)),\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.tokenMint),\n getAccountMeta(accounts.sourceEncryptedTokenAccount),\n getAccountMeta(accounts.ephemeralEncryptedTokenAccount),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitEphemeralEncryptedTokenAccountInstructionDataEncoder().encode(\n args as InitEphemeralEncryptedTokenAccountInstructionDataArgs\n ),\n programAddress,\n } as InitEphemeralEncryptedTokenAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountTokenMint,\n TAccountSourceEncryptedTokenAccount,\n TAccountEphemeralEncryptedTokenAccount,\n TAccountSystemProgram\n >);\n}\n\nexport type InitEphemeralEncryptedTokenAccountInput<\n TAccountSigner extends string = string,\n TAccountOwner extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSourceEncryptedTokenAccount extends string = string,\n TAccountEphemeralEncryptedTokenAccount extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n owner: Address<TAccountOwner>;\n tokenMint: Address<TAccountTokenMint>;\n /** Source ETA - must be a regular ETA (derived with index 0) */\n sourceEncryptedTokenAccount: Address<TAccountSourceEncryptedTokenAccount>;\n /** New ephemeral ETA - derived with index in seed */\n ephemeralEncryptedTokenAccount: Address<TAccountEphemeralEncryptedTokenAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n index: InitEphemeralEncryptedTokenAccountInstructionDataArgs['index'];\n stateNonce: InitEphemeralEncryptedTokenAccountInstructionDataArgs['stateNonce'];\n};\n\nexport function getInitEphemeralEncryptedTokenAccountInstruction<\n TAccountSigner extends string,\n TAccountOwner extends string,\n TAccountTokenMint extends string,\n TAccountSourceEncryptedTokenAccount extends string,\n TAccountEphemeralEncryptedTokenAccount extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitEphemeralEncryptedTokenAccountInput<\n TAccountSigner,\n TAccountOwner,\n TAccountTokenMint,\n TAccountSourceEncryptedTokenAccount,\n TAccountEphemeralEncryptedTokenAccount,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): InitEphemeralEncryptedTokenAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountTokenMint,\n TAccountSourceEncryptedTokenAccount,\n TAccountEphemeralEncryptedTokenAccount,\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 tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n sourceEncryptedTokenAccount: {\n value: input.sourceEncryptedTokenAccount ?? null,\n isWritable: false,\n },\n ephemeralEncryptedTokenAccount: {\n value: input.ephemeralEncryptedTokenAccount ?? null,\n isWritable: true,\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.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.tokenMint),\n getAccountMeta(accounts.sourceEncryptedTokenAccount),\n getAccountMeta(accounts.ephemeralEncryptedTokenAccount),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitEphemeralEncryptedTokenAccountInstructionDataEncoder().encode(\n args as InitEphemeralEncryptedTokenAccountInstructionDataArgs\n ),\n programAddress,\n } as InitEphemeralEncryptedTokenAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountTokenMint,\n TAccountSourceEncryptedTokenAccount,\n TAccountEphemeralEncryptedTokenAccount,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedInitEphemeralEncryptedTokenAccountInstruction<\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 tokenMint: TAccountMetas[2];\n /** Source ETA - must be a regular ETA (derived with index 0) */\n sourceEncryptedTokenAccount: TAccountMetas[3];\n /** New ephemeral ETA - derived with index in seed */\n ephemeralEncryptedTokenAccount: TAccountMetas[4];\n systemProgram: TAccountMetas[5];\n };\n data: InitEphemeralEncryptedTokenAccountInstructionData;\n};\n\nexport function parseInitEphemeralEncryptedTokenAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedInitEphemeralEncryptedTokenAccountInstruction<\n TProgram,\n TAccountMetas\n> {\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 tokenMint: getNextAccount(),\n sourceEncryptedTokenAccount: getNextAccount(),\n ephemeralEncryptedTokenAccount: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitEphemeralEncryptedTokenAccountInstructionDataDecoder().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 getU128Decoder,\n getU128Encoder,\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_SHARE_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 141, 106, 216, 55, 166, 167, 139, 141,\n]);\n\nexport function getInitShareAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INIT_SHARE_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type InitShareAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountShareAccount 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 TAccountShareAccount extends string\n ? WritableAccount<TAccountShareAccount>\n : TAccountShareAccount,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitShareAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n stateNonce: bigint;\n shareAccountId: number;\n};\n\nexport type InitShareAccountInstructionDataArgs = {\n stateNonce: number | bigint;\n shareAccountId: number;\n};\n\nexport function getInitShareAccountInstructionDataEncoder(): FixedSizeEncoder<InitShareAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['stateNonce', getU128Encoder()],\n ['shareAccountId', getU32Encoder()],\n ]),\n (value) => ({ ...value, discriminator: INIT_SHARE_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getInitShareAccountInstructionDataDecoder(): FixedSizeDecoder<InitShareAccountInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['stateNonce', getU128Decoder()],\n ['shareAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getInitShareAccountInstructionDataCodec(): FixedSizeCodec<\n InitShareAccountInstructionDataArgs,\n InitShareAccountInstructionData\n> {\n return combineCodec(\n getInitShareAccountInstructionDataEncoder(),\n getInitShareAccountInstructionDataDecoder()\n );\n}\n\nexport type InitShareAccountAsyncInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountShareAccount extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n shareAccount?: Address<TAccountShareAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n stateNonce: InitShareAccountInstructionDataArgs['stateNonce'];\n shareAccountId: InitShareAccountInstructionDataArgs['shareAccountId'];\n};\n\nexport async function getInitShareAccountInstructionAsync<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountShareAccount extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitShareAccountAsyncInput<\n TAccountSigner,\n TAccountMarket,\n TAccountShareAccount,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n InitShareAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountShareAccount,\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 shareAccount: { value: input.shareAccount ?? 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.shareAccount.value) {\n accounts.shareAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 104, 97, 114, 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.shareAccountId)),\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.shareAccount),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitShareAccountInstructionDataEncoder().encode(\n args as InitShareAccountInstructionDataArgs\n ),\n programAddress,\n } as InitShareAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountShareAccount,\n TAccountSystemProgram\n >);\n}\n\nexport type InitShareAccountInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountShareAccount extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n shareAccount: Address<TAccountShareAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n stateNonce: InitShareAccountInstructionDataArgs['stateNonce'];\n shareAccountId: InitShareAccountInstructionDataArgs['shareAccountId'];\n};\n\nexport function getInitShareAccountInstruction<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountShareAccount extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitShareAccountInput<\n TAccountSigner,\n TAccountMarket,\n TAccountShareAccount,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): InitShareAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountShareAccount,\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 shareAccount: { value: input.shareAccount ?? 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.shareAccount),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitShareAccountInstructionDataEncoder().encode(\n args as InitShareAccountInstructionDataArgs\n ),\n programAddress,\n } as InitShareAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountShareAccount,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedInitShareAccountInstruction<\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 shareAccount: TAccountMetas[2];\n systemProgram: TAccountMetas[3];\n };\n data: InitShareAccountInstructionData;\n};\n\nexport function parseInitShareAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedInitShareAccountInstruction<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 shareAccount: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitShareAccountInstructionDataDecoder().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 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_TOKEN_VAULT_DISCRIMINATOR = new Uint8Array([\n 203, 26, 194, 169, 252, 226, 179, 180,\n]);\n\nexport function getInitTokenVaultDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INIT_TOKEN_VAULT_DISCRIMINATOR\n );\n}\n\nexport type InitTokenVaultInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountTokenVault extends string | AccountMeta<string> = string,\n TAccountCentralState 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 TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountTokenVault extends string\n ? WritableAccount<TAccountTokenVault>\n : TAccountTokenVault,\n TAccountCentralState extends string\n ? ReadonlyAccount<TAccountCentralState>\n : TAccountCentralState,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitTokenVaultInstructionData = {\n discriminator: ReadonlyUint8Array;\n fundManager: Address;\n};\n\nexport type InitTokenVaultInstructionDataArgs = { fundManager: Address };\n\nexport function getInitTokenVaultInstructionDataEncoder(): FixedSizeEncoder<InitTokenVaultInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['fundManager', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: INIT_TOKEN_VAULT_DISCRIMINATOR })\n );\n}\n\nexport function getInitTokenVaultInstructionDataDecoder(): FixedSizeDecoder<InitTokenVaultInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['fundManager', getAddressDecoder()],\n ]);\n}\n\nexport function getInitTokenVaultInstructionDataCodec(): FixedSizeCodec<\n InitTokenVaultInstructionDataArgs,\n InitTokenVaultInstructionData\n> {\n return combineCodec(\n getInitTokenVaultInstructionDataEncoder(),\n getInitTokenVaultInstructionDataDecoder()\n );\n}\n\nexport type InitTokenVaultAsyncInput<\n TAccountPayer extends string = string,\n TAccountTokenMint extends string = string,\n TAccountTokenVault extends string = string,\n TAccountCentralState extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n tokenMint: Address<TAccountTokenMint>;\n tokenVault?: Address<TAccountTokenVault>;\n centralState?: Address<TAccountCentralState>;\n systemProgram?: Address<TAccountSystemProgram>;\n fundManager: InitTokenVaultInstructionDataArgs['fundManager'];\n};\n\nexport async function getInitTokenVaultInstructionAsync<\n TAccountPayer extends string,\n TAccountTokenMint extends string,\n TAccountTokenVault extends string,\n TAccountCentralState extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitTokenVaultAsyncInput<\n TAccountPayer,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountCentralState,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n InitTokenVaultInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountCentralState,\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 tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n tokenVault: { value: input.tokenVault ?? null, isWritable: true },\n centralState: { value: input.centralState ?? 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.tokenVault.value) {\n accounts.tokenVault.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116])\n ),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.centralState.value) {\n accounts.centralState.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 99, 101, 110, 116, 114, 97, 108, 95, 115, 116, 97, 116, 101,\n ])\n ),\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.tokenMint),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.centralState),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitTokenVaultInstructionDataEncoder().encode(\n args as InitTokenVaultInstructionDataArgs\n ),\n programAddress,\n } as InitTokenVaultInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountCentralState,\n TAccountSystemProgram\n >);\n}\n\nexport type InitTokenVaultInput<\n TAccountPayer extends string = string,\n TAccountTokenMint extends string = string,\n TAccountTokenVault extends string = string,\n TAccountCentralState extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n tokenMint: Address<TAccountTokenMint>;\n tokenVault: Address<TAccountTokenVault>;\n centralState: Address<TAccountCentralState>;\n systemProgram?: Address<TAccountSystemProgram>;\n fundManager: InitTokenVaultInstructionDataArgs['fundManager'];\n};\n\nexport function getInitTokenVaultInstruction<\n TAccountPayer extends string,\n TAccountTokenMint extends string,\n TAccountTokenVault extends string,\n TAccountCentralState extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitTokenVaultInput<\n TAccountPayer,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountCentralState,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): InitTokenVaultInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountCentralState,\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 tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n tokenVault: { value: input.tokenVault ?? null, isWritable: true },\n centralState: { value: input.centralState ?? 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.payer),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.centralState),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitTokenVaultInstructionDataEncoder().encode(\n args as InitTokenVaultInstructionDataArgs\n ),\n programAddress,\n } as InitTokenVaultInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountCentralState,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedInitTokenVaultInstruction<\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 tokenMint: TAccountMetas[1];\n tokenVault: TAccountMetas[2];\n centralState: TAccountMetas[3];\n systemProgram: TAccountMetas[4];\n };\n data: InitTokenVaultInstructionData;\n};\n\nexport function parseInitTokenVaultInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedInitTokenVaultInstruction<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 tokenMint: getNextAccount(),\n tokenVault: getNextAccount(),\n centralState: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitTokenVaultInstructionDataDecoder().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 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 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 TAccountCreator 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 TAccountTokenProgram extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountCreator extends string\n ? ReadonlySignerAccount<TAccountCreator> &\n AccountSignerMeta<TAccountCreator>\n : TAccountCreator,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarketTokenAta extends string\n ? ReadonlyAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type OpenMarketInstructionData = {\n discriminator: ReadonlyUint8Array;\n openTimestamp: bigint;\n};\n\nexport type OpenMarketInstructionDataArgs = { openTimestamp: number | bigint };\n\nexport function getOpenMarketInstructionDataEncoder(): FixedSizeEncoder<OpenMarketInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['openTimestamp', 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 ['openTimestamp', 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 OpenMarketAsyncInput<\n TAccountCreator extends string = string,\n TAccountMarket extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n creator: TransactionSigner<TAccountCreator>;\n market: Address<TAccountMarket>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market's ATA holding reward tokens */\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n openTimestamp: OpenMarketInstructionDataArgs['openTimestamp'];\n};\n\nexport async function getOpenMarketInstructionAsync<\n TAccountCreator extends string,\n TAccountMarket extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: OpenMarketAsyncInput<\n TAccountCreator,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n OpenMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\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 creator: { value: input.creator ?? 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: false },\n tokenProgram: { value: input.tokenProgram ?? 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\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.creator),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getOpenMarketInstructionDataEncoder().encode(\n args as OpenMarketInstructionDataArgs\n ),\n programAddress,\n } as OpenMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\n >);\n}\n\nexport type OpenMarketInput<\n TAccountCreator extends string = string,\n TAccountMarket extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n creator: TransactionSigner<TAccountCreator>;\n market: Address<TAccountMarket>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market's ATA holding reward tokens */\n marketTokenAta: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n openTimestamp: OpenMarketInstructionDataArgs['openTimestamp'];\n};\n\nexport function getOpenMarketInstruction<\n TAccountCreator extends string,\n TAccountMarket extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: OpenMarketInput<\n TAccountCreator,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): OpenMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\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: false },\n market: { value: input.market ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? 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.creator),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getOpenMarketInstructionDataEncoder().encode(\n args as OpenMarketInstructionDataArgs\n ),\n programAddress,\n } as OpenMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\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 creator: TAccountMetas[0];\n market: TAccountMetas[1];\n tokenMint: TAccountMetas[2];\n /** Market's ATA holding reward tokens */\n marketTokenAta: TAccountMetas[3];\n tokenProgram: TAccountMetas[4];\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 < 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 creator: getNextAccount(),\n market: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n tokenProgram: 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 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_SHARES_DISCRIMINATOR = new Uint8Array([\n 35, 237, 35, 4, 200, 197, 110, 118,\n]);\n\nexport function getRevealSharesDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n REVEAL_SHARES_DISCRIMINATOR\n );\n}\n\nexport type RevealSharesInstruction<\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 TAccountShareAccount extends string | AccountMeta<string> = string,\n TAccountUserEta 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 TAccountShareAccount extends string\n ? WritableAccount<TAccountShareAccount>\n : TAccountShareAccount,\n TAccountUserEta extends string\n ? WritableAccount<TAccountUserEta>\n : TAccountUserEta,\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 RevealSharesInstructionData = {\n discriminator: ReadonlyUint8Array;\n computationOffset: bigint;\n shareAccountId: number;\n};\n\nexport type RevealSharesInstructionDataArgs = {\n computationOffset: number | bigint;\n shareAccountId: number;\n};\n\nexport function getRevealSharesInstructionDataEncoder(): FixedSizeEncoder<RevealSharesInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['computationOffset', getU64Encoder()],\n ['shareAccountId', getU32Encoder()],\n ]),\n (value) => ({ ...value, discriminator: REVEAL_SHARES_DISCRIMINATOR })\n );\n}\n\nexport function getRevealSharesInstructionDataDecoder(): FixedSizeDecoder<RevealSharesInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['computationOffset', getU64Decoder()],\n ['shareAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getRevealSharesInstructionDataCodec(): FixedSizeCodec<\n RevealSharesInstructionDataArgs,\n RevealSharesInstructionData\n> {\n return combineCodec(\n getRevealSharesInstructionDataEncoder(),\n getRevealSharesInstructionDataDecoder()\n );\n}\n\nexport type RevealSharesAsyncInput<\n TAccountSigner extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountShareAccount extends string = string,\n TAccountUserEta 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 shareAccount?: Address<TAccountShareAccount>;\n userEta: Address<TAccountUserEta>;\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: RevealSharesInstructionDataArgs['computationOffset'];\n shareAccountId: RevealSharesInstructionDataArgs['shareAccountId'];\n};\n\nexport async function getRevealSharesInstructionAsync<\n TAccountSigner extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountShareAccount extends string,\n TAccountUserEta 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: RevealSharesAsyncInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountShareAccount,\n TAccountUserEta,\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 RevealSharesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountShareAccount,\n TAccountUserEta,\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 shareAccount: { value: input.shareAccount ?? null, isWritable: true },\n userEta: { value: input.userEta ?? 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.shareAccount.value) {\n accounts.shareAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 104, 97, 114, 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.shareAccountId)),\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.shareAccount),\n getAccountMeta(accounts.userEta),\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: getRevealSharesInstructionDataEncoder().encode(\n args as RevealSharesInstructionDataArgs\n ),\n programAddress,\n } as RevealSharesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountShareAccount,\n TAccountUserEta,\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 RevealSharesInput<\n TAccountSigner extends string = string,\n TAccountOwner extends string = string,\n TAccountMarket extends string = string,\n TAccountShareAccount extends string = string,\n TAccountUserEta 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 shareAccount: Address<TAccountShareAccount>;\n userEta: Address<TAccountUserEta>;\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: RevealSharesInstructionDataArgs['computationOffset'];\n shareAccountId: RevealSharesInstructionDataArgs['shareAccountId'];\n};\n\nexport function getRevealSharesInstruction<\n TAccountSigner extends string,\n TAccountOwner extends string,\n TAccountMarket extends string,\n TAccountShareAccount extends string,\n TAccountUserEta 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: RevealSharesInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountShareAccount,\n TAccountUserEta,\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): RevealSharesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountShareAccount,\n TAccountUserEta,\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 shareAccount: { value: input.shareAccount ?? null, isWritable: true },\n userEta: { value: input.userEta ?? 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.shareAccount),\n getAccountMeta(accounts.userEta),\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: getRevealSharesInstructionDataEncoder().encode(\n args as RevealSharesInstructionDataArgs\n ),\n programAddress,\n } as RevealSharesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountShareAccount,\n TAccountUserEta,\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 ParsedRevealSharesInstruction<\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 shareAccount: TAccountMetas[3];\n userEta: TAccountMetas[4];\n signPdaAccount: TAccountMetas[5];\n mxeAccount: TAccountMetas[6];\n mempoolAccount: TAccountMetas[7];\n executingPool: TAccountMetas[8];\n computationAccount: TAccountMetas[9];\n compDefAccount: TAccountMetas[10];\n clusterAccount: TAccountMetas[11];\n poolAccount: TAccountMetas[12];\n clockAccount: TAccountMetas[13];\n systemProgram: TAccountMetas[14];\n arciumProgram: TAccountMetas[15];\n };\n data: RevealSharesInstructionData;\n};\n\nexport function parseRevealSharesInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedRevealSharesInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 16) {\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 shareAccount: getNextAccount(),\n userEta: 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: getRevealSharesInstructionDataDecoder().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 getRevealSharesOutputDecoder,\n getRevealSharesOutputEncoder,\n type RevealSharesOutput,\n type RevealSharesOutputArgs,\n} from '../types';\n\nexport const REVEAL_SHARES_CALLBACK_DISCRIMINATOR = new Uint8Array([\n 181, 56, 156, 218, 30, 234, 255, 68,\n]);\n\nexport function getRevealSharesCallbackDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n REVEAL_SHARES_CALLBACK_DISCRIMINATOR\n );\n}\n\nexport type RevealSharesCallbackInstruction<\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 TAccountShareAccount extends string | AccountMeta<string> = string,\n TAccountUserEta 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 TAccountShareAccount extends string\n ? WritableAccount<TAccountShareAccount>\n : TAccountShareAccount,\n TAccountUserEta extends string\n ? WritableAccount<TAccountUserEta>\n : TAccountUserEta,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type RevealSharesCallbackInstructionData = {\n discriminator: ReadonlyUint8Array;\n output:\n | {\n __kind: 'Success';\n fields: readonly [RevealSharesOutput, Array<number>];\n }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [RevealSharesOutput];\n };\n};\n\nexport type RevealSharesCallbackInstructionDataArgs = {\n output:\n | {\n __kind: 'Success';\n fields: readonly [RevealSharesOutputArgs, Array<number>];\n }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [RevealSharesOutputArgs];\n };\n};\n\nexport function getRevealSharesCallbackInstructionDataEncoder(): Encoder<RevealSharesCallbackInstructionDataArgs> {\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 getRevealSharesOutputEncoder(),\n getArrayEncoder(getU8Encoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitEncoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructEncoder([\n ['fields', getTupleEncoder([getRevealSharesOutputEncoder()])],\n ]),\n ],\n ]),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: REVEAL_SHARES_CALLBACK_DISCRIMINATOR,\n })\n );\n}\n\nexport function getRevealSharesCallbackInstructionDataDecoder(): Decoder<RevealSharesCallbackInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n [\n 'output',\n getDiscriminatedUnionDecoder([\n [\n 'Success',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([\n getRevealSharesOutputDecoder(),\n getArrayDecoder(getU8Decoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitDecoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructDecoder([\n ['fields', getTupleDecoder([getRevealSharesOutputDecoder()])],\n ]),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getRevealSharesCallbackInstructionDataCodec(): Codec<\n RevealSharesCallbackInstructionDataArgs,\n RevealSharesCallbackInstructionData\n> {\n return combineCodec(\n getRevealSharesCallbackInstructionDataEncoder(),\n getRevealSharesCallbackInstructionDataDecoder()\n );\n}\n\nexport type RevealSharesCallbackInput<\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 TAccountShareAccount extends string = string,\n TAccountUserEta 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 shareAccount: Address<TAccountShareAccount>;\n userEta: Address<TAccountUserEta>;\n output: RevealSharesCallbackInstructionDataArgs['output'];\n};\n\nexport function getRevealSharesCallbackInstruction<\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 TAccountShareAccount extends string,\n TAccountUserEta extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: RevealSharesCallbackInput<\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountShareAccount,\n TAccountUserEta\n >,\n config?: { programAddress?: TProgramAddress }\n): RevealSharesCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountShareAccount,\n TAccountUserEta\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 shareAccount: { value: input.shareAccount ?? null, isWritable: true },\n userEta: { value: input.userEta ?? 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.shareAccount),\n getAccountMeta(accounts.userEta),\n ],\n data: getRevealSharesCallbackInstructionDataEncoder().encode(\n args as RevealSharesCallbackInstructionDataArgs\n ),\n programAddress,\n } as RevealSharesCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountShareAccount,\n TAccountUserEta\n >);\n}\n\nexport type ParsedRevealSharesCallbackInstruction<\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 shareAccount: TAccountMetas[6];\n userEta: TAccountMetas[7];\n };\n data: RevealSharesCallbackInstructionData;\n};\n\nexport function parseRevealSharesCallbackInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedRevealSharesCallbackInstruction<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 shareAccount: getNextAccount(),\n userEta: getNextAccount(),\n },\n data: getRevealSharesCallbackInstructionDataDecoder().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_SHARES_COMP_DEF_DISCRIMINATOR = new Uint8Array([\n 101, 145, 43, 177, 171, 13, 172, 254,\n]);\n\nexport function getRevealSharesCompDefDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n REVEAL_SHARES_COMP_DEF_DISCRIMINATOR\n );\n}\n\nexport type RevealSharesCompDefInstruction<\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 RevealSharesCompDefInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type RevealSharesCompDefInstructionDataArgs = {};\n\nexport function getRevealSharesCompDefInstructionDataEncoder(): FixedSizeEncoder<RevealSharesCompDefInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({\n ...value,\n discriminator: REVEAL_SHARES_COMP_DEF_DISCRIMINATOR,\n })\n );\n}\n\nexport function getRevealSharesCompDefInstructionDataDecoder(): FixedSizeDecoder<RevealSharesCompDefInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getRevealSharesCompDefInstructionDataCodec(): FixedSizeCodec<\n RevealSharesCompDefInstructionDataArgs,\n RevealSharesCompDefInstructionData\n> {\n return combineCodec(\n getRevealSharesCompDefInstructionDataEncoder(),\n getRevealSharesCompDefInstructionDataDecoder()\n );\n}\n\nexport type RevealSharesCompDefInput<\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 getRevealSharesCompDefInstruction<\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: RevealSharesCompDefInput<\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): RevealSharesCompDefInstruction<\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: getRevealSharesCompDefInstructionDataEncoder().encode({}),\n programAddress,\n } as RevealSharesCompDefInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedRevealSharesCompDefInstruction<\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: RevealSharesCompDefInstructionData;\n};\n\nexport function parseRevealSharesCompDefInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedRevealSharesCompDefInstruction<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: getRevealSharesCompDefInstructionDataDecoder().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 getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\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 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';\nimport {\n getWinningOptionDecoder,\n getWinningOptionEncoder,\n type WinningOption,\n type WinningOptionArgs,\n} from '../types';\n\nexport const SELECT_WINNING_OPTIONS_DISCRIMINATOR = new Uint8Array([\n 56, 237, 171, 43, 247, 124, 100, 20,\n]);\n\nexport function getSelectWinningOptionsDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n SELECT_WINNING_OPTIONS_DISCRIMINATOR\n );\n}\n\nexport type SelectWinningOptionsInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountAuthority 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 TAccountAuthority extends string\n ? ReadonlySignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type SelectWinningOptionsInstructionData = {\n discriminator: ReadonlyUint8Array;\n selections: Array<WinningOption>;\n};\n\nexport type SelectWinningOptionsInstructionDataArgs = {\n selections: Array<WinningOptionArgs>;\n};\n\nexport function getSelectWinningOptionsInstructionDataEncoder(): Encoder<SelectWinningOptionsInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['selections', getArrayEncoder(getWinningOptionEncoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: SELECT_WINNING_OPTIONS_DISCRIMINATOR,\n })\n );\n}\n\nexport function getSelectWinningOptionsInstructionDataDecoder(): Decoder<SelectWinningOptionsInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['selections', getArrayDecoder(getWinningOptionDecoder())],\n ]);\n}\n\nexport function getSelectWinningOptionsInstructionDataCodec(): Codec<\n SelectWinningOptionsInstructionDataArgs,\n SelectWinningOptionsInstructionData\n> {\n return combineCodec(\n getSelectWinningOptionsInstructionDataEncoder(),\n getSelectWinningOptionsInstructionDataDecoder()\n );\n}\n\nexport type SelectWinningOptionsInput<\n TAccountAuthority extends string = string,\n TAccountMarket extends string = string,\n> = {\n authority: TransactionSigner<TAccountAuthority>;\n market: Address<TAccountMarket>;\n selections: SelectWinningOptionsInstructionDataArgs['selections'];\n};\n\nexport function getSelectWinningOptionsInstruction<\n TAccountAuthority extends string,\n TAccountMarket extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: SelectWinningOptionsInput<TAccountAuthority, TAccountMarket>,\n config?: { programAddress?: TProgramAddress }\n): SelectWinningOptionsInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountMarket\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n authority: { value: input.authority ?? 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 // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.market),\n ],\n data: getSelectWinningOptionsInstructionDataEncoder().encode(\n args as SelectWinningOptionsInstructionDataArgs\n ),\n programAddress,\n } as SelectWinningOptionsInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountMarket\n >);\n}\n\nexport type ParsedSelectWinningOptionsInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n authority: TAccountMetas[0];\n market: TAccountMetas[1];\n };\n data: SelectWinningOptionsInstructionData;\n};\n\nexport function parseSelectWinningOptionsInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedSelectWinningOptionsInstruction<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: { authority: getNextAccount(), market: getNextAccount() },\n data: getSelectWinningOptionsInstructionDataDecoder().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 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 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 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 TAccountMarket extends string | AccountMeta<string> = string,\n TAccountUserEta extends string | AccountMeta<string> = string,\n TAccountShareAccount 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 TAccountMarket extends string\n ? ReadonlyAccount<TAccountMarket>\n : TAccountMarket,\n TAccountUserEta extends string\n ? WritableAccount<TAccountUserEta>\n : TAccountUserEta,\n TAccountShareAccount extends string\n ? WritableAccount<TAccountShareAccount>\n : TAccountShareAccount,\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 shareAccountId: number;\n amountCiphertext: Array<number>;\n selectedOptionCiphertext: Array<number>;\n inputNonce: bigint;\n authorizedReaderNonce: bigint;\n};\n\nexport type StakeInstructionDataArgs = {\n computationOffset: number | bigint;\n shareAccountId: number;\n amountCiphertext: Array<number>;\n selectedOptionCiphertext: Array<number>;\n inputNonce: number | bigint;\n authorizedReaderNonce: number | bigint;\n};\n\nexport function getStakeInstructionDataEncoder(): FixedSizeEncoder<StakeInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['computationOffset', getU64Encoder()],\n ['shareAccountId', getU32Encoder()],\n ['amountCiphertext', getArrayEncoder(getU8Encoder(), { size: 32 })],\n [\n 'selectedOptionCiphertext',\n getArrayEncoder(getU8Encoder(), { size: 32 }),\n ],\n ['inputNonce', getU128Encoder()],\n ['authorizedReaderNonce', 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 ['shareAccountId', getU32Decoder()],\n ['amountCiphertext', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['selectedOptionCiphertext', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['inputNonce', getU128Decoder()],\n ['authorizedReaderNonce', 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 TAccountMarket extends string = string,\n TAccountUserEta extends string = string,\n TAccountShareAccount 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 market: Address<TAccountMarket>;\n userEta: Address<TAccountUserEta>;\n shareAccount?: Address<TAccountShareAccount>;\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 shareAccountId: StakeInstructionDataArgs['shareAccountId'];\n amountCiphertext: StakeInstructionDataArgs['amountCiphertext'];\n selectedOptionCiphertext: StakeInstructionDataArgs['selectedOptionCiphertext'];\n inputNonce: StakeInstructionDataArgs['inputNonce'];\n authorizedReaderNonce: StakeInstructionDataArgs['authorizedReaderNonce'];\n};\n\nexport async function getStakeInstructionAsync<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountUserEta extends string,\n TAccountShareAccount 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 TAccountMarket,\n TAccountUserEta,\n TAccountShareAccount,\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 TAccountMarket,\n TAccountUserEta,\n TAccountShareAccount,\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 market: { value: input.market ?? null, isWritable: false },\n userEta: { value: input.userEta ?? null, isWritable: true },\n shareAccount: { value: input.shareAccount ?? 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.shareAccount.value) {\n accounts.shareAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 104, 97, 114, 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.shareAccountId)),\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.market),\n getAccountMeta(accounts.userEta),\n getAccountMeta(accounts.shareAccount),\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 TAccountMarket,\n TAccountUserEta,\n TAccountShareAccount,\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 TAccountMarket extends string = string,\n TAccountUserEta extends string = string,\n TAccountShareAccount 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 market: Address<TAccountMarket>;\n userEta: Address<TAccountUserEta>;\n shareAccount: Address<TAccountShareAccount>;\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 shareAccountId: StakeInstructionDataArgs['shareAccountId'];\n amountCiphertext: StakeInstructionDataArgs['amountCiphertext'];\n selectedOptionCiphertext: StakeInstructionDataArgs['selectedOptionCiphertext'];\n inputNonce: StakeInstructionDataArgs['inputNonce'];\n authorizedReaderNonce: StakeInstructionDataArgs['authorizedReaderNonce'];\n};\n\nexport function getStakeInstruction<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountUserEta extends string,\n TAccountShareAccount 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 TAccountMarket,\n TAccountUserEta,\n TAccountShareAccount,\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 TAccountMarket,\n TAccountUserEta,\n TAccountShareAccount,\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 market: { value: input.market ?? null, isWritable: false },\n userEta: { value: input.userEta ?? null, isWritable: true },\n shareAccount: { value: input.shareAccount ?? 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.market),\n getAccountMeta(accounts.userEta),\n getAccountMeta(accounts.shareAccount),\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 TAccountMarket,\n TAccountUserEta,\n TAccountShareAccount,\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 market: TAccountMetas[1];\n userEta: TAccountMetas[2];\n shareAccount: 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: 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 < 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 market: getNextAccount(),\n userEta: getNextAccount(),\n shareAccount: 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 getAddressDecoder,\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 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 TRANSFER_CENTRAL_STATE_AUTHORITY_DISCRIMINATOR = new Uint8Array([\n 237, 33, 80, 239, 189, 157, 253, 90,\n]);\n\nexport function getTransferCentralStateAuthorityDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n TRANSFER_CENTRAL_STATE_AUTHORITY_DISCRIMINATOR\n );\n}\n\nexport type TransferCentralStateAuthorityInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountAuthority extends string | AccountMeta<string> = string,\n TAccountCentralState extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountAuthority extends string\n ? ReadonlySignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountCentralState extends string\n ? WritableAccount<TAccountCentralState>\n : TAccountCentralState,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransferCentralStateAuthorityInstructionData = {\n discriminator: ReadonlyUint8Array;\n newAuthority: Address;\n};\n\nexport type TransferCentralStateAuthorityInstructionDataArgs = {\n newAuthority: Address;\n};\n\nexport function getTransferCentralStateAuthorityInstructionDataEncoder(): FixedSizeEncoder<TransferCentralStateAuthorityInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['newAuthority', getAddressEncoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: TRANSFER_CENTRAL_STATE_AUTHORITY_DISCRIMINATOR,\n })\n );\n}\n\nexport function getTransferCentralStateAuthorityInstructionDataDecoder(): FixedSizeDecoder<TransferCentralStateAuthorityInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['newAuthority', getAddressDecoder()],\n ]);\n}\n\nexport function getTransferCentralStateAuthorityInstructionDataCodec(): FixedSizeCodec<\n TransferCentralStateAuthorityInstructionDataArgs,\n TransferCentralStateAuthorityInstructionData\n> {\n return combineCodec(\n getTransferCentralStateAuthorityInstructionDataEncoder(),\n getTransferCentralStateAuthorityInstructionDataDecoder()\n );\n}\n\nexport type TransferCentralStateAuthorityAsyncInput<\n TAccountAuthority extends string = string,\n TAccountCentralState extends string = string,\n> = {\n authority: TransactionSigner<TAccountAuthority>;\n centralState?: Address<TAccountCentralState>;\n newAuthority: TransferCentralStateAuthorityInstructionDataArgs['newAuthority'];\n};\n\nexport async function getTransferCentralStateAuthorityInstructionAsync<\n TAccountAuthority extends string,\n TAccountCentralState extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: TransferCentralStateAuthorityAsyncInput<\n TAccountAuthority,\n TAccountCentralState\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n TransferCentralStateAuthorityInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountCentralState\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n authority: { value: input.authority ?? null, isWritable: false },\n centralState: { value: input.centralState ?? 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.centralState.value) {\n accounts.centralState.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 99, 101, 110, 116, 114, 97, 108, 95, 115, 116, 97, 116, 101,\n ])\n ),\n ],\n });\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.centralState),\n ],\n data: getTransferCentralStateAuthorityInstructionDataEncoder().encode(\n args as TransferCentralStateAuthorityInstructionDataArgs\n ),\n programAddress,\n } as TransferCentralStateAuthorityInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountCentralState\n >);\n}\n\nexport type TransferCentralStateAuthorityInput<\n TAccountAuthority extends string = string,\n TAccountCentralState extends string = string,\n> = {\n authority: TransactionSigner<TAccountAuthority>;\n centralState: Address<TAccountCentralState>;\n newAuthority: TransferCentralStateAuthorityInstructionDataArgs['newAuthority'];\n};\n\nexport function getTransferCentralStateAuthorityInstruction<\n TAccountAuthority extends string,\n TAccountCentralState extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: TransferCentralStateAuthorityInput<\n TAccountAuthority,\n TAccountCentralState\n >,\n config?: { programAddress?: TProgramAddress }\n): TransferCentralStateAuthorityInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountCentralState\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n authority: { value: input.authority ?? null, isWritable: false },\n centralState: { value: input.centralState ?? 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.authority),\n getAccountMeta(accounts.centralState),\n ],\n data: getTransferCentralStateAuthorityInstructionDataEncoder().encode(\n args as TransferCentralStateAuthorityInstructionDataArgs\n ),\n programAddress,\n } as TransferCentralStateAuthorityInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountCentralState\n >);\n}\n\nexport type ParsedTransferCentralStateAuthorityInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n authority: TAccountMetas[0];\n centralState: TAccountMetas[1];\n };\n data: TransferCentralStateAuthorityInstructionData;\n};\n\nexport function parseTransferCentralStateAuthorityInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedTransferCentralStateAuthorityInstruction<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: { authority: getNextAccount(), centralState: getNextAccount() },\n data: getTransferCentralStateAuthorityInstructionDataDecoder().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 UNSTAKE_EARLY_DISCRIMINATOR = new Uint8Array([\n 246, 212, 81, 180, 65, 2, 126, 125,\n]);\n\nexport function getUnstakeEarlyDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n UNSTAKE_EARLY_DISCRIMINATOR\n );\n}\n\nexport type UnstakeEarlyInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountShareAccount 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 ? WritableSignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountMarket extends string\n ? ReadonlyAccount<TAccountMarket>\n : TAccountMarket,\n TAccountShareAccount extends string\n ? WritableAccount<TAccountShareAccount>\n : TAccountShareAccount,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UnstakeEarlyInstructionData = {\n discriminator: ReadonlyUint8Array;\n shareAccountId: number;\n};\n\nexport type UnstakeEarlyInstructionDataArgs = { shareAccountId: number };\n\nexport function getUnstakeEarlyInstructionDataEncoder(): FixedSizeEncoder<UnstakeEarlyInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['shareAccountId', getU32Encoder()],\n ]),\n (value) => ({ ...value, discriminator: UNSTAKE_EARLY_DISCRIMINATOR })\n );\n}\n\nexport function getUnstakeEarlyInstructionDataDecoder(): FixedSizeDecoder<UnstakeEarlyInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['shareAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getUnstakeEarlyInstructionDataCodec(): FixedSizeCodec<\n UnstakeEarlyInstructionDataArgs,\n UnstakeEarlyInstructionData\n> {\n return combineCodec(\n getUnstakeEarlyInstructionDataEncoder(),\n getUnstakeEarlyInstructionDataDecoder()\n );\n}\n\nexport type UnstakeEarlyAsyncInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountShareAccount extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n shareAccount?: Address<TAccountShareAccount>;\n shareAccountId: UnstakeEarlyInstructionDataArgs['shareAccountId'];\n};\n\nexport async function getUnstakeEarlyInstructionAsync<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountShareAccount extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: UnstakeEarlyAsyncInput<\n TAccountSigner,\n TAccountMarket,\n TAccountShareAccount\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n UnstakeEarlyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountShareAccount\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 shareAccount: { value: input.shareAccount ?? 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.shareAccount.value) {\n accounts.shareAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 104, 97, 114, 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.shareAccountId)),\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.shareAccount),\n ],\n data: getUnstakeEarlyInstructionDataEncoder().encode(\n args as UnstakeEarlyInstructionDataArgs\n ),\n programAddress,\n } as UnstakeEarlyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountShareAccount\n >);\n}\n\nexport type UnstakeEarlyInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountShareAccount extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n shareAccount: Address<TAccountShareAccount>;\n shareAccountId: UnstakeEarlyInstructionDataArgs['shareAccountId'];\n};\n\nexport function getUnstakeEarlyInstruction<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountShareAccount extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: UnstakeEarlyInput<\n TAccountSigner,\n TAccountMarket,\n TAccountShareAccount\n >,\n config?: { programAddress?: TProgramAddress }\n): UnstakeEarlyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountShareAccount\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 shareAccount: { value: input.shareAccount ?? 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.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.shareAccount),\n ],\n data: getUnstakeEarlyInstructionDataEncoder().encode(\n args as UnstakeEarlyInstructionDataArgs\n ),\n programAddress,\n } as UnstakeEarlyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountShareAccount\n >);\n}\n\nexport type ParsedUnstakeEarlyInstruction<\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 shareAccount: TAccountMetas[2];\n };\n data: UnstakeEarlyInstructionData;\n};\n\nexport function parseUnstakeEarlyInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedUnstakeEarlyInstruction<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 shareAccount: getNextAccount(),\n },\n data: getUnstakeEarlyInstructionDataDecoder().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 getUnstakeEarlyOutputDecoder,\n getUnstakeEarlyOutputEncoder,\n type UnstakeEarlyOutput,\n type UnstakeEarlyOutputArgs,\n} from '../types';\n\nexport const UNSTAKE_EARLY_CALLBACK_DISCRIMINATOR = new Uint8Array([\n 106, 110, 72, 0, 25, 127, 188, 205,\n]);\n\nexport function getUnstakeEarlyCallbackDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n UNSTAKE_EARLY_CALLBACK_DISCRIMINATOR\n );\n}\n\nexport type UnstakeEarlyCallbackInstruction<\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 TAccountUserEta extends string | AccountMeta<string> = string,\n TAccountShareAccount 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 TAccountUserEta extends string\n ? WritableAccount<TAccountUserEta>\n : TAccountUserEta,\n TAccountShareAccount extends string\n ? WritableAccount<TAccountShareAccount>\n : TAccountShareAccount,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UnstakeEarlyCallbackInstructionData = {\n discriminator: ReadonlyUint8Array;\n output:\n | {\n __kind: 'Success';\n fields: readonly [UnstakeEarlyOutput, Array<number>];\n }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [UnstakeEarlyOutput];\n };\n};\n\nexport type UnstakeEarlyCallbackInstructionDataArgs = {\n output:\n | {\n __kind: 'Success';\n fields: readonly [UnstakeEarlyOutputArgs, Array<number>];\n }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [UnstakeEarlyOutputArgs];\n };\n};\n\nexport function getUnstakeEarlyCallbackInstructionDataEncoder(): Encoder<UnstakeEarlyCallbackInstructionDataArgs> {\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 getUnstakeEarlyOutputEncoder(),\n getArrayEncoder(getU8Encoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitEncoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructEncoder([\n ['fields', getTupleEncoder([getUnstakeEarlyOutputEncoder()])],\n ]),\n ],\n ]),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: UNSTAKE_EARLY_CALLBACK_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUnstakeEarlyCallbackInstructionDataDecoder(): Decoder<UnstakeEarlyCallbackInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n [\n 'output',\n getDiscriminatedUnionDecoder([\n [\n 'Success',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([\n getUnstakeEarlyOutputDecoder(),\n getArrayDecoder(getU8Decoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitDecoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructDecoder([\n ['fields', getTupleDecoder([getUnstakeEarlyOutputDecoder()])],\n ]),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getUnstakeEarlyCallbackInstructionDataCodec(): Codec<\n UnstakeEarlyCallbackInstructionDataArgs,\n UnstakeEarlyCallbackInstructionData\n> {\n return combineCodec(\n getUnstakeEarlyCallbackInstructionDataEncoder(),\n getUnstakeEarlyCallbackInstructionDataDecoder()\n );\n}\n\nexport type UnstakeEarlyCallbackInput<\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 TAccountUserEta extends string = string,\n TAccountShareAccount 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 userEta: Address<TAccountUserEta>;\n shareAccount: Address<TAccountShareAccount>;\n output: UnstakeEarlyCallbackInstructionDataArgs['output'];\n};\n\nexport function getUnstakeEarlyCallbackInstruction<\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 TAccountUserEta extends string,\n TAccountShareAccount extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: UnstakeEarlyCallbackInput<\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountUserEta,\n TAccountShareAccount\n >,\n config?: { programAddress?: TProgramAddress }\n): UnstakeEarlyCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountUserEta,\n TAccountShareAccount\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 userEta: { value: input.userEta ?? null, isWritable: true },\n shareAccount: { value: input.shareAccount ?? 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.userEta),\n getAccountMeta(accounts.shareAccount),\n ],\n data: getUnstakeEarlyCallbackInstructionDataEncoder().encode(\n args as UnstakeEarlyCallbackInstructionDataArgs\n ),\n programAddress,\n } as UnstakeEarlyCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountUserEta,\n TAccountShareAccount\n >);\n}\n\nexport type ParsedUnstakeEarlyCallbackInstruction<\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 userEta: TAccountMetas[6];\n shareAccount: TAccountMetas[7];\n };\n data: UnstakeEarlyCallbackInstructionData;\n};\n\nexport function parseUnstakeEarlyCallbackInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedUnstakeEarlyCallbackInstruction<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 userEta: getNextAccount(),\n shareAccount: getNextAccount(),\n },\n data: getUnstakeEarlyCallbackInstructionDataDecoder().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 UNSTAKE_EARLY_COMP_DEF_DISCRIMINATOR = new Uint8Array([\n 40, 120, 116, 55, 117, 67, 141, 9,\n]);\n\nexport function getUnstakeEarlyCompDefDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n UNSTAKE_EARLY_COMP_DEF_DISCRIMINATOR\n );\n}\n\nexport type UnstakeEarlyCompDefInstruction<\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 UnstakeEarlyCompDefInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type UnstakeEarlyCompDefInstructionDataArgs = {};\n\nexport function getUnstakeEarlyCompDefInstructionDataEncoder(): FixedSizeEncoder<UnstakeEarlyCompDefInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({\n ...value,\n discriminator: UNSTAKE_EARLY_COMP_DEF_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUnstakeEarlyCompDefInstructionDataDecoder(): FixedSizeDecoder<UnstakeEarlyCompDefInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getUnstakeEarlyCompDefInstructionDataCodec(): FixedSizeCodec<\n UnstakeEarlyCompDefInstructionDataArgs,\n UnstakeEarlyCompDefInstructionData\n> {\n return combineCodec(\n getUnstakeEarlyCompDefInstructionDataEncoder(),\n getUnstakeEarlyCompDefInstructionDataDecoder()\n );\n}\n\nexport type UnstakeEarlyCompDefInput<\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 getUnstakeEarlyCompDefInstruction<\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: UnstakeEarlyCompDefInput<\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): UnstakeEarlyCompDefInstruction<\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: getUnstakeEarlyCompDefInstructionDataEncoder().encode({}),\n programAddress,\n } as UnstakeEarlyCompDefInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedUnstakeEarlyCompDefInstruction<\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: UnstakeEarlyCompDefInstructionData;\n};\n\nexport function parseUnstakeEarlyCompDefInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedUnstakeEarlyCompDefInstruction<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: getUnstakeEarlyCompDefInstructionDataDecoder().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 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 UNWRAP_ENCRYPTED_TOKENS_DISCRIMINATOR = new Uint8Array([\n 223, 93, 223, 112, 29, 86, 208, 219,\n]);\n\nexport function getUnwrapEncryptedTokensDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n UNWRAP_ENCRYPTED_TOKENS_DISCRIMINATOR\n );\n}\n\nexport type UnwrapEncryptedTokensInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountEncryptedTokenAccount extends string | AccountMeta<string> = string,\n TAccountTokenVault extends string | AccountMeta<string> = string,\n TAccountTokenVaultAta extends string | AccountMeta<string> = string,\n TAccountUserTokenAccount 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 TAccountTokenProgram extends string | AccountMeta<string> = string,\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 TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountEncryptedTokenAccount extends string\n ? WritableAccount<TAccountEncryptedTokenAccount>\n : TAccountEncryptedTokenAccount,\n TAccountTokenVault extends string\n ? ReadonlyAccount<TAccountTokenVault>\n : TAccountTokenVault,\n TAccountTokenVaultAta extends string\n ? WritableAccount<TAccountTokenVaultAta>\n : TAccountTokenVaultAta,\n TAccountUserTokenAccount extends string\n ? WritableAccount<TAccountUserTokenAccount>\n : TAccountUserTokenAccount,\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 TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountArciumProgram extends string\n ? ReadonlyAccount<TAccountArciumProgram>\n : TAccountArciumProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UnwrapEncryptedTokensInstructionData = {\n discriminator: ReadonlyUint8Array;\n computationOffset: bigint;\n amount: bigint;\n};\n\nexport type UnwrapEncryptedTokensInstructionDataArgs = {\n computationOffset: number | bigint;\n amount: number | bigint;\n};\n\nexport function getUnwrapEncryptedTokensInstructionDataEncoder(): FixedSizeEncoder<UnwrapEncryptedTokensInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['computationOffset', getU64Encoder()],\n ['amount', getU64Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: UNWRAP_ENCRYPTED_TOKENS_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUnwrapEncryptedTokensInstructionDataDecoder(): FixedSizeDecoder<UnwrapEncryptedTokensInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['computationOffset', getU64Decoder()],\n ['amount', getU64Decoder()],\n ]);\n}\n\nexport function getUnwrapEncryptedTokensInstructionDataCodec(): FixedSizeCodec<\n UnwrapEncryptedTokensInstructionDataArgs,\n UnwrapEncryptedTokensInstructionData\n> {\n return combineCodec(\n getUnwrapEncryptedTokensInstructionDataEncoder(),\n getUnwrapEncryptedTokensInstructionDataDecoder()\n );\n}\n\nexport type UnwrapEncryptedTokensAsyncInput<\n TAccountSigner extends string = string,\n TAccountTokenMint extends string = string,\n TAccountEncryptedTokenAccount extends string = string,\n TAccountTokenVault extends string = string,\n TAccountTokenVaultAta extends string = string,\n TAccountUserTokenAccount 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 TAccountTokenProgram extends string = string,\n TAccountArciumProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n tokenMint: Address<TAccountTokenMint>;\n encryptedTokenAccount: Address<TAccountEncryptedTokenAccount>;\n /** Token vault holding all wrapped tokens */\n tokenVault?: Address<TAccountTokenVault>;\n /** ATA owned by TokenVault PDA (source of SPL tokens for withdrawal) */\n tokenVaultAta?: Address<TAccountTokenVaultAta>;\n /** Signer's token account (destination for claimed tokens) */\n userTokenAccount: Address<TAccountUserTokenAccount>;\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 tokenProgram: Address<TAccountTokenProgram>;\n arciumProgram?: Address<TAccountArciumProgram>;\n computationOffset: UnwrapEncryptedTokensInstructionDataArgs['computationOffset'];\n amount: UnwrapEncryptedTokensInstructionDataArgs['amount'];\n};\n\nexport async function getUnwrapEncryptedTokensInstructionAsync<\n TAccountSigner extends string,\n TAccountTokenMint extends string,\n TAccountEncryptedTokenAccount extends string,\n TAccountTokenVault extends string,\n TAccountTokenVaultAta extends string,\n TAccountUserTokenAccount 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 TAccountTokenProgram extends string,\n TAccountArciumProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: UnwrapEncryptedTokensAsyncInput<\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountUserTokenAccount,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountArciumProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n UnwrapEncryptedTokensInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountUserTokenAccount,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountTokenProgram,\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 tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n encryptedTokenAccount: {\n value: input.encryptedTokenAccount ?? null,\n isWritable: true,\n },\n tokenVault: { value: input.tokenVault ?? null, isWritable: false },\n tokenVaultAta: { value: input.tokenVaultAta ?? null, isWritable: true },\n userTokenAccount: {\n value: input.userTokenAccount ?? null,\n isWritable: true,\n },\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 tokenProgram: { value: input.tokenProgram ?? 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.tokenVault.value) {\n accounts.tokenVault.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116])\n ),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.tokenVaultAta.value) {\n accounts.tokenVaultAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.tokenVault.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.tokenMint),\n getAccountMeta(accounts.encryptedTokenAccount),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.tokenVaultAta),\n getAccountMeta(accounts.userTokenAccount),\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.tokenProgram),\n getAccountMeta(accounts.arciumProgram),\n ],\n data: getUnwrapEncryptedTokensInstructionDataEncoder().encode(\n args as UnwrapEncryptedTokensInstructionDataArgs\n ),\n programAddress,\n } as UnwrapEncryptedTokensInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountUserTokenAccount,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountArciumProgram\n >);\n}\n\nexport type UnwrapEncryptedTokensInput<\n TAccountSigner extends string = string,\n TAccountTokenMint extends string = string,\n TAccountEncryptedTokenAccount extends string = string,\n TAccountTokenVault extends string = string,\n TAccountTokenVaultAta extends string = string,\n TAccountUserTokenAccount 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 TAccountTokenProgram extends string = string,\n TAccountArciumProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n tokenMint: Address<TAccountTokenMint>;\n encryptedTokenAccount: Address<TAccountEncryptedTokenAccount>;\n /** Token vault holding all wrapped tokens */\n tokenVault: Address<TAccountTokenVault>;\n /** ATA owned by TokenVault PDA (source of SPL tokens for withdrawal) */\n tokenVaultAta: Address<TAccountTokenVaultAta>;\n /** Signer's token account (destination for claimed tokens) */\n userTokenAccount: Address<TAccountUserTokenAccount>;\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 tokenProgram: Address<TAccountTokenProgram>;\n arciumProgram?: Address<TAccountArciumProgram>;\n computationOffset: UnwrapEncryptedTokensInstructionDataArgs['computationOffset'];\n amount: UnwrapEncryptedTokensInstructionDataArgs['amount'];\n};\n\nexport function getUnwrapEncryptedTokensInstruction<\n TAccountSigner extends string,\n TAccountTokenMint extends string,\n TAccountEncryptedTokenAccount extends string,\n TAccountTokenVault extends string,\n TAccountTokenVaultAta extends string,\n TAccountUserTokenAccount 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 TAccountTokenProgram extends string,\n TAccountArciumProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: UnwrapEncryptedTokensInput<\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountUserTokenAccount,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountArciumProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): UnwrapEncryptedTokensInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountUserTokenAccount,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountTokenProgram,\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 tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n encryptedTokenAccount: {\n value: input.encryptedTokenAccount ?? null,\n isWritable: true,\n },\n tokenVault: { value: input.tokenVault ?? null, isWritable: false },\n tokenVaultAta: { value: input.tokenVaultAta ?? null, isWritable: true },\n userTokenAccount: {\n value: input.userTokenAccount ?? null,\n isWritable: true,\n },\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 tokenProgram: { value: input.tokenProgram ?? 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.tokenMint),\n getAccountMeta(accounts.encryptedTokenAccount),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.tokenVaultAta),\n getAccountMeta(accounts.userTokenAccount),\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.tokenProgram),\n getAccountMeta(accounts.arciumProgram),\n ],\n data: getUnwrapEncryptedTokensInstructionDataEncoder().encode(\n args as UnwrapEncryptedTokensInstructionDataArgs\n ),\n programAddress,\n } as UnwrapEncryptedTokensInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountUserTokenAccount,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountArciumProgram\n >);\n}\n\nexport type ParsedUnwrapEncryptedTokensInstruction<\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 tokenMint: TAccountMetas[1];\n encryptedTokenAccount: TAccountMetas[2];\n /** Token vault holding all wrapped tokens */\n tokenVault: TAccountMetas[3];\n /** ATA owned by TokenVault PDA (source of SPL tokens for withdrawal) */\n tokenVaultAta: TAccountMetas[4];\n /** Signer's token account (destination for claimed tokens) */\n userTokenAccount: TAccountMetas[5];\n signPdaAccount: TAccountMetas[6];\n mxeAccount: TAccountMetas[7];\n mempoolAccount: TAccountMetas[8];\n executingPool: TAccountMetas[9];\n computationAccount: TAccountMetas[10];\n compDefAccount: TAccountMetas[11];\n clusterAccount: TAccountMetas[12];\n poolAccount: TAccountMetas[13];\n clockAccount: TAccountMetas[14];\n systemProgram: TAccountMetas[15];\n tokenProgram: TAccountMetas[16];\n arciumProgram: TAccountMetas[17];\n };\n data: UnwrapEncryptedTokensInstructionData;\n};\n\nexport function parseUnwrapEncryptedTokensInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedUnwrapEncryptedTokensInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 18) {\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 tokenMint: getNextAccount(),\n encryptedTokenAccount: getNextAccount(),\n tokenVault: getNextAccount(),\n tokenVaultAta: getNextAccount(),\n userTokenAccount: 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 tokenProgram: getNextAccount(),\n arciumProgram: getNextAccount(),\n },\n data: getUnwrapEncryptedTokensInstructionDataDecoder().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 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 getUnwrapEncryptedTokensOutputDecoder,\n getUnwrapEncryptedTokensOutputEncoder,\n type UnwrapEncryptedTokensOutput,\n type UnwrapEncryptedTokensOutputArgs,\n} from '../types';\n\nexport const UNWRAP_ENCRYPTED_TOKENS_CALLBACK_DISCRIMINATOR = new Uint8Array([\n 79, 46, 246, 46, 89, 103, 215, 38,\n]);\n\nexport function getUnwrapEncryptedTokensCallbackDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n UNWRAP_ENCRYPTED_TOKENS_CALLBACK_DISCRIMINATOR\n );\n}\n\nexport type UnwrapEncryptedTokensCallbackInstruction<\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 TAccountEncryptedTokenAccount extends string | AccountMeta<string> = string,\n TAccountUserTokenAccount extends string | AccountMeta<string> = string,\n TAccountTokenVault extends string | AccountMeta<string> = string,\n TAccountTokenVaultAta extends string | AccountMeta<string> = string,\n TAccountTokenMint 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 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 TAccountEncryptedTokenAccount extends string\n ? WritableAccount<TAccountEncryptedTokenAccount>\n : TAccountEncryptedTokenAccount,\n TAccountUserTokenAccount extends string\n ? WritableAccount<TAccountUserTokenAccount>\n : TAccountUserTokenAccount,\n TAccountTokenVault extends string\n ? ReadonlyAccount<TAccountTokenVault>\n : TAccountTokenVault,\n TAccountTokenVaultAta extends string\n ? WritableAccount<TAccountTokenVaultAta>\n : TAccountTokenVaultAta,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UnwrapEncryptedTokensCallbackInstructionData = {\n discriminator: ReadonlyUint8Array;\n output:\n | {\n __kind: 'Success';\n fields: readonly [UnwrapEncryptedTokensOutput, Array<number>];\n }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [UnwrapEncryptedTokensOutput];\n };\n};\n\nexport type UnwrapEncryptedTokensCallbackInstructionDataArgs = {\n output:\n | {\n __kind: 'Success';\n fields: readonly [UnwrapEncryptedTokensOutputArgs, Array<number>];\n }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [UnwrapEncryptedTokensOutputArgs];\n };\n};\n\nexport function getUnwrapEncryptedTokensCallbackInstructionDataEncoder(): Encoder<UnwrapEncryptedTokensCallbackInstructionDataArgs> {\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 getUnwrapEncryptedTokensOutputEncoder(),\n getArrayEncoder(getU8Encoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitEncoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructEncoder([\n [\n 'fields',\n getTupleEncoder([getUnwrapEncryptedTokensOutputEncoder()]),\n ],\n ]),\n ],\n ]),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: UNWRAP_ENCRYPTED_TOKENS_CALLBACK_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUnwrapEncryptedTokensCallbackInstructionDataDecoder(): Decoder<UnwrapEncryptedTokensCallbackInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n [\n 'output',\n getDiscriminatedUnionDecoder([\n [\n 'Success',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([\n getUnwrapEncryptedTokensOutputDecoder(),\n getArrayDecoder(getU8Decoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitDecoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([getUnwrapEncryptedTokensOutputDecoder()]),\n ],\n ]),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getUnwrapEncryptedTokensCallbackInstructionDataCodec(): Codec<\n UnwrapEncryptedTokensCallbackInstructionDataArgs,\n UnwrapEncryptedTokensCallbackInstructionData\n> {\n return combineCodec(\n getUnwrapEncryptedTokensCallbackInstructionDataEncoder(),\n getUnwrapEncryptedTokensCallbackInstructionDataDecoder()\n );\n}\n\nexport type UnwrapEncryptedTokensCallbackInput<\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 TAccountEncryptedTokenAccount extends string = string,\n TAccountUserTokenAccount extends string = string,\n TAccountTokenVault extends string = string,\n TAccountTokenVaultAta extends string = string,\n TAccountTokenMint extends string = string,\n TAccountTokenProgram 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 encryptedTokenAccount: Address<TAccountEncryptedTokenAccount>;\n /** User's token account to receive claimed SPL tokens */\n userTokenAccount: Address<TAccountUserTokenAccount>;\n /** Token vault holding all wrapped tokens */\n tokenVault: Address<TAccountTokenVault>;\n /** TokenVault's ATA holding SPL tokens (source for withdrawal) */\n tokenVaultAta: Address<TAccountTokenVaultAta>;\n /** Token mint for transfer_checked */\n tokenMint: Address<TAccountTokenMint>;\n /** Token program for CPI */\n tokenProgram: Address<TAccountTokenProgram>;\n output: UnwrapEncryptedTokensCallbackInstructionDataArgs['output'];\n};\n\nexport function getUnwrapEncryptedTokensCallbackInstruction<\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 TAccountEncryptedTokenAccount extends string,\n TAccountUserTokenAccount extends string,\n TAccountTokenVault extends string,\n TAccountTokenVaultAta extends string,\n TAccountTokenMint extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: UnwrapEncryptedTokensCallbackInput<\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountEncryptedTokenAccount,\n TAccountUserTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountTokenMint,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): UnwrapEncryptedTokensCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountEncryptedTokenAccount,\n TAccountUserTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountTokenMint,\n TAccountTokenProgram\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 encryptedTokenAccount: {\n value: input.encryptedTokenAccount ?? null,\n isWritable: true,\n },\n userTokenAccount: {\n value: input.userTokenAccount ?? null,\n isWritable: true,\n },\n tokenVault: { value: input.tokenVault ?? null, isWritable: false },\n tokenVaultAta: { value: input.tokenVaultAta ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? 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.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.encryptedTokenAccount),\n getAccountMeta(accounts.userTokenAccount),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.tokenVaultAta),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getUnwrapEncryptedTokensCallbackInstructionDataEncoder().encode(\n args as UnwrapEncryptedTokensCallbackInstructionDataArgs\n ),\n programAddress,\n } as UnwrapEncryptedTokensCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountEncryptedTokenAccount,\n TAccountUserTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountTokenMint,\n TAccountTokenProgram\n >);\n}\n\nexport type ParsedUnwrapEncryptedTokensCallbackInstruction<\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 encryptedTokenAccount: TAccountMetas[6];\n /** User's token account to receive claimed SPL tokens */\n userTokenAccount: TAccountMetas[7];\n /** Token vault holding all wrapped tokens */\n tokenVault: TAccountMetas[8];\n /** TokenVault's ATA holding SPL tokens (source for withdrawal) */\n tokenVaultAta: TAccountMetas[9];\n /** Token mint for transfer_checked */\n tokenMint: TAccountMetas[10];\n /** Token program for CPI */\n tokenProgram: TAccountMetas[11];\n };\n data: UnwrapEncryptedTokensCallbackInstructionData;\n};\n\nexport function parseUnwrapEncryptedTokensCallbackInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedUnwrapEncryptedTokensCallbackInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 12) {\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 encryptedTokenAccount: getNextAccount(),\n userTokenAccount: getNextAccount(),\n tokenVault: getNextAccount(),\n tokenVaultAta: getNextAccount(),\n tokenMint: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getUnwrapEncryptedTokensCallbackInstructionDataDecoder().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 UNWRAP_ENCRYPTED_TOKENS_COMP_DEF_DISCRIMINATOR = new Uint8Array([\n 130, 70, 53, 253, 16, 169, 50, 36,\n]);\n\nexport function getUnwrapEncryptedTokensCompDefDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n UNWRAP_ENCRYPTED_TOKENS_COMP_DEF_DISCRIMINATOR\n );\n}\n\nexport type UnwrapEncryptedTokensCompDefInstruction<\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 UnwrapEncryptedTokensCompDefInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type UnwrapEncryptedTokensCompDefInstructionDataArgs = {};\n\nexport function getUnwrapEncryptedTokensCompDefInstructionDataEncoder(): FixedSizeEncoder<UnwrapEncryptedTokensCompDefInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({\n ...value,\n discriminator: UNWRAP_ENCRYPTED_TOKENS_COMP_DEF_DISCRIMINATOR,\n })\n );\n}\n\nexport function getUnwrapEncryptedTokensCompDefInstructionDataDecoder(): FixedSizeDecoder<UnwrapEncryptedTokensCompDefInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getUnwrapEncryptedTokensCompDefInstructionDataCodec(): FixedSizeCodec<\n UnwrapEncryptedTokensCompDefInstructionDataArgs,\n UnwrapEncryptedTokensCompDefInstructionData\n> {\n return combineCodec(\n getUnwrapEncryptedTokensCompDefInstructionDataEncoder(),\n getUnwrapEncryptedTokensCompDefInstructionDataDecoder()\n );\n}\n\nexport type UnwrapEncryptedTokensCompDefInput<\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 getUnwrapEncryptedTokensCompDefInstruction<\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: UnwrapEncryptedTokensCompDefInput<\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): UnwrapEncryptedTokensCompDefInstruction<\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: getUnwrapEncryptedTokensCompDefInstructionDataEncoder().encode({}),\n programAddress,\n } as UnwrapEncryptedTokensCompDefInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedUnwrapEncryptedTokensCompDefInstruction<\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: UnwrapEncryptedTokensCompDefInstructionData;\n};\n\nexport function parseUnwrapEncryptedTokensCompDefInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedUnwrapEncryptedTokensCompDefInstruction<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: getUnwrapEncryptedTokensCompDefInstructionDataDecoder().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 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 { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_CENTRAL_STATE_DISCRIMINATOR = new Uint8Array([\n 228, 211, 60, 53, 115, 153, 149, 194,\n]);\n\nexport function getUpdateCentralStateDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n UPDATE_CENTRAL_STATE_DISCRIMINATOR\n );\n}\n\nexport type UpdateCentralStateInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountAuthority extends string | AccountMeta<string> = string,\n TAccountCentralState extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountAuthority extends string\n ? ReadonlySignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountCentralState extends string\n ? WritableAccount<TAccountCentralState>\n : TAccountCentralState,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UpdateCentralStateInstructionData = {\n discriminator: ReadonlyUint8Array;\n earlinessCutoffSeconds: bigint;\n minOptionDeposit: bigint;\n protocolFeeBp: number;\n feeRecipient: Address;\n};\n\nexport type UpdateCentralStateInstructionDataArgs = {\n earlinessCutoffSeconds: number | bigint;\n minOptionDeposit: number | bigint;\n protocolFeeBp: number;\n feeRecipient: Address;\n};\n\nexport function getUpdateCentralStateInstructionDataEncoder(): FixedSizeEncoder<UpdateCentralStateInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['earlinessCutoffSeconds', getU64Encoder()],\n ['minOptionDeposit', getU64Encoder()],\n ['protocolFeeBp', getU16Encoder()],\n ['feeRecipient', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: UPDATE_CENTRAL_STATE_DISCRIMINATOR })\n );\n}\n\nexport function getUpdateCentralStateInstructionDataDecoder(): FixedSizeDecoder<UpdateCentralStateInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['earlinessCutoffSeconds', getU64Decoder()],\n ['minOptionDeposit', getU64Decoder()],\n ['protocolFeeBp', getU16Decoder()],\n ['feeRecipient', getAddressDecoder()],\n ]);\n}\n\nexport function getUpdateCentralStateInstructionDataCodec(): FixedSizeCodec<\n UpdateCentralStateInstructionDataArgs,\n UpdateCentralStateInstructionData\n> {\n return combineCodec(\n getUpdateCentralStateInstructionDataEncoder(),\n getUpdateCentralStateInstructionDataDecoder()\n );\n}\n\nexport type UpdateCentralStateAsyncInput<\n TAccountAuthority extends string = string,\n TAccountCentralState extends string = string,\n> = {\n authority: TransactionSigner<TAccountAuthority>;\n centralState?: Address<TAccountCentralState>;\n earlinessCutoffSeconds: UpdateCentralStateInstructionDataArgs['earlinessCutoffSeconds'];\n minOptionDeposit: UpdateCentralStateInstructionDataArgs['minOptionDeposit'];\n protocolFeeBp: UpdateCentralStateInstructionDataArgs['protocolFeeBp'];\n feeRecipient: UpdateCentralStateInstructionDataArgs['feeRecipient'];\n};\n\nexport async function getUpdateCentralStateInstructionAsync<\n TAccountAuthority extends string,\n TAccountCentralState extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: UpdateCentralStateAsyncInput<TAccountAuthority, TAccountCentralState>,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n UpdateCentralStateInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountCentralState\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n authority: { value: input.authority ?? null, isWritable: false },\n centralState: { value: input.centralState ?? 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.centralState.value) {\n accounts.centralState.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 99, 101, 110, 116, 114, 97, 108, 95, 115, 116, 97, 116, 101,\n ])\n ),\n ],\n });\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.centralState),\n ],\n data: getUpdateCentralStateInstructionDataEncoder().encode(\n args as UpdateCentralStateInstructionDataArgs\n ),\n programAddress,\n } as UpdateCentralStateInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountCentralState\n >);\n}\n\nexport type UpdateCentralStateInput<\n TAccountAuthority extends string = string,\n TAccountCentralState extends string = string,\n> = {\n authority: TransactionSigner<TAccountAuthority>;\n centralState: Address<TAccountCentralState>;\n earlinessCutoffSeconds: UpdateCentralStateInstructionDataArgs['earlinessCutoffSeconds'];\n minOptionDeposit: UpdateCentralStateInstructionDataArgs['minOptionDeposit'];\n protocolFeeBp: UpdateCentralStateInstructionDataArgs['protocolFeeBp'];\n feeRecipient: UpdateCentralStateInstructionDataArgs['feeRecipient'];\n};\n\nexport function getUpdateCentralStateInstruction<\n TAccountAuthority extends string,\n TAccountCentralState extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: UpdateCentralStateInput<TAccountAuthority, TAccountCentralState>,\n config?: { programAddress?: TProgramAddress }\n): UpdateCentralStateInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountCentralState\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n authority: { value: input.authority ?? null, isWritable: false },\n centralState: { value: input.centralState ?? 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.authority),\n getAccountMeta(accounts.centralState),\n ],\n data: getUpdateCentralStateInstructionDataEncoder().encode(\n args as UpdateCentralStateInstructionDataArgs\n ),\n programAddress,\n } as UpdateCentralStateInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountCentralState\n >);\n}\n\nexport type ParsedUpdateCentralStateInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n authority: TAccountMetas[0];\n centralState: TAccountMetas[1];\n };\n data: UpdateCentralStateInstructionData;\n};\n\nexport function parseUpdateCentralStateInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedUpdateCentralStateInstruction<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: { authority: getNextAccount(), centralState: getNextAccount() },\n data: getUpdateCentralStateInstructionDataDecoder().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 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 WRAP_ENCRYPTED_TOKENS_DISCRIMINATOR = new Uint8Array([\n 249, 160, 73, 35, 110, 134, 22, 106,\n]);\n\nexport function getWrapEncryptedTokensDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n WRAP_ENCRYPTED_TOKENS_DISCRIMINATOR\n );\n}\n\nexport type WrapEncryptedTokensInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountEncryptedTokenAccount extends string | AccountMeta<string> = string,\n TAccountSignerTokenAccount extends string | AccountMeta<string> = string,\n TAccountTokenVault extends string | AccountMeta<string> = string,\n TAccountTokenVaultAta 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 TAccountTokenProgram extends string | AccountMeta<string> = string,\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 TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountEncryptedTokenAccount extends string\n ? WritableAccount<TAccountEncryptedTokenAccount>\n : TAccountEncryptedTokenAccount,\n TAccountSignerTokenAccount extends string\n ? WritableAccount<TAccountSignerTokenAccount>\n : TAccountSignerTokenAccount,\n TAccountTokenVault extends string\n ? WritableAccount<TAccountTokenVault>\n : TAccountTokenVault,\n TAccountTokenVaultAta extends string\n ? WritableAccount<TAccountTokenVaultAta>\n : TAccountTokenVaultAta,\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 TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountArciumProgram extends string\n ? ReadonlyAccount<TAccountArciumProgram>\n : TAccountArciumProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type WrapEncryptedTokensInstructionData = {\n discriminator: ReadonlyUint8Array;\n computationOffset: bigint;\n amount: bigint;\n};\n\nexport type WrapEncryptedTokensInstructionDataArgs = {\n computationOffset: number | bigint;\n amount: number | bigint;\n};\n\nexport function getWrapEncryptedTokensInstructionDataEncoder(): FixedSizeEncoder<WrapEncryptedTokensInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['computationOffset', getU64Encoder()],\n ['amount', getU64Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: WRAP_ENCRYPTED_TOKENS_DISCRIMINATOR,\n })\n );\n}\n\nexport function getWrapEncryptedTokensInstructionDataDecoder(): FixedSizeDecoder<WrapEncryptedTokensInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['computationOffset', getU64Decoder()],\n ['amount', getU64Decoder()],\n ]);\n}\n\nexport function getWrapEncryptedTokensInstructionDataCodec(): FixedSizeCodec<\n WrapEncryptedTokensInstructionDataArgs,\n WrapEncryptedTokensInstructionData\n> {\n return combineCodec(\n getWrapEncryptedTokensInstructionDataEncoder(),\n getWrapEncryptedTokensInstructionDataDecoder()\n );\n}\n\nexport type WrapEncryptedTokensAsyncInput<\n TAccountSigner extends string = string,\n TAccountTokenMint extends string = string,\n TAccountEncryptedTokenAccount extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountTokenVault extends string = string,\n TAccountTokenVaultAta 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 TAccountTokenProgram extends string = string,\n TAccountArciumProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n tokenMint: Address<TAccountTokenMint>;\n encryptedTokenAccount: Address<TAccountEncryptedTokenAccount>;\n /** The signer's token account (source of SPL tokens) */\n signerTokenAccount: Address<TAccountSignerTokenAccount>;\n /** Token vault holding all wrapped tokens */\n tokenVault?: Address<TAccountTokenVault>;\n /** ATA owned by the TokenVault PDA (destination of SPL tokens) */\n tokenVaultAta?: Address<TAccountTokenVaultAta>;\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 tokenProgram: Address<TAccountTokenProgram>;\n arciumProgram?: Address<TAccountArciumProgram>;\n computationOffset: WrapEncryptedTokensInstructionDataArgs['computationOffset'];\n amount: WrapEncryptedTokensInstructionDataArgs['amount'];\n};\n\nexport async function getWrapEncryptedTokensInstructionAsync<\n TAccountSigner extends string,\n TAccountTokenMint extends string,\n TAccountEncryptedTokenAccount extends string,\n TAccountSignerTokenAccount extends string,\n TAccountTokenVault extends string,\n TAccountTokenVaultAta 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 TAccountTokenProgram extends string,\n TAccountArciumProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: WrapEncryptedTokensAsyncInput<\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountSignerTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountArciumProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n WrapEncryptedTokensInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountSignerTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountTokenProgram,\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 tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n encryptedTokenAccount: {\n value: input.encryptedTokenAccount ?? null,\n isWritable: true,\n },\n signerTokenAccount: {\n value: input.signerTokenAccount ?? null,\n isWritable: true,\n },\n tokenVault: { value: input.tokenVault ?? null, isWritable: true },\n tokenVaultAta: { value: input.tokenVaultAta ?? 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 tokenProgram: { value: input.tokenProgram ?? 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.tokenVault.value) {\n accounts.tokenVault.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116])\n ),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.tokenVaultAta.value) {\n accounts.tokenVaultAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.tokenVault.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.tokenMint),\n getAccountMeta(accounts.encryptedTokenAccount),\n getAccountMeta(accounts.signerTokenAccount),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.tokenVaultAta),\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.tokenProgram),\n getAccountMeta(accounts.arciumProgram),\n ],\n data: getWrapEncryptedTokensInstructionDataEncoder().encode(\n args as WrapEncryptedTokensInstructionDataArgs\n ),\n programAddress,\n } as WrapEncryptedTokensInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountSignerTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountArciumProgram\n >);\n}\n\nexport type WrapEncryptedTokensInput<\n TAccountSigner extends string = string,\n TAccountTokenMint extends string = string,\n TAccountEncryptedTokenAccount extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountTokenVault extends string = string,\n TAccountTokenVaultAta 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 TAccountTokenProgram extends string = string,\n TAccountArciumProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n tokenMint: Address<TAccountTokenMint>;\n encryptedTokenAccount: Address<TAccountEncryptedTokenAccount>;\n /** The signer's token account (source of SPL tokens) */\n signerTokenAccount: Address<TAccountSignerTokenAccount>;\n /** Token vault holding all wrapped tokens */\n tokenVault: Address<TAccountTokenVault>;\n /** ATA owned by the TokenVault PDA (destination of SPL tokens) */\n tokenVaultAta: Address<TAccountTokenVaultAta>;\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 tokenProgram: Address<TAccountTokenProgram>;\n arciumProgram?: Address<TAccountArciumProgram>;\n computationOffset: WrapEncryptedTokensInstructionDataArgs['computationOffset'];\n amount: WrapEncryptedTokensInstructionDataArgs['amount'];\n};\n\nexport function getWrapEncryptedTokensInstruction<\n TAccountSigner extends string,\n TAccountTokenMint extends string,\n TAccountEncryptedTokenAccount extends string,\n TAccountSignerTokenAccount extends string,\n TAccountTokenVault extends string,\n TAccountTokenVaultAta 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 TAccountTokenProgram extends string,\n TAccountArciumProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: WrapEncryptedTokensInput<\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountSignerTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountArciumProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): WrapEncryptedTokensInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountSignerTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountTokenProgram,\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 tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n encryptedTokenAccount: {\n value: input.encryptedTokenAccount ?? null,\n isWritable: true,\n },\n signerTokenAccount: {\n value: input.signerTokenAccount ?? null,\n isWritable: true,\n },\n tokenVault: { value: input.tokenVault ?? null, isWritable: true },\n tokenVaultAta: { value: input.tokenVaultAta ?? 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 tokenProgram: { value: input.tokenProgram ?? 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.tokenMint),\n getAccountMeta(accounts.encryptedTokenAccount),\n getAccountMeta(accounts.signerTokenAccount),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.tokenVaultAta),\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.tokenProgram),\n getAccountMeta(accounts.arciumProgram),\n ],\n data: getWrapEncryptedTokensInstructionDataEncoder().encode(\n args as WrapEncryptedTokensInstructionDataArgs\n ),\n programAddress,\n } as WrapEncryptedTokensInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountTokenMint,\n TAccountEncryptedTokenAccount,\n TAccountSignerTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountSignPdaAccount,\n TAccountMxeAccount,\n TAccountMempoolAccount,\n TAccountExecutingPool,\n TAccountComputationAccount,\n TAccountCompDefAccount,\n TAccountClusterAccount,\n TAccountPoolAccount,\n TAccountClockAccount,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountArciumProgram\n >);\n}\n\nexport type ParsedWrapEncryptedTokensInstruction<\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 tokenMint: TAccountMetas[1];\n encryptedTokenAccount: TAccountMetas[2];\n /** The signer's token account (source of SPL tokens) */\n signerTokenAccount: TAccountMetas[3];\n /** Token vault holding all wrapped tokens */\n tokenVault: TAccountMetas[4];\n /** ATA owned by the TokenVault PDA (destination of SPL tokens) */\n tokenVaultAta: TAccountMetas[5];\n signPdaAccount: TAccountMetas[6];\n mxeAccount: TAccountMetas[7];\n mempoolAccount: TAccountMetas[8];\n executingPool: TAccountMetas[9];\n computationAccount: TAccountMetas[10];\n compDefAccount: TAccountMetas[11];\n clusterAccount: TAccountMetas[12];\n poolAccount: TAccountMetas[13];\n clockAccount: TAccountMetas[14];\n systemProgram: TAccountMetas[15];\n tokenProgram: TAccountMetas[16];\n arciumProgram: TAccountMetas[17];\n };\n data: WrapEncryptedTokensInstructionData;\n};\n\nexport function parseWrapEncryptedTokensInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedWrapEncryptedTokensInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 18) {\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 tokenMint: getNextAccount(),\n encryptedTokenAccount: getNextAccount(),\n signerTokenAccount: getNextAccount(),\n tokenVault: getNextAccount(),\n tokenVaultAta: 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 tokenProgram: getNextAccount(),\n arciumProgram: getNextAccount(),\n },\n data: getWrapEncryptedTokensInstructionDataDecoder().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 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 getWrapEncryptedTokensOutputDecoder,\n getWrapEncryptedTokensOutputEncoder,\n type WrapEncryptedTokensOutput,\n type WrapEncryptedTokensOutputArgs,\n} from '../types';\n\nexport const WRAP_ENCRYPTED_TOKENS_CALLBACK_DISCRIMINATOR = new Uint8Array([\n 27, 163, 220, 185, 248, 98, 6, 225,\n]);\n\nexport function getWrapEncryptedTokensCallbackDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n WRAP_ENCRYPTED_TOKENS_CALLBACK_DISCRIMINATOR\n );\n}\n\nexport type WrapEncryptedTokensCallbackInstruction<\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 TAccountEncryptedTokenAccount 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 TAccountEncryptedTokenAccount extends string\n ? WritableAccount<TAccountEncryptedTokenAccount>\n : TAccountEncryptedTokenAccount,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type WrapEncryptedTokensCallbackInstructionData = {\n discriminator: ReadonlyUint8Array;\n output:\n | {\n __kind: 'Success';\n fields: readonly [WrapEncryptedTokensOutput, Array<number>];\n }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [WrapEncryptedTokensOutput];\n };\n};\n\nexport type WrapEncryptedTokensCallbackInstructionDataArgs = {\n output:\n | {\n __kind: 'Success';\n fields: readonly [WrapEncryptedTokensOutputArgs, Array<number>];\n }\n | { __kind: 'Failure' }\n | {\n __kind: 'MarkerForIdlBuildDoNotUseThis';\n fields: readonly [WrapEncryptedTokensOutputArgs];\n };\n};\n\nexport function getWrapEncryptedTokensCallbackInstructionDataEncoder(): Encoder<WrapEncryptedTokensCallbackInstructionDataArgs> {\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 getWrapEncryptedTokensOutputEncoder(),\n getArrayEncoder(getU8Encoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitEncoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructEncoder([\n [\n 'fields',\n getTupleEncoder([getWrapEncryptedTokensOutputEncoder()]),\n ],\n ]),\n ],\n ]),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: WRAP_ENCRYPTED_TOKENS_CALLBACK_DISCRIMINATOR,\n })\n );\n}\n\nexport function getWrapEncryptedTokensCallbackInstructionDataDecoder(): Decoder<WrapEncryptedTokensCallbackInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n [\n 'output',\n getDiscriminatedUnionDecoder([\n [\n 'Success',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([\n getWrapEncryptedTokensOutputDecoder(),\n getArrayDecoder(getU8Decoder(), { size: 64 }),\n ]),\n ],\n ]),\n ],\n ['Failure', getUnitDecoder()],\n [\n 'MarkerForIdlBuildDoNotUseThis',\n getStructDecoder([\n [\n 'fields',\n getTupleDecoder([getWrapEncryptedTokensOutputDecoder()]),\n ],\n ]),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getWrapEncryptedTokensCallbackInstructionDataCodec(): Codec<\n WrapEncryptedTokensCallbackInstructionDataArgs,\n WrapEncryptedTokensCallbackInstructionData\n> {\n return combineCodec(\n getWrapEncryptedTokensCallbackInstructionDataEncoder(),\n getWrapEncryptedTokensCallbackInstructionDataDecoder()\n );\n}\n\nexport type WrapEncryptedTokensCallbackInput<\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 TAccountEncryptedTokenAccount 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 encryptedTokenAccount: Address<TAccountEncryptedTokenAccount>;\n output: WrapEncryptedTokensCallbackInstructionDataArgs['output'];\n};\n\nexport function getWrapEncryptedTokensCallbackInstruction<\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 TAccountEncryptedTokenAccount extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: WrapEncryptedTokensCallbackInput<\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountEncryptedTokenAccount\n >,\n config?: { programAddress?: TProgramAddress }\n): WrapEncryptedTokensCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountEncryptedTokenAccount\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 encryptedTokenAccount: {\n value: input.encryptedTokenAccount ?? null,\n isWritable: true,\n },\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.encryptedTokenAccount),\n ],\n data: getWrapEncryptedTokensCallbackInstructionDataEncoder().encode(\n args as WrapEncryptedTokensCallbackInstructionDataArgs\n ),\n programAddress,\n } as WrapEncryptedTokensCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountEncryptedTokenAccount\n >);\n}\n\nexport type ParsedWrapEncryptedTokensCallbackInstruction<\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 encryptedTokenAccount: TAccountMetas[6];\n };\n data: WrapEncryptedTokensCallbackInstructionData;\n};\n\nexport function parseWrapEncryptedTokensCallbackInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedWrapEncryptedTokensCallbackInstruction<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 encryptedTokenAccount: getNextAccount(),\n },\n data: getWrapEncryptedTokensCallbackInstructionDataDecoder().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 WRAP_ENCRYPTED_TOKENS_COMP_DEF_DISCRIMINATOR = new Uint8Array([\n 197, 168, 125, 251, 47, 209, 49, 126,\n]);\n\nexport function getWrapEncryptedTokensCompDefDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n WRAP_ENCRYPTED_TOKENS_COMP_DEF_DISCRIMINATOR\n );\n}\n\nexport type WrapEncryptedTokensCompDefInstruction<\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 WrapEncryptedTokensCompDefInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type WrapEncryptedTokensCompDefInstructionDataArgs = {};\n\nexport function getWrapEncryptedTokensCompDefInstructionDataEncoder(): FixedSizeEncoder<WrapEncryptedTokensCompDefInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({\n ...value,\n discriminator: WRAP_ENCRYPTED_TOKENS_COMP_DEF_DISCRIMINATOR,\n })\n );\n}\n\nexport function getWrapEncryptedTokensCompDefInstructionDataDecoder(): FixedSizeDecoder<WrapEncryptedTokensCompDefInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getWrapEncryptedTokensCompDefInstructionDataCodec(): FixedSizeCodec<\n WrapEncryptedTokensCompDefInstructionDataArgs,\n WrapEncryptedTokensCompDefInstructionData\n> {\n return combineCodec(\n getWrapEncryptedTokensCompDefInstructionDataEncoder(),\n getWrapEncryptedTokensCompDefInstructionDataDecoder()\n );\n}\n\nexport type WrapEncryptedTokensCompDefInput<\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 getWrapEncryptedTokensCompDefInstruction<\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: WrapEncryptedTokensCompDefInput<\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): WrapEncryptedTokensCompDefInstruction<\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: getWrapEncryptedTokensCompDefInstructionDataEncoder().encode({}),\n programAddress,\n } as WrapEncryptedTokensCompDefInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountMxeAccount,\n TAccountCompDefAccount,\n TAccountAddressLookupTable,\n TAccountLutProgram,\n TAccountArciumProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedWrapEncryptedTokensCompDefInstruction<\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: WrapEncryptedTokensCompDefInstructionData;\n};\n\nexport function parseWrapEncryptedTokensCompDefInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedWrapEncryptedTokensCompDefInstruction<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: getWrapEncryptedTokensCompDefInstructionDataDecoder().decode(\n instruction.data\n ),\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 getInitEncryptedTokenAccountInstructionAsync,\n type InitEncryptedTokenAccountInstruction,\n} from \"../generated\";\nimport { type ByteArray, toNumberArray } from \"../utils\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface InitEncryptedTokenAccountParams extends BaseInstructionParams {\n /** The signer/payer for the transaction */\n signer: TransactionSigner;\n tokenMint: Address;\n /** User's x25519 public key (32 bytes) for encryption */\n userPubkey: ByteArray;\n /** Random u128 nonce for initial encrypted state */\n stateNonce: bigint;\n}\n\nexport async function initEncryptedTokenAccount(\n input: InitEncryptedTokenAccountParams\n): Promise<InitEncryptedTokenAccountInstruction<string>> {\n const { programAddress, signer, tokenMint, userPubkey, stateNonce } = input;\n\n return getInitEncryptedTokenAccountInstructionAsync(\n {\n signer,\n tokenMint,\n userPubkey: toNumberArray(userPubkey),\n stateNonce,\n },\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getInitEphemeralEncryptedTokenAccountInstructionAsync,\n type InitEphemeralEncryptedTokenAccountInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface InitEphemeralEncryptedTokenAccountParams extends BaseInstructionParams {\n /** The signer/payer for the transaction (permissionless - anyone can call) */\n signer: TransactionSigner;\n /** The owner of the ETA (does not need to sign) */\n owner: Address;\n tokenMint: Address;\n /** The index for the ephemeral ETA (must be non-zero) */\n index: bigint;\n /** Random u128 nonce for initial encrypted state */\n stateNonce: bigint;\n}\n\nexport async function initEphemeralEncryptedTokenAccount(\n input: InitEphemeralEncryptedTokenAccountParams\n): Promise<InitEphemeralEncryptedTokenAccountInstruction<string>> {\n const { programAddress, signer, owner, tokenMint, index, stateNonce } = input;\n\n return getInitEphemeralEncryptedTokenAccountInstructionAsync(\n {\n signer,\n owner,\n tokenMint,\n index,\n stateNonce,\n },\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getInitTokenVaultInstructionAsync,\n type InitTokenVaultInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface InitTokenVaultParams extends BaseInstructionParams {\n /** The signer/payer for the transaction */\n payer: TransactionSigner;\n /** The token mint for this vault */\n tokenMint: Address;\n /** Address that can withdraw tokens from the vault */\n fundManager: Address;\n}\n\nexport async function initTokenVault(\n input: InitTokenVaultParams\n): Promise<InitTokenVaultInstruction<string>> {\n const { programAddress, payer, tokenMint, fundManager } = input;\n\n return getInitTokenVaultInstructionAsync(\n {\n payer,\n tokenMint,\n fundManager,\n },\n programAddress ? { programAddress } : undefined\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 getCloseEphemeralEncryptedTokenAccountInstructionAsync,\n type CloseEphemeralEncryptedTokenAccountInstruction,\n} from \"../generated\";\nimport { type ArciumConfig, getComputeAccounts } from \"../arcium/computeAccounts\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface CloseEphemeralEncryptedTokenAccountParams extends BaseInstructionParams {\n /** Signer must be the ETA owner */\n signer: TransactionSigner;\n tokenMint: Address;\n tokenProgram: Address;\n /** Index of the ephemeral ETA to close (must be non-zero) */\n index: bigint;\n /** Address that will receive the rent lamports (must match rent_payer stored in the ephemeral ETA) */\n rentRecipient: Address;\n}\n\nexport async function closeEphemeralEncryptedTokenAccount(\n input: CloseEphemeralEncryptedTokenAccountParams,\n config: ArciumConfig\n): Promise<CloseEphemeralEncryptedTokenAccountInstruction<string>> {\n const { programAddress, signer, tokenMint, tokenProgram, index, rentRecipient } = input;\n\n return getCloseEphemeralEncryptedTokenAccountInstructionAsync(\n {\n ...getComputeAccounts(\"close_ephemeral_encrypted_token_account\", config),\n signer,\n tokenMint,\n tokenProgram,\n index,\n rentRecipient,\n },\n programAddress ? { programAddress } : undefined\n );\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 tokenMint: Address;\n tokenProgram: Address;\n marketIndex: bigint;\n rewardAmount: bigint;\n timeToStake: bigint;\n timeToReveal: bigint;\n marketAuthority: Address | null;\n unstakeDelaySeconds: bigint;\n authorizedReaderPubkey: ByteArray;\n allowClosingEarly: boolean;\n}\n\nexport async function createMarket(\n input: CreateMarketParams\n): Promise<CreateMarketInstruction<string>> {\n const {\n creator,\n tokenMint,\n tokenProgram,\n marketIndex,\n rewardAmount,\n timeToReveal,\n timeToStake,\n marketAuthority,\n unstakeDelaySeconds,\n authorizedReaderPubkey,\n allowClosingEarly,\n programAddress,\n } = input;\n\n return getCreateMarketInstructionAsync(\n {\n creator,\n tokenMint,\n tokenProgram,\n marketIndex,\n rewardAmount,\n timeToStake,\n timeToReveal,\n marketAuthority,\n unstakeDelaySeconds,\n authorizedReaderPubkey: toNumberArray(authorizedReaderPubkey),\n allowClosingEarly,\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} 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 getWrapEncryptedTokensCompDefInstruction,\n getUnwrapEncryptedTokensCompDefInstruction,\n getBuyOpportunityMarketSharesCompDefInstruction,\n getRevealSharesCompDefInstruction,\n getUnstakeEarlyCompDefInstruction,\n getAddOptionStakeCompDefInstruction,\n getCloseEphemeralEncryptedTokenAccountCompDefInstruction,\n OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n fetchMXEAccount,\n} from \"../generated\";\nimport { BN } from \"bn.js\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport type CompDefCircuitName =\n | \"wrap_encrypted_tokens\"\n | \"unwrap_encrypted_tokens\"\n | \"buy_opportunity_market_shares\"\n | \"reveal_shares\"\n | \"unstake_early\"\n | \"add_option_stake\"\n | \"close_ephemeral_encrypted_token_account\";\n\nexport const ALL_COMP_DEF_CIRCUITS: CompDefCircuitName[] = [\n \"wrap_encrypted_tokens\",\n \"unwrap_encrypted_tokens\",\n \"buy_opportunity_market_shares\",\n \"reveal_shares\",\n \"unstake_early\",\n \"add_option_stake\",\n \"close_ephemeral_encrypted_token_account\",\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 return fetchMXEAccount(rpc, mxeAddress)\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 \"wrap_encrypted_tokens\":\n return getWrapEncryptedTokensCompDefInstruction(baseInput, { programAddress: programId });\n\n case \"unwrap_encrypted_tokens\":\n return getUnwrapEncryptedTokensCompDefInstruction(baseInput, { programAddress: programId });\n\n case \"buy_opportunity_market_shares\":\n return getBuyOpportunityMarketSharesCompDefInstruction(baseInput, { programAddress: programId });\n\n case \"reveal_shares\":\n return getRevealSharesCompDefInstruction(baseInput, { programAddress: programId });\n\n case \"unstake_early\":\n return getUnstakeEarlyCompDefInstruction(baseInput, { programAddress: programId });\n\n case \"add_option_stake\":\n return getAddOptionStakeCompDefInstruction(baseInput, { programAddress: programId });\n\n case \"close_ephemeral_encrypted_token_account\":\n return getCloseEphemeralEncryptedTokenAccountCompDefInstruction(baseInput, { programAddress: programId });\n\n default:\n throw new Error(`Unknown circuit: ${circuitName}`);\n }\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 market: Address;\n userEta: Address;\n shareAccountId: number;\n amountCiphertext: ByteArray;\n selectedOptionCiphertext: ByteArray;\n inputNonce: bigint;\n authorizedReaderNonce: bigint;\n}\n\nexport async function stake(\n input: StakeParams,\n config: ArciumConfig\n): Promise<StakeInstruction<string>> {\n const {\n programAddress,\n signer,\n market,\n userEta,\n shareAccountId,\n amountCiphertext,\n selectedOptionCiphertext,\n inputNonce,\n authorizedReaderNonce,\n } = input;\n\n return getStakeInstructionAsync(\n {\n ...getComputeAccounts(\"buy_opportunity_market_shares\", config),\n signer,\n market,\n userEta,\n shareAccountId,\n amountCiphertext: toNumberArray(amountCiphertext),\n selectedOptionCiphertext: toNumberArray(selectedOptionCiphertext),\n inputNonce,\n authorizedReaderNonce,\n },\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getWrapEncryptedTokensInstructionAsync,\n type WrapEncryptedTokensInstruction,\n} from \"../generated\";\nimport { type ArciumConfig, getComputeAccounts } from \"../arcium/computeAccounts\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface WrapEncryptedTokensParams extends BaseInstructionParams {\n signer: TransactionSigner;\n tokenMint: Address;\n /** The EncryptedTokenAccount to wrap tokens into */\n encryptedTokenAccount: Address;\n signerTokenAccount: Address;\n tokenProgram: Address;\n amount: bigint;\n}\n\nexport async function wrapEncryptedTokens(\n input: WrapEncryptedTokensParams,\n config: ArciumConfig\n): Promise<WrapEncryptedTokensInstruction<string>> {\n const { programAddress, signer, tokenMint, encryptedTokenAccount, signerTokenAccount, tokenProgram, amount } = input;\n\n return getWrapEncryptedTokensInstructionAsync(\n {\n ...getComputeAccounts(\"wrap_encrypted_tokens\", config),\n signer,\n tokenMint,\n encryptedTokenAccount,\n signerTokenAccount,\n tokenProgram,\n amount,\n },\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getUnwrapEncryptedTokensInstructionAsync,\n type UnwrapEncryptedTokensInstruction,\n} from \"../generated\";\nimport { type ArciumConfig, getComputeAccounts } from \"../arcium/computeAccounts\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface UnwrapEncryptedTokensParams extends BaseInstructionParams {\n signer: TransactionSigner;\n tokenMint: Address;\n /** The EncryptedTokenAccount to unwrap tokens from */\n encryptedTokenAccount: Address;\n userTokenAccount: Address;\n tokenProgram: Address;\n amount: bigint;\n}\n\nexport async function unwrapEncryptedTokens(\n input: UnwrapEncryptedTokensParams,\n config: ArciumConfig\n): Promise<UnwrapEncryptedTokensInstruction<string>> {\n const { programAddress, signer, tokenMint, encryptedTokenAccount, userTokenAccount, tokenProgram, amount } = input;\n\n return getUnwrapEncryptedTokensInstructionAsync(\n {\n ...getComputeAccounts(\"unwrap_encrypted_tokens\", config),\n signer,\n tokenMint,\n encryptedTokenAccount,\n userTokenAccount,\n tokenProgram,\n amount,\n },\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getRevealSharesInstructionAsync,\n type RevealSharesInstruction,\n} from \"../generated\";\nimport { type ArciumConfig, getComputeAccounts } from \"../arcium/computeAccounts\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface RevealSharesParams extends BaseInstructionParams {\n signer: TransactionSigner;\n owner: Address;\n market: Address;\n userEta: Address;\n shareAccountId: number;\n}\n\nexport async function revealShares(\n input: RevealSharesParams,\n config: ArciumConfig\n): Promise<RevealSharesInstruction<string>> {\n const { programAddress, signer, owner, market, userEta, shareAccountId } = input;\n\n return getRevealSharesInstructionAsync(\n {\n ...getComputeAccounts(\"reveal_shares\", config),\n signer,\n owner,\n market,\n userEta,\n shareAccountId,\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 ArciumConfig, getComputeAccounts } from \"../arcium/computeAccounts\";\nimport { type ByteArray, toNumberArray } from \"../utils\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface AddMarketOptionParams extends BaseInstructionParams {\n creator: TransactionSigner;\n market: Address;\n sourceEta: Address;\n shareAccount: Address;\n optionIndex: number;\n shareAccountId: number;\n name: string;\n amountCiphertext: ByteArray;\n inputNonce: bigint;\n authorizedReaderNonce: bigint;\n}\n\nexport async function addMarketOption(\n input: AddMarketOptionParams,\n config: ArciumConfig,\n): Promise<AddMarketOptionInstruction<string>> {\n const {\n programAddress,\n creator,\n market,\n sourceEta,\n shareAccount,\n optionIndex,\n shareAccountId,\n name,\n amountCiphertext,\n inputNonce,\n authorizedReaderNonce,\n } = input;\n\n return getAddMarketOptionInstructionAsync(\n {\n ...getComputeAccounts(\"add_option_stake\", config),\n creator,\n market,\n sourceEta,\n shareAccount,\n optionIndex,\n shareAccountId,\n name,\n amountCiphertext: toNumberArray(amountCiphertext),\n inputNonce,\n authorizedReaderNonce,\n },\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getAddMarketOptionAsCreatorInstructionAsync,\n type AddMarketOptionAsCreatorInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface AddMarketOptionAsCreatorParams extends BaseInstructionParams {\n creator: TransactionSigner;\n market: Address;\n optionIndex: number;\n name: string;\n}\n\nexport async function addMarketOptionAsCreator(\n input: AddMarketOptionAsCreatorParams\n): Promise<AddMarketOptionAsCreatorInstruction<string>> {\n const { programAddress, ...params } = input;\n return getAddMarketOptionAsCreatorInstructionAsync(\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 creator: TransactionSigner;\n market: Address;\n tokenMint: Address;\n marketTokenAta: Address;\n tokenProgram: Address;\n openTimestamp: 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 getSelectWinningOptionsInstruction,\n type SelectWinningOptionsInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\nimport { type WinningOption } from \"../generated/types\";\n\nexport interface SelectWinningOptionsParams extends BaseInstructionParams {\n authority: TransactionSigner;\n market: Address;\n selections: Array<WinningOption>;\n}\n\nexport function selectWinningOptions(\n input: SelectWinningOptionsParams\n): SelectWinningOptionsInstruction<string> {\n const { programAddress, ...params } = input;\n return getSelectWinningOptionsInstruction(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getExtendRevealPeriodInstruction,\n type ExtendRevealPeriodInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface ExtendRevealPeriodParams extends BaseInstructionParams {\n authority: TransactionSigner;\n market: Address;\n newTimeToReveal: bigint;\n}\n\nexport function extendRevealPeriod(\n input: ExtendRevealPeriodParams\n): ExtendRevealPeriodInstruction<string> {\n const { programAddress, ...params } = input;\n return getExtendRevealPeriodInstruction(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getIncreaseRewardPoolInstruction,\n type IncreaseRewardPoolInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface IncreaseRewardPoolParams extends BaseInstructionParams {\n authority: TransactionSigner;\n market: Address;\n tokenMint: Address;\n marketTokenAta: Address;\n tokenProgram: Address;\n newRewardAmount: bigint;\n}\n\nexport function increaseRewardPool(\n input: IncreaseRewardPoolParams\n): IncreaseRewardPoolInstruction<string> {\n const { programAddress, ...params } = input;\n return getIncreaseRewardPoolInstruction(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getInitShareAccountInstructionAsync,\n type InitShareAccountInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface InitShareAccountParams extends BaseInstructionParams {\n signer: TransactionSigner;\n market: Address;\n stateNonce: bigint;\n shareAccountId: number;\n}\n\nexport async function initShareAccount(\n input: InitShareAccountParams\n): Promise<InitShareAccountInstruction<string>> {\n const { programAddress, ...params } = input;\n return getInitShareAccountInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getCloseShareAccountInstructionAsync,\n type CloseShareAccountInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface CloseShareAccountParams extends BaseInstructionParams {\n owner: TransactionSigner;\n market: Address;\n tokenMint: Address;\n ownerTokenAccount: Address;\n tokenProgram: Address;\n optionIndex: number;\n shareAccountId: number;\n}\n\nexport async function closeShareAccount(\n input: CloseShareAccountParams\n): Promise<CloseShareAccountInstruction<string>> {\n const { programAddress, ...params } = input;\n return getCloseShareAccountInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getIncrementOptionTallyInstructionAsync,\n type IncrementOptionTallyInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface IncrementOptionTallyParams extends BaseInstructionParams {\n signer: TransactionSigner;\n owner: Address;\n market: Address;\n optionIndex: number;\n shareAccountId: number;\n}\n\nexport async function incrementOptionTally(\n input: IncrementOptionTallyParams\n): Promise<IncrementOptionTallyInstruction<string>> {\n const { programAddress, ...params } = input;\n return getIncrementOptionTallyInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getUnstakeEarlyInstructionAsync,\n type UnstakeEarlyInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface UnstakeEarlyParams extends BaseInstructionParams {\n signer: TransactionSigner;\n market: Address;\n shareAccountId: number;\n}\n\nexport async function unstakeEarly(\n input: UnstakeEarlyParams\n): Promise<UnstakeEarlyInstruction<string>> {\n const { programAddress, ...params } = input;\n return getUnstakeEarlyInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getDoUnstakeEarlyInstructionAsync,\n type DoUnstakeEarlyInstruction,\n} from \"../generated\";\nimport { type ArciumConfig, getComputeAccounts } from \"../arcium/computeAccounts\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface DoUnstakeEarlyParams extends BaseInstructionParams {\n signer: TransactionSigner;\n market: Address;\n userEta: Address;\n shareAccountId: number;\n shareAccountOwner: Address;\n}\n\nexport async function doUnstakeEarly(\n input: DoUnstakeEarlyParams,\n config: ArciumConfig\n): Promise<DoUnstakeEarlyInstruction<string>> {\n const { programAddress, signer, market, userEta, shareAccountId, shareAccountOwner } = input;\n\n return getDoUnstakeEarlyInstructionAsync(\n {\n ...getComputeAccounts(\"unstake_early\", config),\n signer,\n market,\n userEta,\n shareAccountId,\n shareAccountOwner,\n },\n programAddress ? { programAddress } : undefined\n );\n}\n","import {\n type Address,\n getProgramDerivedAddress,\n type ProgramDerivedAddress,\n} from \"@solana/kit\";\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from \"../generated\";\n\nexport const CENTRAL_STATE_SEED = \"central_state\";\n\nexport async function getCentralStateAddress(\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [CENTRAL_STATE_SEED],\n });\n}\n","import { type TransactionSigner, type Address, type Instruction } from \"@solana/kit\";\nimport {\n fetchMaybeCentralState,\n getInitCentralStateInstructionAsync,\n getUpdateCentralStateInstructionAsync,\n} from \"../generated\";\nimport { getCentralStateAddress } from \"../accounts/centralState\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface EnsureCentralStateParams extends BaseInstructionParams {\n signer: TransactionSigner;\n earlinessCutoffSeconds: bigint | number;\n minOptionDeposit: bigint | number;\n protocolFeeBp: number;\n feeRecipient: Address;\n}\n\nexport async function ensureCentralState(\n rpc: Parameters<typeof fetchMaybeCentralState>[0],\n params: EnsureCentralStateParams,\n): Promise<Instruction | null> {\n const { programAddress, signer, ...args } = params;\n const config = programAddress ? { programAddress } : undefined;\n\n const [centralStateAddress] = await getCentralStateAddress(programAddress);\n const existing = await fetchMaybeCentralState(rpc, centralStateAddress);\n\n if (existing.exists) {\n const s = existing.data;\n if (\n s.earlinessCutoffSeconds === BigInt(args.earlinessCutoffSeconds) &&\n s.minOptionDeposit === BigInt(args.minOptionDeposit) &&\n s.protocolFeeBp === args.protocolFeeBp &&\n s.feeRecipient === args.feeRecipient\n ) {\n return null;\n }\n\n return getUpdateCentralStateInstructionAsync(\n { authority: signer, ...args },\n config,\n ) as Promise<Instruction>;\n }\n\n return getInitCentralStateInstructionAsync(\n { payer: signer, ...args },\n config,\n ) as Promise<Instruction>;\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getClaimPendingDepositInstructionAsync,\n type ClaimPendingDepositInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface ClaimPendingDepositParams extends BaseInstructionParams {\n signer: TransactionSigner;\n tokenMint: Address;\n encryptedTokenAccount: Address;\n /** Signer's token account (destination for claimed tokens) */\n signerTokenAccount: Address;\n tokenProgram: Address;\n}\n\nexport async function claimPendingDeposit(\n input: ClaimPendingDepositParams\n): Promise<ClaimPendingDepositInstruction<string>> {\n const { programAddress, signer, tokenMint, encryptedTokenAccount, signerTokenAccount, tokenProgram } = input;\n\n return getClaimPendingDepositInstructionAsync(\n {\n signer,\n tokenMint,\n encryptedTokenAccount,\n signerTokenAccount,\n tokenProgram,\n },\n programAddress ? { programAddress } : undefined\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 ENCRYPTED_TOKEN_ACCOUNT_SEED = \"encrypted_token_account\";\n\n/**\n * Get the address for a regular EncryptedTokenAccount (index = 0).\n * Regular ETAs are created via init_encrypted_token_account.\n */\nexport async function getEncryptedTokenAccountAddress(\n tokenMint: Address,\n owner: Address,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n return getEncryptedTokenAccountAddressWithIndex(tokenMint, owner, 0n, programId);\n}\n\n/**\n * Get the address for an EncryptedTokenAccount with a specific index.\n * Index 0 is the regular ETA, non-zero indices are ephemeral ETAs.\n */\nexport async function getEncryptedTokenAccountAddressWithIndex(\n tokenMint: Address,\n owner: Address,\n index: bigint,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n ENCRYPTED_TOKEN_ACCOUNT_SEED,\n getAddressEncoder().encode(tokenMint),\n getAddressEncoder().encode(owner),\n getU64Encoder().encode(index),\n ],\n });\n}\n\n/**\n * Get the address for an ephemeral EncryptedTokenAccount.\n * Ephemeral ETAs use a non-zero index and are created via init_ephemeral_encrypted_token_account.\n */\nexport async function getEphemeralEncryptedTokenAccountAddress(\n tokenMint: Address,\n owner: Address,\n index: bigint,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n return getEncryptedTokenAccountAddressWithIndex(tokenMint, owner, index, programId);\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 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(creator),\n getU64Encoder().encode(BigInt(marketIndex)),\n ],\n });\n}\n","import {\n type Address,\n getAddressEncoder,\n getU16Encoder,\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 optionIndex: number,\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 getU16Encoder().encode(optionIndex),\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 SHARE_ACCOUNT_SEED = \"share_account\";\n\nexport async function getShareAccountAddress(\n owner: Address,\n market: Address,\n shareAccountId: 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, shareAccountId, true);\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n SHARE_ACCOUNT_SEED,\n addressEncoder.encode(owner),\n addressEncoder.encode(market),\n idBytes,\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 TOKEN_VAULT_SEED = \"token_vault\";\n\nexport async function getTokenVaultAddress(\n mint: Address,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [TOKEN_VAULT_SEED, getAddressEncoder().encode(mint)],\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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","names":["address","import_kit","address","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","LocalCircuitSource","import_kit","import_kit","import_kit","import_kit","MxeStatus","import_kit","import_kit","import_kit","import_kit","import_kit","Output","import_kit","Parameter","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","import_kit","OpportunityMarketAccount","OpportunityMarketInstruction","import_kit","import_kit","kitIsTransactionSigner","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","BN","import_kit","import_client","import_web3","import_bn","toAddress","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_client","import_bn","import_crypto"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/generated/accounts/arciumSignerAccount.ts","../src/generated/accounts/centralState.ts","../src/generated/accounts/clockAccount.ts","../src/generated/types/activation.ts","../src/generated/types/bN254G2BLSPublicKey.ts","../src/generated/types/circuitSource.ts","../src/generated/types/computationDefinitionMeta.ts","../src/generated/types/computationSignature.ts","../src/generated/types/epoch.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/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/output.ts","../src/generated/types/parameter.ts","../src/generated/types/revealPeriodExtendedEvent.ts","../src/generated/types/revealStakeOutput.ts","../src/generated/types/rewardClaimedEvent.ts","../src/generated/types/rewardPoolIncreasedEvent.ts","../src/generated/types/rewardWithdrawnEvent.ts","../src/generated/types/stakeAccountInitializedEvent.ts","../src/generated/types/stakedError.ts","../src/generated/types/stakedEvent.ts","../src/generated/types/stakeOutput.ts","../src/generated/types/stakeOutputStruct0.ts","../src/generated/types/stakeReclaimedEvent.ts","../src/generated/types/stakeRevealedError.ts","../src/generated/types/stakeRevealedEvent.ts","../src/generated/types/tallyIncrementedEvent.ts","../src/generated/types/timestamp.ts","../src/generated/types/unstakedEvent.ts","../src/generated/types/unstakeInitiatedEvent.ts","../src/generated/types/utilityPubkeys.ts","../src/generated/types/winningOption.ts","../src/generated/types/winningOptionsSelectedEvent.ts","../src/generated/accounts/cluster.ts","../src/generated/accounts/computationDefinitionAccount.ts","../src/generated/accounts/feePool.ts","../src/generated/accounts/mXEAccount.ts","../src/generated/accounts/opportunityMarket.ts","../src/generated/accounts/opportunityMarketOption.ts","../src/generated/accounts/stakeAccount.ts","../src/generated/accounts/tokenVault.ts","../src/generated/errors/opportunityMarket.ts","../src/generated/programs/opportunityMarket.ts","../src/generated/instructions/addMarketOption.ts","../src/generated/shared/index.ts","../src/generated/instructions/claimFees.ts","../src/generated/instructions/closeStakeAccount.ts","../src/generated/instructions/createMarket.ts","../src/generated/instructions/doUnstakeEarly.ts","../src/generated/instructions/extendRevealPeriod.ts","../src/generated/instructions/increaseRewardPool.ts","../src/generated/instructions/incrementOptionTally.ts","../src/generated/instructions/initCentralState.ts","../src/generated/instructions/initStakeAccount.ts","../src/generated/instructions/initTokenVault.ts","../src/generated/instructions/openMarket.ts","../src/generated/instructions/reclaimStake.ts","../src/generated/instructions/revealStake.ts","../src/generated/instructions/revealStakeCallback.ts","../src/generated/instructions/revealStakeCompDef.ts","../src/generated/instructions/selectWinningOptions.ts","../src/generated/instructions/stake.ts","../src/generated/instructions/stakeCallback.ts","../src/generated/instructions/stakeCompDef.ts","../src/generated/instructions/transferCentralStateAuthority.ts","../src/generated/instructions/unstakeEarly.ts","../src/generated/instructions/updateCentralState.ts","../src/generated/instructions/withdrawReward.ts","../src/instructions/initTokenVault.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/selectWinningOptions.ts","../src/instructions/extendRevealPeriod.ts","../src/instructions/increaseRewardPool.ts","../src/instructions/initStakeAccount.ts","../src/instructions/closeStakeAccount.ts","../src/instructions/reclaimStake.ts","../src/instructions/incrementOptionTally.ts","../src/instructions/unstakeEarly.ts","../src/instructions/doUnstakeEarly.ts","../src/accounts/centralState.ts","../src/instructions/ensureCentralState.ts","../src/instructions/withdrawReward.ts","../src/accounts/opportunityMarket.ts","../src/accounts/opportunityMarketOption.ts","../src/accounts/stakeAccount.ts","../src/accounts/tokenVault.ts","../src/arcium/awaitFinalizeComputation.ts","../src/arcium/constants.ts","../src/x25519/keypair.ts"],"sourcesContent":["// Re-export all generated Codama types\nexport * from \"./generated\";\n\n// Export convenience helpers\nexport * from \"./instructions\";\n\n// Export account PDA helpers\nexport * from \"./accounts\";\n\n// Export utilities\nexport * from \"./utils\";\n\n// Export Arcium utilities\nexport * from \"./arcium/awaitFinalizeComputation\";\n\n// Export x25519\nexport * from \"./x25519/keypair\";","/**\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 getBytesDecoder,\n getBytesEncoder,\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 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 CENTRAL_STATE_DISCRIMINATOR = new Uint8Array([\n 201, 49, 35, 231, 4, 164, 205, 91,\n]);\n\nexport function getCentralStateDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CENTRAL_STATE_DISCRIMINATOR\n );\n}\n\nexport type CentralState = {\n discriminator: ReadonlyUint8Array;\n bump: number;\n earlinessCutoffSeconds: bigint;\n authority: Address;\n minOptionDeposit: bigint;\n protocolFeeBp: number;\n feeRecipient: Address;\n};\n\nexport type CentralStateArgs = {\n bump: number;\n earlinessCutoffSeconds: number | bigint;\n authority: Address;\n minOptionDeposit: number | bigint;\n protocolFeeBp: number;\n feeRecipient: Address;\n};\n\nexport function getCentralStateEncoder(): FixedSizeEncoder<CentralStateArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['earlinessCutoffSeconds', getU64Encoder()],\n ['authority', getAddressEncoder()],\n ['minOptionDeposit', getU64Encoder()],\n ['protocolFeeBp', getU16Encoder()],\n ['feeRecipient', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: CENTRAL_STATE_DISCRIMINATOR })\n );\n}\n\nexport function getCentralStateDecoder(): FixedSizeDecoder<CentralState> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ['earlinessCutoffSeconds', getU64Decoder()],\n ['authority', getAddressDecoder()],\n ['minOptionDeposit', getU64Decoder()],\n ['protocolFeeBp', getU16Decoder()],\n ['feeRecipient', getAddressDecoder()],\n ]);\n}\n\nexport function getCentralStateCodec(): FixedSizeCodec<\n CentralStateArgs,\n CentralState\n> {\n return combineCodec(getCentralStateEncoder(), getCentralStateDecoder());\n}\n\nexport function decodeCentralState<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<CentralState, TAddress>;\nexport function decodeCentralState<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<CentralState, TAddress>;\nexport function decodeCentralState<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<CentralState, TAddress> | MaybeAccount<CentralState, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getCentralStateDecoder()\n );\n}\n\nexport async function fetchCentralState<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<CentralState, TAddress>> {\n const maybeAccount = await fetchMaybeCentralState(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeCentralState<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<CentralState, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeCentralState(maybeAccount);\n}\n\nexport async function fetchAllCentralState(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<CentralState>[]> {\n const maybeAccounts = await fetchAllMaybeCentralState(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeCentralState(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<CentralState>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeCentralState(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';\nimport {\n getEpochDecoder,\n getEpochEncoder,\n getTimestampDecoder,\n getTimestampEncoder,\n type Epoch,\n type EpochArgs,\n type Timestamp,\n type TimestampArgs,\n} from '../types';\n\nexport const CLOCK_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 152, 171, 158, 195, 75, 61, 51, 8,\n]);\n\nexport function getClockAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLOCK_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type ClockAccount = {\n discriminator: ReadonlyUint8Array;\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 transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['startEpoch', getEpochEncoder()],\n ['currentEpoch', getEpochEncoder()],\n ['startEpochTimestamp', getTimestampEncoder()],\n ['bump', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: CLOCK_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getClockAccountDecoder(): FixedSizeDecoder<ClockAccount> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\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\nexport function decodeClockAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<ClockAccount, TAddress>;\nexport function decodeClockAccount<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<ClockAccount, TAddress>;\nexport function decodeClockAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<ClockAccount, TAddress> | MaybeAccount<ClockAccount, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getClockAccountDecoder()\n );\n}\n\nexport async function fetchClockAccount<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<ClockAccount, TAddress>> {\n const maybeAccount = await fetchMaybeClockAccount(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeClockAccount<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<ClockAccount, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeClockAccount(maybeAccount);\n}\n\nexport async function fetchAllClockAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<ClockAccount>[]> {\n const maybeAccounts = await fetchAllMaybeClockAccount(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeClockAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<ClockAccount>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeClockAccount(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 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 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 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 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 getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type FeesClaimedEvent = {\n tokenVault: Address;\n mint: Address;\n feeRecipient: Address;\n amount: bigint;\n timestamp: bigint;\n};\n\nexport type FeesClaimedEventArgs = {\n tokenVault: Address;\n mint: Address;\n feeRecipient: Address;\n amount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getFeesClaimedEventEncoder(): FixedSizeEncoder<FeesClaimedEventArgs> {\n return getStructEncoder([\n ['tokenVault', getAddressEncoder()],\n ['mint', getAddressEncoder()],\n ['feeRecipient', getAddressEncoder()],\n ['amount', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getFeesClaimedEventDecoder(): FixedSizeDecoder<FeesClaimedEvent> {\n return getStructDecoder([\n ['tokenVault', getAddressDecoder()],\n ['mint', getAddressDecoder()],\n ['feeRecipient', 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 getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\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';\n\nexport type MarketCreatedEvent = {\n market: Address;\n creator: Address;\n index: bigint;\n mint: Address;\n rewardAmount: bigint;\n timeToStake: bigint;\n timeToReveal: bigint;\n marketAuthority: Option<Address>;\n authorizedReaderPubkey: Array<number>;\n unstakeDelaySeconds: bigint;\n allowClosingEarly: boolean;\n timestamp: bigint;\n};\n\nexport type MarketCreatedEventArgs = {\n market: Address;\n creator: Address;\n index: number | bigint;\n mint: Address;\n rewardAmount: number | bigint;\n timeToStake: number | bigint;\n timeToReveal: number | bigint;\n marketAuthority: OptionOrNullable<Address>;\n authorizedReaderPubkey: Array<number>;\n unstakeDelaySeconds: number | bigint;\n allowClosingEarly: boolean;\n timestamp: number | bigint;\n};\n\nexport function getMarketCreatedEventEncoder(): Encoder<MarketCreatedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['creator', getAddressEncoder()],\n ['index', getU64Encoder()],\n ['mint', getAddressEncoder()],\n ['rewardAmount', getU64Encoder()],\n ['timeToStake', getU64Encoder()],\n ['timeToReveal', getU64Encoder()],\n ['marketAuthority', getOptionEncoder(getAddressEncoder())],\n ['authorizedReaderPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['unstakeDelaySeconds', getU64Encoder()],\n ['allowClosingEarly', getBooleanEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getMarketCreatedEventDecoder(): Decoder<MarketCreatedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['creator', getAddressDecoder()],\n ['index', getU64Decoder()],\n ['mint', getAddressDecoder()],\n ['rewardAmount', getU64Decoder()],\n ['timeToStake', getU64Decoder()],\n ['timeToReveal', getU64Decoder()],\n ['marketAuthority', getOptionDecoder(getAddressDecoder())],\n ['authorizedReaderPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['unstakeDelaySeconds', getU64Decoder()],\n ['allowClosingEarly', getBooleanDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getMarketCreatedEventCodec(): Codec<\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 openTimestamp: bigint;\n timestamp: bigint;\n};\n\nexport type MarketOpenedEventArgs = {\n market: Address;\n creator: Address;\n openTimestamp: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getMarketOpenedEventEncoder(): FixedSizeEncoder<MarketOpenedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['creator', getAddressEncoder()],\n ['openTimestamp', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getMarketOpenedEventDecoder(): FixedSizeDecoder<MarketOpenedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['creator', getAddressDecoder()],\n ['openTimestamp', 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 creator: Address;\n id: bigint;\n timestamp: bigint;\n};\n\nexport type MarketOptionCreatedEventArgs = {\n option: Address;\n market: Address;\n creator: 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 ['creator', 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 ['creator', 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 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 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 getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RevealPeriodExtendedEvent = {\n market: Address;\n authority: Address;\n newTimeToReveal: bigint;\n timestamp: bigint;\n};\n\nexport type RevealPeriodExtendedEventArgs = {\n market: Address;\n authority: Address;\n newTimeToReveal: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getRevealPeriodExtendedEventEncoder(): FixedSizeEncoder<RevealPeriodExtendedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['authority', getAddressEncoder()],\n ['newTimeToReveal', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRevealPeriodExtendedEventDecoder(): FixedSizeDecoder<RevealPeriodExtendedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['authority', getAddressDecoder()],\n ['newTimeToReveal', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRevealPeriodExtendedEventCodec(): FixedSizeCodec<\n RevealPeriodExtendedEventArgs,\n RevealPeriodExtendedEvent\n> {\n return combineCodec(\n getRevealPeriodExtendedEventEncoder(),\n getRevealPeriodExtendedEventDecoder()\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 RewardClaimedEvent = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n optionId: bigint;\n rewardAmount: bigint;\n stakedAtTimestamp: bigint;\n unstakedAtTimestamp: bigint;\n stakeAmount: bigint;\n score: bigint;\n timestamp: bigint;\n};\n\nexport type RewardClaimedEventArgs = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n optionId: number | bigint;\n rewardAmount: number | bigint;\n stakedAtTimestamp: number | bigint;\n unstakedAtTimestamp: number | bigint;\n stakeAmount: number | bigint;\n score: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getRewardClaimedEventEncoder(): FixedSizeEncoder<RewardClaimedEventArgs> {\n return getStructEncoder([\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['optionId', getU64Encoder()],\n ['rewardAmount', getU64Encoder()],\n ['stakedAtTimestamp', getU64Encoder()],\n ['unstakedAtTimestamp', getU64Encoder()],\n ['stakeAmount', getU64Encoder()],\n ['score', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRewardClaimedEventDecoder(): FixedSizeDecoder<RewardClaimedEvent> {\n return getStructDecoder([\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['optionId', getU64Decoder()],\n ['rewardAmount', getU64Decoder()],\n ['stakedAtTimestamp', getU64Decoder()],\n ['unstakedAtTimestamp', getU64Decoder()],\n ['stakeAmount', getU64Decoder()],\n ['score', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRewardClaimedEventCodec(): FixedSizeCodec<\n RewardClaimedEventArgs,\n RewardClaimedEvent\n> {\n return combineCodec(\n getRewardClaimedEventEncoder(),\n getRewardClaimedEventDecoder()\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 RewardPoolIncreasedEvent = {\n market: Address;\n authority: Address;\n oldRewardAmount: bigint;\n newRewardAmount: bigint;\n timestamp: bigint;\n};\n\nexport type RewardPoolIncreasedEventArgs = {\n market: Address;\n authority: Address;\n oldRewardAmount: number | bigint;\n newRewardAmount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getRewardPoolIncreasedEventEncoder(): FixedSizeEncoder<RewardPoolIncreasedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['authority', getAddressEncoder()],\n ['oldRewardAmount', getU64Encoder()],\n ['newRewardAmount', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRewardPoolIncreasedEventDecoder(): FixedSizeDecoder<RewardPoolIncreasedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['authority', getAddressDecoder()],\n ['oldRewardAmount', getU64Decoder()],\n ['newRewardAmount', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRewardPoolIncreasedEventCodec(): FixedSizeCodec<\n RewardPoolIncreasedEventArgs,\n RewardPoolIncreasedEvent\n> {\n return combineCodec(\n getRewardPoolIncreasedEventEncoder(),\n getRewardPoolIncreasedEventDecoder()\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 creator: Address;\n rewardAmount: bigint;\n refundTokenAccount: Address;\n timestamp: bigint;\n};\n\nexport type RewardWithdrawnEventArgs = {\n market: Address;\n creator: 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 ['creator', 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 ['creator', 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 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 timestamp: bigint;\n};\n\nexport type StakeAccountInitializedEventArgs = {\n stakeAccount: Address;\n owner: Address;\n market: Address;\n timestamp: number | bigint;\n};\n\nexport function getStakeAccountInitializedEventEncoder(): FixedSizeEncoder<StakeAccountInitializedEventArgs> {\n return getStructEncoder([\n ['stakeAccount', getAddressEncoder()],\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakeAccountInitializedEventDecoder(): FixedSizeDecoder<StakeAccountInitializedEvent> {\n return getStructDecoder([\n ['stakeAccount', getAddressDecoder()],\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\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 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 StakedError = { user: Address; timestamp: bigint };\n\nexport type StakedErrorArgs = { user: Address; timestamp: number | bigint };\n\nexport function getStakedErrorEncoder(): FixedSizeEncoder<StakedErrorArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakedErrorDecoder(): FixedSizeDecoder<StakedError> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakedErrorCodec(): FixedSizeCodec<\n StakedErrorArgs,\n StakedError\n> {\n return combineCodec(getStakedErrorEncoder(), getStakedErrorDecoder());\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 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 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 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 ['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 ['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 getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StakeReclaimedEvent = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n amount: bigint;\n timestamp: bigint;\n};\n\nexport type StakeReclaimedEventArgs = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n amount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getStakeReclaimedEventEncoder(): FixedSizeEncoder<StakeReclaimedEventArgs> {\n return getStructEncoder([\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['amount', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakeReclaimedEventDecoder(): FixedSizeDecoder<StakeReclaimedEvent> {\n return getStructDecoder([\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['amount', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakeReclaimedEventCodec(): FixedSizeCodec<\n StakeReclaimedEventArgs,\n StakeReclaimedEvent\n> {\n return combineCodec(\n getStakeReclaimedEventEncoder(),\n getStakeReclaimedEventDecoder()\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 StakeRevealedError = { user: Address; timestamp: bigint };\n\nexport type StakeRevealedErrorArgs = {\n user: Address;\n timestamp: number | bigint;\n};\n\nexport function getStakeRevealedErrorEncoder(): FixedSizeEncoder<StakeRevealedErrorArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakeRevealedErrorDecoder(): FixedSizeDecoder<StakeRevealedError> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakeRevealedErrorCodec(): FixedSizeCodec<\n StakeRevealedErrorArgs,\n StakeRevealedError\n> {\n return combineCodec(\n getStakeRevealedErrorEncoder(),\n getStakeRevealedErrorDecoder()\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 StakeRevealedEvent = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n stakeAmount: bigint;\n selectedOption: bigint;\n timestamp: bigint;\n};\n\nexport type StakeRevealedEventArgs = {\n user: Address;\n market: Address;\n stakeAccount: Address;\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 ['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 ['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 getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type TallyIncrementedEvent = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n optionId: bigint;\n amount: bigint;\n userScore: bigint;\n timestamp: bigint;\n};\n\nexport type TallyIncrementedEventArgs = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n optionId: number | bigint;\n amount: number | bigint;\n userScore: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getTallyIncrementedEventEncoder(): FixedSizeEncoder<TallyIncrementedEventArgs> {\n return getStructEncoder([\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['optionId', getU64Encoder()],\n ['amount', getU64Encoder()],\n ['userScore', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getTallyIncrementedEventDecoder(): FixedSizeDecoder<TallyIncrementedEvent> {\n return getStructDecoder([\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['optionId', getU64Decoder()],\n ['amount', getU64Decoder()],\n ['userScore', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getTallyIncrementedEventCodec(): FixedSizeCodec<\n TallyIncrementedEventArgs,\n TallyIncrementedEvent\n> {\n return combineCodec(\n getTallyIncrementedEventEncoder(),\n getTallyIncrementedEventDecoder()\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 type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type UnstakedEvent = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n timestamp: bigint;\n};\n\nexport type UnstakedEventArgs = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n timestamp: number | bigint;\n};\n\nexport function getUnstakedEventEncoder(): FixedSizeEncoder<UnstakedEventArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getUnstakedEventDecoder(): FixedSizeDecoder<UnstakedEvent> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\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 getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type UnstakeInitiatedEvent = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n unstakeableAtTimestamp: bigint;\n timestamp: bigint;\n};\n\nexport type UnstakeInitiatedEventArgs = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n unstakeableAtTimestamp: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getUnstakeInitiatedEventEncoder(): FixedSizeEncoder<UnstakeInitiatedEventArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['unstakeableAtTimestamp', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getUnstakeInitiatedEventDecoder(): FixedSizeDecoder<UnstakeInitiatedEvent> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['unstakeableAtTimestamp', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getUnstakeInitiatedEventCodec(): FixedSizeCodec<\n UnstakeInitiatedEventArgs,\n UnstakeInitiatedEvent\n> {\n return combineCodec(\n getUnstakeInitiatedEventEncoder(),\n getUnstakeInitiatedEventDecoder()\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 getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type WinningOption = { optionId: bigint; rewardPercentage: number };\n\nexport type WinningOptionArgs = {\n optionId: number | bigint;\n rewardPercentage: number;\n};\n\nexport function getWinningOptionEncoder(): FixedSizeEncoder<WinningOptionArgs> {\n return getStructEncoder([\n ['optionId', getU64Encoder()],\n ['rewardPercentage', getU8Encoder()],\n ]);\n}\n\nexport function getWinningOptionDecoder(): FixedSizeDecoder<WinningOption> {\n return getStructDecoder([\n ['optionId', getU64Decoder()],\n ['rewardPercentage', getU8Decoder()],\n ]);\n}\n\nexport function getWinningOptionCodec(): FixedSizeCodec<\n WinningOptionArgs,\n WinningOption\n> {\n return combineCodec(getWinningOptionEncoder(), getWinningOptionDecoder());\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 type Address,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\nimport {\n getWinningOptionDecoder,\n getWinningOptionEncoder,\n type WinningOption,\n type WinningOptionArgs,\n} from '.';\n\nexport type WinningOptionsSelectedEvent = {\n market: Address;\n authority: Address;\n selectedOptions: Array<WinningOption>;\n timestamp: bigint;\n};\n\nexport type WinningOptionsSelectedEventArgs = {\n market: Address;\n authority: Address;\n selectedOptions: Array<WinningOptionArgs>;\n timestamp: number | bigint;\n};\n\nexport function getWinningOptionsSelectedEventEncoder(): Encoder<WinningOptionsSelectedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['authority', getAddressEncoder()],\n ['selectedOptions', getArrayEncoder(getWinningOptionEncoder())],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getWinningOptionsSelectedEventDecoder(): Decoder<WinningOptionsSelectedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['authority', getAddressDecoder()],\n ['selectedOptions', getArrayDecoder(getWinningOptionDecoder())],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getWinningOptionsSelectedEventCodec(): Codec<\n WinningOptionsSelectedEventArgs,\n WinningOptionsSelectedEvent\n> {\n return combineCodec(\n getWinningOptionsSelectedEventEncoder(),\n getWinningOptionsSelectedEventDecoder()\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 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 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 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 '../types';\n\nexport const CLUSTER_DISCRIMINATOR = new Uint8Array([\n 236, 225, 118, 228, 173, 106, 18, 60,\n]);\n\nexport function getClusterDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(CLUSTER_DISCRIMINATOR);\n}\n\nexport type Cluster = {\n discriminator: ReadonlyUint8Array;\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 transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\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 (value) => ({ ...value, discriminator: CLUSTER_DISCRIMINATOR })\n );\n}\n\nexport function getClusterDecoder(): Decoder<Cluster> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\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\nexport function decodeCluster<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<Cluster, TAddress>;\nexport function decodeCluster<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<Cluster, TAddress>;\nexport function decodeCluster<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<Cluster, TAddress> | MaybeAccount<Cluster, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getClusterDecoder()\n );\n}\n\nexport async function fetchCluster<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<Cluster, TAddress>> {\n const maybeAccount = await fetchMaybeCluster(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeCluster<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<Cluster, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeCluster(maybeAccount);\n}\n\nexport async function fetchAllCluster(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<Cluster>[]> {\n const maybeAccounts = await fetchAllMaybeCluster(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeCluster(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<Cluster>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeCluster(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 getAddressDecoder,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\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 getCircuitSourceDecoder,\n getCircuitSourceEncoder,\n getComputationDefinitionMetaDecoder,\n getComputationDefinitionMetaEncoder,\n type CircuitSource,\n type CircuitSourceArgs,\n type ComputationDefinitionMeta,\n type ComputationDefinitionMetaArgs,\n} from '../types';\n\nexport const COMPUTATION_DEFINITION_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 245, 176, 217, 221, 253, 104, 172, 200,\n]);\n\nexport function getComputationDefinitionAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n COMPUTATION_DEFINITION_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type ComputationDefinitionAccount = {\n discriminator: ReadonlyUint8Array;\n finalizationAuthority: Option<Address>;\n cuAmount: bigint;\n definition: ComputationDefinitionMeta;\n circuitSource: CircuitSource;\n bump: number;\n};\n\nexport type ComputationDefinitionAccountArgs = {\n finalizationAuthority: OptionOrNullable<Address>;\n cuAmount: number | bigint;\n definition: ComputationDefinitionMetaArgs;\n circuitSource: CircuitSourceArgs;\n bump: number;\n};\n\nexport function getComputationDefinitionAccountEncoder(): Encoder<ComputationDefinitionAccountArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['finalizationAuthority', getOptionEncoder(getAddressEncoder())],\n ['cuAmount', getU64Encoder()],\n ['definition', getComputationDefinitionMetaEncoder()],\n ['circuitSource', getCircuitSourceEncoder()],\n ['bump', getU8Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: COMPUTATION_DEFINITION_ACCOUNT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getComputationDefinitionAccountDecoder(): Decoder<ComputationDefinitionAccount> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['finalizationAuthority', getOptionDecoder(getAddressDecoder())],\n ['cuAmount', getU64Decoder()],\n ['definition', getComputationDefinitionMetaDecoder()],\n ['circuitSource', getCircuitSourceDecoder()],\n ['bump', getU8Decoder()],\n ]);\n}\n\nexport function getComputationDefinitionAccountCodec(): Codec<\n ComputationDefinitionAccountArgs,\n ComputationDefinitionAccount\n> {\n return combineCodec(\n getComputationDefinitionAccountEncoder(),\n getComputationDefinitionAccountDecoder()\n );\n}\n\nexport function decodeComputationDefinitionAccount<\n TAddress extends string = string,\n>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<ComputationDefinitionAccount, TAddress>;\nexport function decodeComputationDefinitionAccount<\n TAddress extends string = string,\n>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<ComputationDefinitionAccount, TAddress>;\nexport function decodeComputationDefinitionAccount<\n TAddress extends string = string,\n>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n | Account<ComputationDefinitionAccount, TAddress>\n | MaybeAccount<ComputationDefinitionAccount, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getComputationDefinitionAccountDecoder()\n );\n}\n\nexport async function fetchComputationDefinitionAccount<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<ComputationDefinitionAccount, TAddress>> {\n const maybeAccount = await fetchMaybeComputationDefinitionAccount(\n rpc,\n address,\n config\n );\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeComputationDefinitionAccount<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<ComputationDefinitionAccount, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeComputationDefinitionAccount(maybeAccount);\n}\n\nexport async function fetchAllComputationDefinitionAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<ComputationDefinitionAccount>[]> {\n const maybeAccounts = await fetchAllMaybeComputationDefinitionAccount(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeComputationDefinitionAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<ComputationDefinitionAccount>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeComputationDefinitionAccount(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 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 FEE_POOL_DISCRIMINATOR = new Uint8Array([\n 172, 38, 77, 146, 148, 5, 51, 242,\n]);\n\nexport function getFeePoolDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(FEE_POOL_DISCRIMINATOR);\n}\n\nexport type FeePool = { discriminator: ReadonlyUint8Array; bump: number };\n\nexport type FeePoolArgs = { bump: number };\n\nexport function getFeePoolEncoder(): FixedSizeEncoder<FeePoolArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: FEE_POOL_DISCRIMINATOR })\n );\n}\n\nexport function getFeePoolDecoder(): FixedSizeDecoder<FeePool> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ]);\n}\n\nexport function getFeePoolCodec(): FixedSizeCodec<FeePoolArgs, FeePool> {\n return combineCodec(getFeePoolEncoder(), getFeePoolDecoder());\n}\n\nexport function decodeFeePool<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<FeePool, TAddress>;\nexport function decodeFeePool<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<FeePool, TAddress>;\nexport function decodeFeePool<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<FeePool, TAddress> | MaybeAccount<FeePool, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getFeePoolDecoder()\n );\n}\n\nexport async function fetchFeePool<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<FeePool, TAddress>> {\n const maybeAccount = await fetchMaybeFeePool(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeFeePool<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<FeePool, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeFeePool(maybeAccount);\n}\n\nexport async function fetchAllFeePool(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<FeePool>[]> {\n const maybeAccounts = await fetchAllMaybeFeePool(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeFeePool(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<FeePool>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeFeePool(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 getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\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 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 getMxeStatusDecoder,\n getMxeStatusEncoder,\n getUtilityPubkeysDecoder,\n getUtilityPubkeysEncoder,\n type MxeStatus,\n type MxeStatusArgs,\n type UtilityPubkeys,\n type UtilityPubkeysArgs,\n} from '../types';\n\nexport const M_X_E_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 103, 26, 85, 250, 179, 159, 17, 117,\n]);\n\nexport function getMXEAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n M_X_E_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type MXEAccount = {\n discriminator: ReadonlyUint8Array;\n cluster: Option<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 cluster: OptionOrNullable<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 transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['cluster', getOptionEncoder(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 (value) => ({ ...value, discriminator: M_X_E_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getMXEAccountDecoder(): Decoder<MXEAccount> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['cluster', getOptionDecoder(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\nexport function decodeMXEAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<MXEAccount, TAddress>;\nexport function decodeMXEAccount<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<MXEAccount, TAddress>;\nexport function decodeMXEAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<MXEAccount, TAddress> | MaybeAccount<MXEAccount, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getMXEAccountDecoder()\n );\n}\n\nexport async function fetchMXEAccount<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<MXEAccount, TAddress>> {\n const maybeAccount = await fetchMaybeMXEAccount(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeMXEAccount<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<MXEAccount, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeMXEAccount(maybeAccount);\n}\n\nexport async function fetchAllMXEAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<MXEAccount>[]> {\n const maybeAccounts = await fetchAllMaybeMXEAccount(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeMXEAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<MXEAccount>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeMXEAccount(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 getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\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 getWinningOptionDecoder,\n getWinningOptionEncoder,\n type WinningOption,\n type WinningOptionArgs,\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 openTimestamp: Option<bigint>;\n timeToStake: bigint;\n timeToReveal: bigint;\n selectedOptions: Option<Array<WinningOption>>;\n rewardAmount: bigint;\n marketAuthority: Option<Address>;\n mint: Address;\n earlinessCutoffSeconds: bigint;\n unstakeDelaySeconds: bigint;\n authorizedReaderPubkey: Array<number>;\n allowClosingEarly: boolean;\n rewardWithdrawn: boolean;\n};\n\nexport type OpportunityMarketArgs = {\n bump: number;\n creator: Address;\n index: number | bigint;\n totalOptions: number | bigint;\n openTimestamp: OptionOrNullable<number | bigint>;\n timeToStake: number | bigint;\n timeToReveal: number | bigint;\n selectedOptions: OptionOrNullable<Array<WinningOptionArgs>>;\n rewardAmount: number | bigint;\n marketAuthority: OptionOrNullable<Address>;\n mint: Address;\n earlinessCutoffSeconds: number | bigint;\n unstakeDelaySeconds: number | bigint;\n authorizedReaderPubkey: Array<number>;\n allowClosingEarly: boolean;\n rewardWithdrawn: boolean;\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 ['openTimestamp', getOptionEncoder(getU64Encoder())],\n ['timeToStake', getU64Encoder()],\n ['timeToReveal', getU64Encoder()],\n [\n 'selectedOptions',\n getOptionEncoder(getArrayEncoder(getWinningOptionEncoder())),\n ],\n ['rewardAmount', getU64Encoder()],\n ['marketAuthority', getOptionEncoder(getAddressEncoder())],\n ['mint', getAddressEncoder()],\n ['earlinessCutoffSeconds', getU64Encoder()],\n ['unstakeDelaySeconds', getU64Encoder()],\n ['authorizedReaderPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['allowClosingEarly', getBooleanEncoder()],\n ['rewardWithdrawn', getBooleanEncoder()],\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 ['openTimestamp', getOptionDecoder(getU64Decoder())],\n ['timeToStake', getU64Decoder()],\n ['timeToReveal', getU64Decoder()],\n [\n 'selectedOptions',\n getOptionDecoder(getArrayDecoder(getWinningOptionDecoder())),\n ],\n ['rewardAmount', getU64Decoder()],\n ['marketAuthority', getOptionDecoder(getAddressDecoder())],\n ['mint', getAddressDecoder()],\n ['earlinessCutoffSeconds', getU64Decoder()],\n ['unstakeDelaySeconds', getU64Decoder()],\n ['authorizedReaderPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['allowClosingEarly', getBooleanDecoder()],\n ['rewardWithdrawn', getBooleanDecoder()],\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 assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\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 /** Total staked for this option (tally) */\n totalStaked: Option<bigint>;\n totalScore: Option<bigint>;\n};\n\nexport type OpportunityMarketOptionArgs = {\n bump: number;\n id: number | bigint;\n /** Total staked for this option (tally) */\n totalStaked: OptionOrNullable<number | bigint>;\n totalScore: OptionOrNullable<number | bigint>;\n};\n\nexport function getOpportunityMarketOptionEncoder(): Encoder<OpportunityMarketOptionArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['id', getU64Encoder()],\n ['totalStaked', getOptionEncoder(getU64Encoder())],\n ['totalScore', getOptionEncoder(getU64Encoder())],\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 ['totalStaked', getOptionDecoder(getU64Decoder())],\n ['totalScore', getOptionDecoder(getU64Decoder())],\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 getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\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 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 revealedOption: Option<bigint>;\n score: Option<bigint>;\n totalIncremented: boolean;\n unstakeableAtTimestamp: Option<bigint>;\n locked: boolean;\n stakeReclaimed: 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 revealedOption: OptionOrNullable<number | bigint>;\n score: OptionOrNullable<number | bigint>;\n totalIncremented: boolean;\n unstakeableAtTimestamp: OptionOrNullable<number | bigint>;\n locked: boolean;\n stakeReclaimed: 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 ['revealedOption', getOptionEncoder(getU64Encoder())],\n ['score', getOptionEncoder(getU64Encoder())],\n ['totalIncremented', getBooleanEncoder()],\n ['unstakeableAtTimestamp', getOptionEncoder(getU64Encoder())],\n ['locked', getBooleanEncoder()],\n ['stakeReclaimed', 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 ['revealedOption', getOptionDecoder(getU64Decoder())],\n ['score', getOptionDecoder(getU64Decoder())],\n ['totalIncremented', getBooleanDecoder()],\n ['unstakeableAtTimestamp', getOptionDecoder(getU64Decoder())],\n ['locked', getBooleanDecoder()],\n ['stakeReclaimed', 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 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 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 TOKEN_VAULT_DISCRIMINATOR = new Uint8Array([\n 121, 7, 84, 254, 151, 228, 43, 144,\n]);\n\nexport function getTokenVaultDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(TOKEN_VAULT_DISCRIMINATOR);\n}\n\nexport type TokenVault = {\n discriminator: ReadonlyUint8Array;\n bump: number;\n fundManager: Address;\n mint: Address;\n collectedFees: bigint;\n protocolFeeBp: number;\n};\n\nexport type TokenVaultArgs = {\n bump: number;\n fundManager: Address;\n mint: Address;\n collectedFees: number | bigint;\n protocolFeeBp: number;\n};\n\nexport function getTokenVaultEncoder(): FixedSizeEncoder<TokenVaultArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['fundManager', getAddressEncoder()],\n ['mint', getAddressEncoder()],\n ['collectedFees', getU64Encoder()],\n ['protocolFeeBp', getU16Encoder()],\n ]),\n (value) => ({ ...value, discriminator: TOKEN_VAULT_DISCRIMINATOR })\n );\n}\n\nexport function getTokenVaultDecoder(): FixedSizeDecoder<TokenVault> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ['fundManager', getAddressDecoder()],\n ['mint', getAddressDecoder()],\n ['collectedFees', getU64Decoder()],\n ['protocolFeeBp', getU16Decoder()],\n ]);\n}\n\nexport function getTokenVaultCodec(): FixedSizeCodec<\n TokenVaultArgs,\n TokenVault\n> {\n return combineCodec(getTokenVaultEncoder(), getTokenVaultDecoder());\n}\n\nexport function decodeTokenVault<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<TokenVault, TAddress>;\nexport function decodeTokenVault<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<TokenVault, TAddress>;\nexport function decodeTokenVault<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<TokenVault, TAddress> | MaybeAccount<TokenVault, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getTokenVaultDecoder()\n );\n}\n\nexport async function fetchTokenVault<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<TokenVault, TAddress>> {\n const maybeAccount = await fetchMaybeTokenVault(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeTokenVault<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<TokenVault, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeTokenVault(maybeAccount);\n}\n\nexport async function fetchAllTokenVault(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<TokenVault>[]> {\n const maybeAccounts = await fetchAllMaybeTokenVault(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeTokenVault(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<TokenVault>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeTokenVault(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/** ClusterNotSet: Cluster not set */\nexport const OPPORTUNITY_MARKET_ERROR__CLUSTER_NOT_SET = 0x1771; // 6001\n/** Unauthorized: Unauthorized */\nexport const OPPORTUNITY_MARKET_ERROR__UNAUTHORIZED = 0x1772; // 6002\n/** InsufficientBalance: Insufficient balance */\nexport const OPPORTUNITY_MARKET_ERROR__INSUFFICIENT_BALANCE = 0x1773; // 6003\n/** InsufficientRewardFunding: Insufficient reward funding */\nexport const OPPORTUNITY_MARKET_ERROR__INSUFFICIENT_REWARD_FUNDING = 0x1774; // 6004\n/** InvalidTimestamp: Timestamp must be in the future */\nexport const OPPORTUNITY_MARKET_ERROR__INVALID_TIMESTAMP = 0x1775; // 6005\n/** MarketAlreadyOpen: Market is already open */\nexport const OPPORTUNITY_MARKET_ERROR__MARKET_ALREADY_OPEN = 0x1776; // 6006\n/** InvalidOptionId: Invalid option ID */\nexport const OPPORTUNITY_MARKET_ERROR__INVALID_OPTION_ID = 0x1777; // 6007\n/** MarketNotOpen: Market is not open */\nexport const OPPORTUNITY_MARKET_ERROR__MARKET_NOT_OPEN = 0x1778; // 6008\n/** StakingNotActive: Staking period is not active */\nexport const OPPORTUNITY_MARKET_ERROR__STAKING_NOT_ACTIVE = 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/** AlreadyPurchased: Already staked for this stake account */\nexport const OPPORTUNITY_MARKET_ERROR__ALREADY_PURCHASED = 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/** UnstakeDelayNotMet: Unstake delay period has not passed yet */\nexport const OPPORTUNITY_MARKET_ERROR__UNSTAKE_DELAY_NOT_MET = 0x1788; // 6024\n/** UnstakeNotInitiated: Unstake has not been initiated */\nexport const OPPORTUNITY_MARKET_ERROR__UNSTAKE_NOT_INITIATED = 0x1789; // 6025\n/** ClosingEarlyNotAllowed: Market cannot be closed before stake period ends */\nexport const OPPORTUNITY_MARKET_ERROR__CLOSING_EARLY_NOT_ALLOWED = 0x178a; // 6026\n/** NoFeesToClaim: No fees to claim */\nexport const OPPORTUNITY_MARKET_ERROR__NO_FEES_TO_CLAIM = 0x178b; // 6027\n/** InvalidWinningOptionsInput: Invalid winning options input */\nexport const OPPORTUNITY_MARKET_ERROR__INVALID_WINNING_OPTIONS_INPUT = 0x178c; // 6028\n/** RewardAmountNotIncreased: New reward amount must be greater than current */\nexport const OPPORTUNITY_MARKET_ERROR__REWARD_AMOUNT_NOT_INCREASED = 0x178d; // 6029\n/** RewardAlreadyWithdrawn: Reward has already been withdrawn */\nexport const OPPORTUNITY_MARKET_ERROR__REWARD_ALREADY_WITHDRAWN = 0x178e; // 6030\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_PURCHASED\n | typeof OPPORTUNITY_MARKET_ERROR__ALREADY_REVEALED\n | typeof OPPORTUNITY_MARKET_ERROR__ALREADY_UNSTAKED\n | typeof OPPORTUNITY_MARKET_ERROR__CLOSING_EARLY_NOT_ALLOWED\n | typeof OPPORTUNITY_MARKET_ERROR__CLUSTER_NOT_SET\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_MINT\n | typeof OPPORTUNITY_MARKET_ERROR__INVALID_OPTION_ID\n | typeof OPPORTUNITY_MARKET_ERROR__INVALID_TIMESTAMP\n | typeof OPPORTUNITY_MARKET_ERROR__INVALID_WINNING_OPTIONS_INPUT\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__NOT_REVEALED\n | typeof OPPORTUNITY_MARKET_ERROR__OVERFLOW\n | typeof OPPORTUNITY_MARKET_ERROR__REVEAL_PERIOD_ENDED\n | typeof OPPORTUNITY_MARKET_ERROR__REWARD_ALREADY_WITHDRAWN\n | typeof OPPORTUNITY_MARKET_ERROR__REWARD_AMOUNT_NOT_INCREASED\n | typeof OPPORTUNITY_MARKET_ERROR__STAKING_NOT_ACTIVE\n | typeof OPPORTUNITY_MARKET_ERROR__TALLY_ALREADY_INCREMENTED\n | typeof OPPORTUNITY_MARKET_ERROR__UNAUTHORIZED\n | typeof OPPORTUNITY_MARKET_ERROR__UNSTAKE_DELAY_NOT_MET\n | typeof OPPORTUNITY_MARKET_ERROR__UNSTAKE_NOT_INITIATED\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_PURCHASED]: `Already staked for this stake account`,\n [OPPORTUNITY_MARKET_ERROR__ALREADY_REVEALED]: `Stake already revealed`,\n [OPPORTUNITY_MARKET_ERROR__ALREADY_UNSTAKED]: `Already unstaked`,\n [OPPORTUNITY_MARKET_ERROR__CLOSING_EARLY_NOT_ALLOWED]: `Market cannot be closed before stake period ends`,\n [OPPORTUNITY_MARKET_ERROR__CLUSTER_NOT_SET]: `Cluster not set`,\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_MINT]: `Token mint does not match account mint`,\n [OPPORTUNITY_MARKET_ERROR__INVALID_OPTION_ID]: `Invalid option ID`,\n [OPPORTUNITY_MARKET_ERROR__INVALID_TIMESTAMP]: `Timestamp must be in the future`,\n [OPPORTUNITY_MARKET_ERROR__INVALID_WINNING_OPTIONS_INPUT]: `Invalid winning options input`,\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__NOT_REVEALED]: `Stake not yet revealed`,\n [OPPORTUNITY_MARKET_ERROR__OVERFLOW]: `Arithmetic overflow`,\n [OPPORTUNITY_MARKET_ERROR__REVEAL_PERIOD_ENDED]: `Reveal period has already ended`,\n [OPPORTUNITY_MARKET_ERROR__REWARD_ALREADY_WITHDRAWN]: `Reward has already been withdrawn`,\n [OPPORTUNITY_MARKET_ERROR__REWARD_AMOUNT_NOT_INCREASED]: `New reward amount must be greater than current`,\n [OPPORTUNITY_MARKET_ERROR__STAKING_NOT_ACTIVE]: `Staking period is not active`,\n [OPPORTUNITY_MARKET_ERROR__TALLY_ALREADY_INCREMENTED]: `Tally already incremented for this stake account`,\n [OPPORTUNITY_MARKET_ERROR__UNAUTHORIZED]: `Unauthorized`,\n [OPPORTUNITY_MARKET_ERROR__UNSTAKE_DELAY_NOT_MET]: `Unstake delay period has not passed yet`,\n [OPPORTUNITY_MARKET_ERROR__UNSTAKE_NOT_INITIATED]: `Unstake has not been initiated`,\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 ParsedClaimFeesInstruction,\n type ParsedCloseStakeAccountInstruction,\n type ParsedCreateMarketInstruction,\n type ParsedDoUnstakeEarlyInstruction,\n type ParsedExtendRevealPeriodInstruction,\n type ParsedIncreaseRewardPoolInstruction,\n type ParsedIncrementOptionTallyInstruction,\n type ParsedInitCentralStateInstruction,\n type ParsedInitStakeAccountInstruction,\n type ParsedInitTokenVaultInstruction,\n type ParsedOpenMarketInstruction,\n type ParsedReclaimStakeInstruction,\n type ParsedRevealStakeCallbackInstruction,\n type ParsedRevealStakeCompDefInstruction,\n type ParsedRevealStakeInstruction,\n type ParsedSelectWinningOptionsInstruction,\n type ParsedStakeCallbackInstruction,\n type ParsedStakeCompDefInstruction,\n type ParsedStakeInstruction,\n type ParsedTransferCentralStateAuthorityInstruction,\n type ParsedUnstakeEarlyInstruction,\n type ParsedUpdateCentralStateInstruction,\n type ParsedWithdrawRewardInstruction,\n} from '../instructions';\n\nexport const OPPORTUNITY_MARKET_PROGRAM_ADDRESS =\n 'BencHEXKYZ8HJ9LCrihgCWAmnqBT1abpsa9FYRs8fK1D' as Address<'BencHEXKYZ8HJ9LCrihgCWAmnqBT1abpsa9FYRs8fK1D'>;\n\nexport enum OpportunityMarketAccount {\n ArciumSignerAccount,\n CentralState,\n ClockAccount,\n Cluster,\n ComputationDefinitionAccount,\n FeePool,\n MXEAccount,\n OpportunityMarket,\n OpportunityMarketOption,\n StakeAccount,\n TokenVault,\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([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([201, 49, 35, 231, 4, 164, 205, 91])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.CentralState;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([152, 171, 158, 195, 75, 61, 51, 8])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.ClockAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([236, 225, 118, 228, 173, 106, 18, 60])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.Cluster;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([245, 176, 217, 221, 253, 104, 172, 200])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.ComputationDefinitionAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([172, 38, 77, 146, 148, 5, 51, 242])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.FeePool;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([103, 26, 85, 250, 179, 159, 17, 117])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.MXEAccount;\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([80, 158, 67, 124, 50, 189, 192, 255])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.StakeAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([121, 7, 84, 254, 151, 228, 43, 144])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.TokenVault;\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 ClaimFees,\n CloseStakeAccount,\n CreateMarket,\n DoUnstakeEarly,\n ExtendRevealPeriod,\n IncreaseRewardPool,\n IncrementOptionTally,\n InitCentralState,\n InitStakeAccount,\n InitTokenVault,\n OpenMarket,\n ReclaimStake,\n RevealStake,\n RevealStakeCallback,\n RevealStakeCompDef,\n SelectWinningOptions,\n Stake,\n StakeCallback,\n StakeCompDef,\n TransferCentralStateAuthority,\n UnstakeEarly,\n UpdateCentralState,\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([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([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([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([23, 184, 57, 106, 191, 197, 209, 50])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.DoUnstakeEarly;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([95, 102, 32, 59, 88, 1, 211, 128])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.ExtendRevealPeriod;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([140, 244, 44, 96, 126, 219, 140, 0])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.IncreaseRewardPool;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([93, 109, 206, 212, 231, 51, 71, 122])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.IncrementOptionTally;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([132, 108, 150, 180, 190, 48, 103, 90])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.InitCentralState;\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([203, 26, 194, 169, 252, 226, 179, 180])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.InitTokenVault;\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([237, 113, 219, 76, 6, 246, 223, 84])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.ReclaimStake;\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([56, 237, 171, 43, 247, 124, 100, 20])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.SelectWinningOptions;\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([237, 33, 80, 239, 189, 157, 253, 90])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.TransferCentralStateAuthority;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([246, 212, 81, 180, 65, 2, 126, 125])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.UnstakeEarly;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([228, 211, 60, 53, 115, 153, 149, 194])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.UpdateCentralState;\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 = 'BencHEXKYZ8HJ9LCrihgCWAmnqBT1abpsa9FYRs8fK1D',\n> =\n | ({\n instructionType: OpportunityMarketInstruction.AddMarketOption;\n } & ParsedAddMarketOptionInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.ClaimFees;\n } & ParsedClaimFeesInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CloseStakeAccount;\n } & ParsedCloseStakeAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CreateMarket;\n } & ParsedCreateMarketInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.DoUnstakeEarly;\n } & ParsedDoUnstakeEarlyInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.ExtendRevealPeriod;\n } & ParsedExtendRevealPeriodInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.IncreaseRewardPool;\n } & ParsedIncreaseRewardPoolInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.IncrementOptionTally;\n } & ParsedIncrementOptionTallyInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.InitCentralState;\n } & ParsedInitCentralStateInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.InitStakeAccount;\n } & ParsedInitStakeAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.InitTokenVault;\n } & ParsedInitTokenVaultInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.OpenMarket;\n } & ParsedOpenMarketInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.ReclaimStake;\n } & ParsedReclaimStakeInstruction<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.SelectWinningOptions;\n } & ParsedSelectWinningOptionsInstruction<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.TransferCentralStateAuthority;\n } & ParsedTransferCentralStateAuthorityInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.UnstakeEarly;\n } & ParsedUnstakeEarlyInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.UpdateCentralState;\n } & ParsedUpdateCentralStateInstruction<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 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 TAccountCreator extends string\n ? WritableSignerAccount<TAccountCreator> &\n AccountSignerMeta<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 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 TAccountCreator extends string = string,\n TAccountMarket extends string = string,\n TAccountOption extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n creator: TransactionSigner<TAccountCreator>;\n market: Address<TAccountMarket>;\n option?: Address<TAccountOption>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionId: AddMarketOptionInstructionDataArgs['optionId'];\n};\n\nexport async function getAddMarketOptionInstructionAsync<\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: AddMarketOptionAsyncInput<\n TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n AddMarketOptionInstruction<\n TProgramAddress,\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 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.creator),\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 TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type AddMarketOptionInput<\n TAccountCreator extends string = string,\n TAccountMarket extends string = string,\n TAccountOption extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n creator: TransactionSigner<TAccountCreator>;\n market: Address<TAccountMarket>;\n option: Address<TAccountOption>;\n systemProgram?: Address<TAccountSystemProgram>;\n optionId: AddMarketOptionInstructionDataArgs['optionId'];\n};\n\nexport function getAddMarketOptionInstruction<\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: AddMarketOptionInput<\n TAccountCreator,\n TAccountMarket,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): AddMarketOptionInstruction<\n TProgramAddress,\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 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.creator),\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 TAccountCreator,\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 creator: 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 creator: 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 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 TAccountCentralState extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountTokenVault extends string | AccountMeta<string> = string,\n TAccountTokenVaultAta extends string | AccountMeta<string> = string,\n TAccountFeeRecipientTokenAccount extends string | AccountMeta<string> =\n 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 TAccountCentralState extends string\n ? ReadonlyAccount<TAccountCentralState>\n : TAccountCentralState,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountTokenVault extends string\n ? WritableAccount<TAccountTokenVault>\n : TAccountTokenVault,\n TAccountTokenVaultAta extends string\n ? WritableAccount<TAccountTokenVaultAta>\n : TAccountTokenVaultAta,\n TAccountFeeRecipientTokenAccount extends string\n ? WritableAccount<TAccountFeeRecipientTokenAccount>\n : TAccountFeeRecipientTokenAccount,\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 TAccountCentralState extends string = string,\n TAccountTokenMint extends string = string,\n TAccountTokenVault extends string = string,\n TAccountTokenVaultAta extends string = string,\n TAccountFeeRecipientTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n centralState?: Address<TAccountCentralState>;\n tokenMint: Address<TAccountTokenMint>;\n tokenVault?: Address<TAccountTokenVault>;\n tokenVaultAta?: Address<TAccountTokenVaultAta>;\n feeRecipientTokenAccount: Address<TAccountFeeRecipientTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport async function getClaimFeesInstructionAsync<\n TAccountSigner extends string,\n TAccountCentralState extends string,\n TAccountTokenMint extends string,\n TAccountTokenVault extends string,\n TAccountTokenVaultAta extends string,\n TAccountFeeRecipientTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ClaimFeesAsyncInput<\n TAccountSigner,\n TAccountCentralState,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountFeeRecipientTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n ClaimFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountCentralState,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountFeeRecipientTokenAccount,\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 centralState: { value: input.centralState ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n tokenVault: { value: input.tokenVault ?? null, isWritable: true },\n tokenVaultAta: { value: input.tokenVaultAta ?? null, isWritable: true },\n feeRecipientTokenAccount: {\n value: input.feeRecipientTokenAccount ?? 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.centralState.value) {\n accounts.centralState.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 99, 101, 110, 116, 114, 97, 108, 95, 115, 116, 97, 116, 101,\n ])\n ),\n ],\n });\n }\n if (!accounts.tokenVault.value) {\n accounts.tokenVault.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116])\n ),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.tokenVaultAta.value) {\n accounts.tokenVaultAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.tokenVault.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.centralState),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.tokenVaultAta),\n getAccountMeta(accounts.feeRecipientTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getClaimFeesInstructionDataEncoder().encode({}),\n programAddress,\n } as ClaimFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountCentralState,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountFeeRecipientTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type ClaimFeesInput<\n TAccountSigner extends string = string,\n TAccountCentralState extends string = string,\n TAccountTokenMint extends string = string,\n TAccountTokenVault extends string = string,\n TAccountTokenVaultAta extends string = string,\n TAccountFeeRecipientTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n centralState: Address<TAccountCentralState>;\n tokenMint: Address<TAccountTokenMint>;\n tokenVault: Address<TAccountTokenVault>;\n tokenVaultAta: Address<TAccountTokenVaultAta>;\n feeRecipientTokenAccount: Address<TAccountFeeRecipientTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport function getClaimFeesInstruction<\n TAccountSigner extends string,\n TAccountCentralState extends string,\n TAccountTokenMint extends string,\n TAccountTokenVault extends string,\n TAccountTokenVaultAta extends string,\n TAccountFeeRecipientTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ClaimFeesInput<\n TAccountSigner,\n TAccountCentralState,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountFeeRecipientTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): ClaimFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountCentralState,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountFeeRecipientTokenAccount,\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 centralState: { value: input.centralState ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n tokenVault: { value: input.tokenVault ?? null, isWritable: true },\n tokenVaultAta: { value: input.tokenVaultAta ?? null, isWritable: true },\n feeRecipientTokenAccount: {\n value: input.feeRecipientTokenAccount ?? 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.centralState),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.tokenVaultAta),\n getAccountMeta(accounts.feeRecipientTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getClaimFeesInstructionDataEncoder().encode({}),\n programAddress,\n } as ClaimFeesInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountCentralState,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountFeeRecipientTokenAccount,\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 centralState: TAccountMetas[1];\n tokenMint: TAccountMetas[2];\n tokenVault: TAccountMetas[3];\n tokenVaultAta: TAccountMetas[4];\n feeRecipientTokenAccount: 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 centralState: getNextAccount(),\n tokenMint: getNextAccount(),\n tokenVault: getNextAccount(),\n tokenVaultAta: getNextAccount(),\n feeRecipientTokenAccount: 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 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 ? ReadonlyAccount<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's ATA holding reward tokens */\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: false },\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's ATA holding reward tokens */\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: false },\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's ATA holding reward tokens */\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 getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\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 Option,\n type OptionOrNullable,\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 TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountCentralState extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TAccountAssociatedTokenProgram extends string | AccountMeta<string> =\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',\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 TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountCentralState extends string\n ? ReadonlyAccount<TAccountCentralState>\n : TAccountCentralState,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountAssociatedTokenProgram extends string\n ? ReadonlyAccount<TAccountAssociatedTokenProgram>\n : TAccountAssociatedTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateMarketInstructionData = {\n discriminator: ReadonlyUint8Array;\n marketIndex: bigint;\n rewardAmount: bigint;\n timeToStake: bigint;\n timeToReveal: bigint;\n marketAuthority: Option<Address>;\n unstakeDelaySeconds: bigint;\n authorizedReaderPubkey: Array<number>;\n allowClosingEarly: boolean;\n};\n\nexport type CreateMarketInstructionDataArgs = {\n marketIndex: number | bigint;\n rewardAmount: number | bigint;\n timeToStake: number | bigint;\n timeToReveal: number | bigint;\n marketAuthority: OptionOrNullable<Address>;\n unstakeDelaySeconds: number | bigint;\n authorizedReaderPubkey: Array<number>;\n allowClosingEarly: boolean;\n};\n\nexport function getCreateMarketInstructionDataEncoder(): Encoder<CreateMarketInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['marketIndex', getU64Encoder()],\n ['rewardAmount', getU64Encoder()],\n ['timeToStake', getU64Encoder()],\n ['timeToReveal', getU64Encoder()],\n ['marketAuthority', getOptionEncoder(getAddressEncoder())],\n ['unstakeDelaySeconds', getU64Encoder()],\n ['authorizedReaderPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['allowClosingEarly', getBooleanEncoder()],\n ]),\n (value) => ({ ...value, discriminator: CREATE_MARKET_DISCRIMINATOR })\n );\n}\n\nexport function getCreateMarketInstructionDataDecoder(): Decoder<CreateMarketInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['marketIndex', getU64Decoder()],\n ['rewardAmount', getU64Decoder()],\n ['timeToStake', getU64Decoder()],\n ['timeToReveal', getU64Decoder()],\n ['marketAuthority', getOptionDecoder(getAddressDecoder())],\n ['unstakeDelaySeconds', getU64Decoder()],\n ['authorizedReaderPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['allowClosingEarly', getBooleanDecoder()],\n ]);\n}\n\nexport function getCreateMarketInstructionDataCodec(): Codec<\n CreateMarketInstructionDataArgs,\n CreateMarketInstructionData\n> {\n return combineCodec(\n getCreateMarketInstructionDataEncoder(),\n getCreateMarketInstructionDataDecoder()\n );\n}\n\nexport type CreateMarketAsyncInput<\n TAccountCreator extends string = string,\n TAccountTokenMint extends string = string,\n TAccountCentralState extends string = string,\n TAccountMarket extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n> = {\n creator: TransactionSigner<TAccountCreator>;\n tokenMint: Address<TAccountTokenMint>;\n centralState?: Address<TAccountCentralState>;\n market?: Address<TAccountMarket>;\n /** ATA owned by market PDA, holds reward tokens */\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n systemProgram?: Address<TAccountSystemProgram>;\n tokenProgram: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n marketIndex: CreateMarketInstructionDataArgs['marketIndex'];\n rewardAmount: CreateMarketInstructionDataArgs['rewardAmount'];\n timeToStake: CreateMarketInstructionDataArgs['timeToStake'];\n timeToReveal: CreateMarketInstructionDataArgs['timeToReveal'];\n marketAuthority: CreateMarketInstructionDataArgs['marketAuthority'];\n unstakeDelaySeconds: CreateMarketInstructionDataArgs['unstakeDelaySeconds'];\n authorizedReaderPubkey: CreateMarketInstructionDataArgs['authorizedReaderPubkey'];\n allowClosingEarly: CreateMarketInstructionDataArgs['allowClosingEarly'];\n};\n\nexport async function getCreateMarketInstructionAsync<\n TAccountCreator extends string,\n TAccountTokenMint extends string,\n TAccountCentralState extends string,\n TAccountMarket extends string,\n TAccountMarketTokenAta extends string,\n TAccountSystemProgram extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CreateMarketAsyncInput<\n TAccountCreator,\n TAccountTokenMint,\n TAccountCentralState,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CreateMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountTokenMint,\n TAccountCentralState,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram\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 tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n centralState: { value: input.centralState ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n associatedTokenProgram: {\n value: input.associatedTokenProgram ?? null,\n isWritable: false,\n },\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.centralState.value) {\n accounts.centralState.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 99, 101, 110, 116, 114, 97, 108, 95, 115, 116, 97, 116, 101,\n ])\n ),\n ],\n });\n }\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(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.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n if (!accounts.associatedTokenProgram.value) {\n accounts.associatedTokenProgram.value =\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.creator),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.centralState),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n ],\n data: getCreateMarketInstructionDataEncoder().encode(\n args as CreateMarketInstructionDataArgs\n ),\n programAddress,\n } as CreateMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountTokenMint,\n TAccountCentralState,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram\n >);\n}\n\nexport type CreateMarketInput<\n TAccountCreator extends string = string,\n TAccountTokenMint extends string = string,\n TAccountCentralState extends string = string,\n TAccountMarket extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountSystemProgram extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n> = {\n creator: TransactionSigner<TAccountCreator>;\n tokenMint: Address<TAccountTokenMint>;\n centralState: Address<TAccountCentralState>;\n market: Address<TAccountMarket>;\n /** ATA owned by market PDA, holds reward tokens */\n marketTokenAta: Address<TAccountMarketTokenAta>;\n systemProgram?: Address<TAccountSystemProgram>;\n tokenProgram: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n marketIndex: CreateMarketInstructionDataArgs['marketIndex'];\n rewardAmount: CreateMarketInstructionDataArgs['rewardAmount'];\n timeToStake: CreateMarketInstructionDataArgs['timeToStake'];\n timeToReveal: CreateMarketInstructionDataArgs['timeToReveal'];\n marketAuthority: CreateMarketInstructionDataArgs['marketAuthority'];\n unstakeDelaySeconds: CreateMarketInstructionDataArgs['unstakeDelaySeconds'];\n authorizedReaderPubkey: CreateMarketInstructionDataArgs['authorizedReaderPubkey'];\n allowClosingEarly: CreateMarketInstructionDataArgs['allowClosingEarly'];\n};\n\nexport function getCreateMarketInstruction<\n TAccountCreator extends string,\n TAccountTokenMint extends string,\n TAccountCentralState extends string,\n TAccountMarket extends string,\n TAccountMarketTokenAta extends string,\n TAccountSystemProgram extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CreateMarketInput<\n TAccountCreator,\n TAccountTokenMint,\n TAccountCentralState,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CreateMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountTokenMint,\n TAccountCentralState,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram\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 tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n centralState: { value: input.centralState ?? null, isWritable: false },\n market: { value: input.market ?? null, isWritable: true },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n associatedTokenProgram: {\n value: input.associatedTokenProgram ?? null,\n isWritable: false,\n },\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 if (!accounts.associatedTokenProgram.value) {\n accounts.associatedTokenProgram.value =\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.creator),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.centralState),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.systemProgram),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n ],\n data: getCreateMarketInstructionDataEncoder().encode(\n args as CreateMarketInstructionDataArgs\n ),\n programAddress,\n } as CreateMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountTokenMint,\n TAccountCentralState,\n TAccountMarket,\n TAccountMarketTokenAta,\n TAccountSystemProgram,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram\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 tokenMint: TAccountMetas[1];\n centralState: TAccountMetas[2];\n market: TAccountMetas[3];\n /** ATA owned by market PDA, holds reward tokens */\n marketTokenAta: TAccountMetas[4];\n systemProgram: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n associatedTokenProgram: TAccountMetas[7];\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 < 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 creator: getNextAccount(),\n tokenMint: getNextAccount(),\n centralState: getNextAccount(),\n market: getNextAccount(),\n marketTokenAta: getNextAccount(),\n systemProgram: getNextAccount(),\n tokenProgram: getNextAccount(),\n associatedTokenProgram: 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 getAddressDecoder,\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 DO_UNSTAKE_EARLY_DISCRIMINATOR = new Uint8Array([\n 23, 184, 57, 106, 191, 197, 209, 50,\n]);\n\nexport function getDoUnstakeEarlyDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n DO_UNSTAKE_EARLY_DISCRIMINATOR\n );\n}\n\nexport type DoUnstakeEarlyInstruction<\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 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 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 DoUnstakeEarlyInstructionData = {\n discriminator: ReadonlyUint8Array;\n stakeAccountId: number;\n stakeAccountOwner: Address;\n};\n\nexport type DoUnstakeEarlyInstructionDataArgs = {\n stakeAccountId: number;\n stakeAccountOwner: Address;\n};\n\nexport function getDoUnstakeEarlyInstructionDataEncoder(): FixedSizeEncoder<DoUnstakeEarlyInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['stakeAccountId', getU32Encoder()],\n ['stakeAccountOwner', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: DO_UNSTAKE_EARLY_DISCRIMINATOR })\n );\n}\n\nexport function getDoUnstakeEarlyInstructionDataDecoder(): FixedSizeDecoder<DoUnstakeEarlyInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['stakeAccountId', getU32Decoder()],\n ['stakeAccountOwner', getAddressDecoder()],\n ]);\n}\n\nexport function getDoUnstakeEarlyInstructionDataCodec(): FixedSizeCodec<\n DoUnstakeEarlyInstructionDataArgs,\n DoUnstakeEarlyInstructionData\n> {\n return combineCodec(\n getDoUnstakeEarlyInstructionDataEncoder(),\n getDoUnstakeEarlyInstructionDataDecoder()\n );\n}\n\nexport type DoUnstakeEarlyAsyncInput<\n TAccountSigner 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 market: Address<TAccountMarket>;\n stakeAccount?: Address<TAccountStakeAccount>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market's ATA holding staked tokens */\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n /** Owner's token account to receive refund */\n ownerTokenAccount: Address<TAccountOwnerTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n stakeAccountId: DoUnstakeEarlyInstructionDataArgs['stakeAccountId'];\n stakeAccountOwner: DoUnstakeEarlyInstructionDataArgs['stakeAccountOwner'];\n};\n\nexport async function getDoUnstakeEarlyInstructionAsync<\n TAccountSigner 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: DoUnstakeEarlyAsyncInput<\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n DoUnstakeEarlyInstruction<\n TProgramAddress,\n TAccountSigner,\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 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(expectSome(args.stakeAccountOwner)),\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.marketTokenAta),\n getAccountMeta(accounts.ownerTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getDoUnstakeEarlyInstructionDataEncoder().encode(\n args as DoUnstakeEarlyInstructionDataArgs\n ),\n programAddress,\n } as DoUnstakeEarlyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type DoUnstakeEarlyInput<\n TAccountSigner 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 market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market's ATA holding staked tokens */\n marketTokenAta: Address<TAccountMarketTokenAta>;\n /** Owner's token account to receive refund */\n ownerTokenAccount: Address<TAccountOwnerTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n stakeAccountId: DoUnstakeEarlyInstructionDataArgs['stakeAccountId'];\n stakeAccountOwner: DoUnstakeEarlyInstructionDataArgs['stakeAccountOwner'];\n};\n\nexport function getDoUnstakeEarlyInstruction<\n TAccountSigner 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: DoUnstakeEarlyInput<\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): DoUnstakeEarlyInstruction<\n TProgramAddress,\n TAccountSigner,\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 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.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: getDoUnstakeEarlyInstructionDataEncoder().encode(\n args as DoUnstakeEarlyInstructionDataArgs\n ),\n programAddress,\n } as DoUnstakeEarlyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedDoUnstakeEarlyInstruction<\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 /** Market's ATA holding staked tokens */\n marketTokenAta: TAccountMetas[4];\n /** Owner's token account to receive refund */\n ownerTokenAccount: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n systemProgram: TAccountMetas[7];\n };\n data: DoUnstakeEarlyInstructionData;\n};\n\nexport function parseDoUnstakeEarlyInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedDoUnstakeEarlyInstruction<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 marketTokenAta: getNextAccount(),\n ownerTokenAccount: getNextAccount(),\n tokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getDoUnstakeEarlyInstructionDataDecoder().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 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 EXTEND_REVEAL_PERIOD_DISCRIMINATOR = new Uint8Array([\n 95, 102, 32, 59, 88, 1, 211, 128,\n]);\n\nexport function getExtendRevealPeriodDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n EXTEND_REVEAL_PERIOD_DISCRIMINATOR\n );\n}\n\nexport type ExtendRevealPeriodInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountAuthority 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 TAccountAuthority extends string\n ? ReadonlySignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ExtendRevealPeriodInstructionData = {\n discriminator: ReadonlyUint8Array;\n newTimeToReveal: bigint;\n};\n\nexport type ExtendRevealPeriodInstructionDataArgs = {\n newTimeToReveal: number | bigint;\n};\n\nexport function getExtendRevealPeriodInstructionDataEncoder(): FixedSizeEncoder<ExtendRevealPeriodInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['newTimeToReveal', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: EXTEND_REVEAL_PERIOD_DISCRIMINATOR })\n );\n}\n\nexport function getExtendRevealPeriodInstructionDataDecoder(): FixedSizeDecoder<ExtendRevealPeriodInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['newTimeToReveal', getU64Decoder()],\n ]);\n}\n\nexport function getExtendRevealPeriodInstructionDataCodec(): FixedSizeCodec<\n ExtendRevealPeriodInstructionDataArgs,\n ExtendRevealPeriodInstructionData\n> {\n return combineCodec(\n getExtendRevealPeriodInstructionDataEncoder(),\n getExtendRevealPeriodInstructionDataDecoder()\n );\n}\n\nexport type ExtendRevealPeriodInput<\n TAccountAuthority extends string = string,\n TAccountMarket extends string = string,\n> = {\n authority: TransactionSigner<TAccountAuthority>;\n market: Address<TAccountMarket>;\n newTimeToReveal: ExtendRevealPeriodInstructionDataArgs['newTimeToReveal'];\n};\n\nexport function getExtendRevealPeriodInstruction<\n TAccountAuthority extends string,\n TAccountMarket extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: ExtendRevealPeriodInput<TAccountAuthority, TAccountMarket>,\n config?: { programAddress?: TProgramAddress }\n): ExtendRevealPeriodInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountMarket\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n authority: { value: input.authority ?? 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 // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.market),\n ],\n data: getExtendRevealPeriodInstructionDataEncoder().encode(\n args as ExtendRevealPeriodInstructionDataArgs\n ),\n programAddress,\n } as ExtendRevealPeriodInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountMarket\n >);\n}\n\nexport type ParsedExtendRevealPeriodInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n authority: TAccountMetas[0];\n market: TAccountMetas[1];\n };\n data: ExtendRevealPeriodInstructionData;\n};\n\nexport function parseExtendRevealPeriodInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedExtendRevealPeriodInstruction<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: { authority: getNextAccount(), market: getNextAccount() },\n data: getExtendRevealPeriodInstructionDataDecoder().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 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 {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const INCREASE_REWARD_POOL_DISCRIMINATOR = new Uint8Array([\n 140, 244, 44, 96, 126, 219, 140, 0,\n]);\n\nexport function getIncreaseRewardPoolDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INCREASE_REWARD_POOL_DISCRIMINATOR\n );\n}\n\nexport type IncreaseRewardPoolInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountAuthority 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 TAccountTokenProgram extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountAuthority extends string\n ? ReadonlySignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarketTokenAta extends string\n ? ReadonlyAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type IncreaseRewardPoolInstructionData = {\n discriminator: ReadonlyUint8Array;\n newRewardAmount: bigint;\n};\n\nexport type IncreaseRewardPoolInstructionDataArgs = {\n newRewardAmount: number | bigint;\n};\n\nexport function getIncreaseRewardPoolInstructionDataEncoder(): FixedSizeEncoder<IncreaseRewardPoolInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['newRewardAmount', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: INCREASE_REWARD_POOL_DISCRIMINATOR })\n );\n}\n\nexport function getIncreaseRewardPoolInstructionDataDecoder(): FixedSizeDecoder<IncreaseRewardPoolInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['newRewardAmount', getU64Decoder()],\n ]);\n}\n\nexport function getIncreaseRewardPoolInstructionDataCodec(): FixedSizeCodec<\n IncreaseRewardPoolInstructionDataArgs,\n IncreaseRewardPoolInstructionData\n> {\n return combineCodec(\n getIncreaseRewardPoolInstructionDataEncoder(),\n getIncreaseRewardPoolInstructionDataDecoder()\n );\n}\n\nexport type IncreaseRewardPoolAsyncInput<\n TAccountAuthority extends string = string,\n TAccountMarket extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n authority: TransactionSigner<TAccountAuthority>;\n market: Address<TAccountMarket>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market's ATA holding reward tokens */\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n newRewardAmount: IncreaseRewardPoolInstructionDataArgs['newRewardAmount'];\n};\n\nexport async function getIncreaseRewardPoolInstructionAsync<\n TAccountAuthority extends string,\n TAccountMarket extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: IncreaseRewardPoolAsyncInput<\n TAccountAuthority,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n IncreaseRewardPoolInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\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 authority: { value: input.authority ?? 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: false },\n tokenProgram: { value: input.tokenProgram ?? 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\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getIncreaseRewardPoolInstructionDataEncoder().encode(\n args as IncreaseRewardPoolInstructionDataArgs\n ),\n programAddress,\n } as IncreaseRewardPoolInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\n >);\n}\n\nexport type IncreaseRewardPoolInput<\n TAccountAuthority extends string = string,\n TAccountMarket extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n authority: TransactionSigner<TAccountAuthority>;\n market: Address<TAccountMarket>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market's ATA holding reward tokens */\n marketTokenAta: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n newRewardAmount: IncreaseRewardPoolInstructionDataArgs['newRewardAmount'];\n};\n\nexport function getIncreaseRewardPoolInstruction<\n TAccountAuthority extends string,\n TAccountMarket extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: IncreaseRewardPoolInput<\n TAccountAuthority,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): IncreaseRewardPoolInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n authority: { value: input.authority ?? 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: false },\n tokenProgram: { value: input.tokenProgram ?? 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.authority),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getIncreaseRewardPoolInstructionDataEncoder().encode(\n args as IncreaseRewardPoolInstructionDataArgs\n ),\n programAddress,\n } as IncreaseRewardPoolInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\n >);\n}\n\nexport type ParsedIncreaseRewardPoolInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n authority: TAccountMetas[0];\n market: TAccountMetas[1];\n tokenMint: TAccountMetas[2];\n /** Market's ATA holding reward tokens */\n marketTokenAta: TAccountMetas[3];\n tokenProgram: TAccountMetas[4];\n };\n data: IncreaseRewardPoolInstructionData;\n};\n\nexport function parseIncreaseRewardPoolInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedIncreaseRewardPoolInstruction<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 authority: getNextAccount(),\n market: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getIncreaseRewardPoolInstructionDataDecoder().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 INCREMENT_OPTION_TALLY_DISCRIMINATOR = new Uint8Array([\n 93, 109, 206, 212, 231, 51, 71, 122,\n]);\n\nexport function getIncrementOptionTallyDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INCREMENT_OPTION_TALLY_DISCRIMINATOR\n );\n}\n\nexport type IncrementOptionTallyInstruction<\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 ? ReadonlyAccount<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 IncrementOptionTallyInstructionData = {\n discriminator: ReadonlyUint8Array;\n optionId: bigint;\n stakeAccountId: number;\n};\n\nexport type IncrementOptionTallyInstructionDataArgs = {\n optionId: number | bigint;\n stakeAccountId: number;\n};\n\nexport function getIncrementOptionTallyInstructionDataEncoder(): FixedSizeEncoder<IncrementOptionTallyInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['optionId', getU64Encoder()],\n ['stakeAccountId', getU32Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: INCREMENT_OPTION_TALLY_DISCRIMINATOR,\n })\n );\n}\n\nexport function getIncrementOptionTallyInstructionDataDecoder(): FixedSizeDecoder<IncrementOptionTallyInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['optionId', getU64Decoder()],\n ['stakeAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getIncrementOptionTallyInstructionDataCodec(): FixedSizeCodec<\n IncrementOptionTallyInstructionDataArgs,\n IncrementOptionTallyInstructionData\n> {\n return combineCodec(\n getIncrementOptionTallyInstructionDataEncoder(),\n getIncrementOptionTallyInstructionDataDecoder()\n );\n}\n\nexport type IncrementOptionTallyAsyncInput<\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: IncrementOptionTallyInstructionDataArgs['optionId'];\n stakeAccountId: IncrementOptionTallyInstructionDataArgs['stakeAccountId'];\n};\n\nexport async function getIncrementOptionTallyInstructionAsync<\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: IncrementOptionTallyAsyncInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n IncrementOptionTallyInstruction<\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: false },\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: getIncrementOptionTallyInstructionDataEncoder().encode(\n args as IncrementOptionTallyInstructionDataArgs\n ),\n programAddress,\n } as IncrementOptionTallyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type IncrementOptionTallyInput<\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: IncrementOptionTallyInstructionDataArgs['optionId'];\n stakeAccountId: IncrementOptionTallyInstructionDataArgs['stakeAccountId'];\n};\n\nexport function getIncrementOptionTallyInstruction<\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: IncrementOptionTallyInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): IncrementOptionTallyInstruction<\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: false },\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: getIncrementOptionTallyInstructionDataEncoder().encode(\n args as IncrementOptionTallyInstructionDataArgs\n ),\n programAddress,\n } as IncrementOptionTallyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountOption,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedIncrementOptionTallyInstruction<\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: IncrementOptionTallyInstructionData;\n};\n\nexport function parseIncrementOptionTallyInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedIncrementOptionTallyInstruction<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: getIncrementOptionTallyInstructionDataDecoder().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 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 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 INIT_CENTRAL_STATE_DISCRIMINATOR = new Uint8Array([\n 132, 108, 150, 180, 190, 48, 103, 90,\n]);\n\nexport function getInitCentralStateDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INIT_CENTRAL_STATE_DISCRIMINATOR\n );\n}\n\nexport type InitCentralStateInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountCentralState 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 TAccountCentralState extends string\n ? WritableAccount<TAccountCentralState>\n : TAccountCentralState,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitCentralStateInstructionData = {\n discriminator: ReadonlyUint8Array;\n earlinessCutoffSeconds: bigint;\n minOptionDeposit: bigint;\n protocolFeeBp: number;\n feeRecipient: Address;\n};\n\nexport type InitCentralStateInstructionDataArgs = {\n earlinessCutoffSeconds: number | bigint;\n minOptionDeposit: number | bigint;\n protocolFeeBp: number;\n feeRecipient: Address;\n};\n\nexport function getInitCentralStateInstructionDataEncoder(): FixedSizeEncoder<InitCentralStateInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['earlinessCutoffSeconds', getU64Encoder()],\n ['minOptionDeposit', getU64Encoder()],\n ['protocolFeeBp', getU16Encoder()],\n ['feeRecipient', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: INIT_CENTRAL_STATE_DISCRIMINATOR })\n );\n}\n\nexport function getInitCentralStateInstructionDataDecoder(): FixedSizeDecoder<InitCentralStateInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['earlinessCutoffSeconds', getU64Decoder()],\n ['minOptionDeposit', getU64Decoder()],\n ['protocolFeeBp', getU16Decoder()],\n ['feeRecipient', getAddressDecoder()],\n ]);\n}\n\nexport function getInitCentralStateInstructionDataCodec(): FixedSizeCodec<\n InitCentralStateInstructionDataArgs,\n InitCentralStateInstructionData\n> {\n return combineCodec(\n getInitCentralStateInstructionDataEncoder(),\n getInitCentralStateInstructionDataDecoder()\n );\n}\n\nexport type InitCentralStateAsyncInput<\n TAccountPayer extends string = string,\n TAccountCentralState extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n centralState?: Address<TAccountCentralState>;\n systemProgram?: Address<TAccountSystemProgram>;\n earlinessCutoffSeconds: InitCentralStateInstructionDataArgs['earlinessCutoffSeconds'];\n minOptionDeposit: InitCentralStateInstructionDataArgs['minOptionDeposit'];\n protocolFeeBp: InitCentralStateInstructionDataArgs['protocolFeeBp'];\n feeRecipient: InitCentralStateInstructionDataArgs['feeRecipient'];\n};\n\nexport async function getInitCentralStateInstructionAsync<\n TAccountPayer extends string,\n TAccountCentralState extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitCentralStateAsyncInput<\n TAccountPayer,\n TAccountCentralState,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n InitCentralStateInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountCentralState,\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 centralState: { value: input.centralState ?? 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.centralState.value) {\n accounts.centralState.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 99, 101, 110, 116, 114, 97, 108, 95, 115, 116, 97, 116, 101,\n ])\n ),\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.centralState),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitCentralStateInstructionDataEncoder().encode(\n args as InitCentralStateInstructionDataArgs\n ),\n programAddress,\n } as InitCentralStateInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountCentralState,\n TAccountSystemProgram\n >);\n}\n\nexport type InitCentralStateInput<\n TAccountPayer extends string = string,\n TAccountCentralState extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n centralState: Address<TAccountCentralState>;\n systemProgram?: Address<TAccountSystemProgram>;\n earlinessCutoffSeconds: InitCentralStateInstructionDataArgs['earlinessCutoffSeconds'];\n minOptionDeposit: InitCentralStateInstructionDataArgs['minOptionDeposit'];\n protocolFeeBp: InitCentralStateInstructionDataArgs['protocolFeeBp'];\n feeRecipient: InitCentralStateInstructionDataArgs['feeRecipient'];\n};\n\nexport function getInitCentralStateInstruction<\n TAccountPayer extends string,\n TAccountCentralState extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitCentralStateInput<\n TAccountPayer,\n TAccountCentralState,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): InitCentralStateInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountCentralState,\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 centralState: { value: input.centralState ?? 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.centralState),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitCentralStateInstructionDataEncoder().encode(\n args as InitCentralStateInstructionDataArgs\n ),\n programAddress,\n } as InitCentralStateInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountCentralState,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedInitCentralStateInstruction<\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 centralState: TAccountMetas[1];\n systemProgram: TAccountMetas[2];\n };\n data: InitCentralStateInstructionData;\n};\n\nexport function parseInitCentralStateInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedInitCentralStateInstruction<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 centralState: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitCentralStateInstructionDataDecoder().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 getU128Decoder,\n getU128Encoder,\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 TAccountSigner 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 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 TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitStakeAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n stateNonce: bigint;\n stakeAccountId: number;\n};\n\nexport type InitStakeAccountInstructionDataArgs = {\n stateNonce: number | bigint;\n stakeAccountId: number;\n};\n\nexport function getInitStakeAccountInstructionDataEncoder(): FixedSizeEncoder<InitStakeAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['stateNonce', getU128Encoder()],\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 ['stateNonce', getU128Decoder()],\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 TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n stakeAccount?: Address<TAccountStakeAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n stateNonce: InitStakeAccountInstructionDataArgs['stateNonce'];\n stakeAccountId: InitStakeAccountInstructionDataArgs['stakeAccountId'];\n};\n\nexport async function getInitStakeAccountInstructionAsync<\n TAccountSigner 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 TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n InitStakeAccountInstruction<\n TProgramAddress,\n TAccountSigner,\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 signer: { value: input.signer ?? null, isWritable: true },\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.signer.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.signer),\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 TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSystemProgram\n >);\n}\n\nexport type InitStakeAccountInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n systemProgram?: Address<TAccountSystemProgram>;\n stateNonce: InitStakeAccountInstructionDataArgs['stateNonce'];\n stakeAccountId: InitStakeAccountInstructionDataArgs['stakeAccountId'];\n};\n\nexport function getInitStakeAccountInstruction<\n TAccountSigner 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 TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): InitStakeAccountInstruction<\n TProgramAddress,\n TAccountSigner,\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 signer: { value: input.signer ?? null, isWritable: true },\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.signer),\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 TAccountSigner,\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 signer: TAccountMetas[0];\n market: TAccountMetas[1];\n stakeAccount: TAccountMetas[2];\n systemProgram: TAccountMetas[3];\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 < 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 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 getAddressDecoder,\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_TOKEN_VAULT_DISCRIMINATOR = new Uint8Array([\n 203, 26, 194, 169, 252, 226, 179, 180,\n]);\n\nexport function getInitTokenVaultDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INIT_TOKEN_VAULT_DISCRIMINATOR\n );\n}\n\nexport type InitTokenVaultInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountPayer extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountTokenVault extends string | AccountMeta<string> = string,\n TAccountCentralState 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 TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountTokenVault extends string\n ? WritableAccount<TAccountTokenVault>\n : TAccountTokenVault,\n TAccountCentralState extends string\n ? ReadonlyAccount<TAccountCentralState>\n : TAccountCentralState,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitTokenVaultInstructionData = {\n discriminator: ReadonlyUint8Array;\n fundManager: Address;\n};\n\nexport type InitTokenVaultInstructionDataArgs = { fundManager: Address };\n\nexport function getInitTokenVaultInstructionDataEncoder(): FixedSizeEncoder<InitTokenVaultInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['fundManager', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: INIT_TOKEN_VAULT_DISCRIMINATOR })\n );\n}\n\nexport function getInitTokenVaultInstructionDataDecoder(): FixedSizeDecoder<InitTokenVaultInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['fundManager', getAddressDecoder()],\n ]);\n}\n\nexport function getInitTokenVaultInstructionDataCodec(): FixedSizeCodec<\n InitTokenVaultInstructionDataArgs,\n InitTokenVaultInstructionData\n> {\n return combineCodec(\n getInitTokenVaultInstructionDataEncoder(),\n getInitTokenVaultInstructionDataDecoder()\n );\n}\n\nexport type InitTokenVaultAsyncInput<\n TAccountPayer extends string = string,\n TAccountTokenMint extends string = string,\n TAccountTokenVault extends string = string,\n TAccountCentralState extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n tokenMint: Address<TAccountTokenMint>;\n tokenVault?: Address<TAccountTokenVault>;\n centralState?: Address<TAccountCentralState>;\n systemProgram?: Address<TAccountSystemProgram>;\n fundManager: InitTokenVaultInstructionDataArgs['fundManager'];\n};\n\nexport async function getInitTokenVaultInstructionAsync<\n TAccountPayer extends string,\n TAccountTokenMint extends string,\n TAccountTokenVault extends string,\n TAccountCentralState extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitTokenVaultAsyncInput<\n TAccountPayer,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountCentralState,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n InitTokenVaultInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountCentralState,\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 tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n tokenVault: { value: input.tokenVault ?? null, isWritable: true },\n centralState: { value: input.centralState ?? 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.tokenVault.value) {\n accounts.tokenVault.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116])\n ),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.centralState.value) {\n accounts.centralState.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 99, 101, 110, 116, 114, 97, 108, 95, 115, 116, 97, 116, 101,\n ])\n ),\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.tokenMint),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.centralState),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitTokenVaultInstructionDataEncoder().encode(\n args as InitTokenVaultInstructionDataArgs\n ),\n programAddress,\n } as InitTokenVaultInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountCentralState,\n TAccountSystemProgram\n >);\n}\n\nexport type InitTokenVaultInput<\n TAccountPayer extends string = string,\n TAccountTokenMint extends string = string,\n TAccountTokenVault extends string = string,\n TAccountCentralState extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n payer: TransactionSigner<TAccountPayer>;\n tokenMint: Address<TAccountTokenMint>;\n tokenVault: Address<TAccountTokenVault>;\n centralState: Address<TAccountCentralState>;\n systemProgram?: Address<TAccountSystemProgram>;\n fundManager: InitTokenVaultInstructionDataArgs['fundManager'];\n};\n\nexport function getInitTokenVaultInstruction<\n TAccountPayer extends string,\n TAccountTokenMint extends string,\n TAccountTokenVault extends string,\n TAccountCentralState extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: InitTokenVaultInput<\n TAccountPayer,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountCentralState,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): InitTokenVaultInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountCentralState,\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 tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n tokenVault: { value: input.tokenVault ?? null, isWritable: true },\n centralState: { value: input.centralState ?? 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.payer),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.centralState),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitTokenVaultInstructionDataEncoder().encode(\n args as InitTokenVaultInstructionDataArgs\n ),\n programAddress,\n } as InitTokenVaultInstruction<\n TProgramAddress,\n TAccountPayer,\n TAccountTokenMint,\n TAccountTokenVault,\n TAccountCentralState,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedInitTokenVaultInstruction<\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 tokenMint: TAccountMetas[1];\n tokenVault: TAccountMetas[2];\n centralState: TAccountMetas[3];\n systemProgram: TAccountMetas[4];\n };\n data: InitTokenVaultInstructionData;\n};\n\nexport function parseInitTokenVaultInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedInitTokenVaultInstruction<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 tokenMint: getNextAccount(),\n tokenVault: getNextAccount(),\n centralState: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitTokenVaultInstructionDataDecoder().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 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 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 TAccountCreator 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 TAccountTokenProgram extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountCreator extends string\n ? ReadonlySignerAccount<TAccountCreator> &\n AccountSignerMeta<TAccountCreator>\n : TAccountCreator,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarketTokenAta extends string\n ? ReadonlyAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type OpenMarketInstructionData = {\n discriminator: ReadonlyUint8Array;\n openTimestamp: bigint;\n};\n\nexport type OpenMarketInstructionDataArgs = { openTimestamp: number | bigint };\n\nexport function getOpenMarketInstructionDataEncoder(): FixedSizeEncoder<OpenMarketInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['openTimestamp', 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 ['openTimestamp', 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 OpenMarketAsyncInput<\n TAccountCreator extends string = string,\n TAccountMarket extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n creator: TransactionSigner<TAccountCreator>;\n market: Address<TAccountMarket>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market's ATA holding reward tokens */\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n openTimestamp: OpenMarketInstructionDataArgs['openTimestamp'];\n};\n\nexport async function getOpenMarketInstructionAsync<\n TAccountCreator extends string,\n TAccountMarket extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: OpenMarketAsyncInput<\n TAccountCreator,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n OpenMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\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 creator: { value: input.creator ?? 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: false },\n tokenProgram: { value: input.tokenProgram ?? 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\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.creator),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getOpenMarketInstructionDataEncoder().encode(\n args as OpenMarketInstructionDataArgs\n ),\n programAddress,\n } as OpenMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\n >);\n}\n\nexport type OpenMarketInput<\n TAccountCreator extends string = string,\n TAccountMarket extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n creator: TransactionSigner<TAccountCreator>;\n market: Address<TAccountMarket>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market's ATA holding reward tokens */\n marketTokenAta: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n openTimestamp: OpenMarketInstructionDataArgs['openTimestamp'];\n};\n\nexport function getOpenMarketInstruction<\n TAccountCreator extends string,\n TAccountMarket extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: OpenMarketInput<\n TAccountCreator,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): OpenMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\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: false },\n market: { value: input.market ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? 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.creator),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getOpenMarketInstructionDataEncoder().encode(\n args as OpenMarketInstructionDataArgs\n ),\n programAddress,\n } as OpenMarketInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountTokenProgram\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 creator: TAccountMetas[0];\n market: TAccountMetas[1];\n tokenMint: TAccountMetas[2];\n /** Market's ATA holding reward tokens */\n marketTokenAta: TAccountMetas[3];\n tokenProgram: TAccountMetas[4];\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 < 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 creator: getNextAccount(),\n market: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n tokenProgram: 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 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 RECLAIM_STAKE_DISCRIMINATOR = new Uint8Array([\n 237, 113, 219, 76, 6, 246, 223, 84,\n]);\n\nexport function getReclaimStakeDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n RECLAIM_STAKE_DISCRIMINATOR\n );\n}\n\nexport type ReclaimStakeInstruction<\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 ReclaimStakeInstructionData = {\n discriminator: ReadonlyUint8Array;\n stakeAccountId: number;\n};\n\nexport type ReclaimStakeInstructionDataArgs = { stakeAccountId: number };\n\nexport function getReclaimStakeInstructionDataEncoder(): FixedSizeEncoder<ReclaimStakeInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['stakeAccountId', getU32Encoder()],\n ]),\n (value) => ({ ...value, discriminator: RECLAIM_STAKE_DISCRIMINATOR })\n );\n}\n\nexport function getReclaimStakeInstructionDataDecoder(): FixedSizeDecoder<ReclaimStakeInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['stakeAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getReclaimStakeInstructionDataCodec(): FixedSizeCodec<\n ReclaimStakeInstructionDataArgs,\n ReclaimStakeInstructionData\n> {\n return combineCodec(\n getReclaimStakeInstructionDataEncoder(),\n getReclaimStakeInstructionDataDecoder()\n );\n}\n\nexport type ReclaimStakeAsyncInput<\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 /** Market's ATA holding staked tokens */\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: ReclaimStakeInstructionDataArgs['stakeAccountId'];\n};\n\nexport async function getReclaimStakeInstructionAsync<\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: ReclaimStakeAsyncInput<\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 ReclaimStakeInstruction<\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: getReclaimStakeInstructionDataEncoder().encode(\n args as ReclaimStakeInstructionDataArgs\n ),\n programAddress,\n } as ReclaimStakeInstruction<\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 ReclaimStakeInput<\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 /** Market's ATA holding staked tokens */\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: ReclaimStakeInstructionDataArgs['stakeAccountId'];\n};\n\nexport function getReclaimStakeInstruction<\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: ReclaimStakeInput<\n TAccountSigner,\n TAccountOwner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountOwnerTokenAccount,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): ReclaimStakeInstruction<\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: getReclaimStakeInstructionDataEncoder().encode(\n args as ReclaimStakeInstructionDataArgs\n ),\n programAddress,\n } as ReclaimStakeInstruction<\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 ParsedReclaimStakeInstruction<\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 /** Market's ATA holding staked tokens */\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: ReclaimStakeInstructionData;\n};\n\nexport function parseReclaimStakeInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedReclaimStakeInstruction<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: getReclaimStakeInstructionDataDecoder().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 getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\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 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';\nimport {\n getWinningOptionDecoder,\n getWinningOptionEncoder,\n type WinningOption,\n type WinningOptionArgs,\n} from '../types';\n\nexport const SELECT_WINNING_OPTIONS_DISCRIMINATOR = new Uint8Array([\n 56, 237, 171, 43, 247, 124, 100, 20,\n]);\n\nexport function getSelectWinningOptionsDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n SELECT_WINNING_OPTIONS_DISCRIMINATOR\n );\n}\n\nexport type SelectWinningOptionsInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountAuthority 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 TAccountAuthority extends string\n ? ReadonlySignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type SelectWinningOptionsInstructionData = {\n discriminator: ReadonlyUint8Array;\n selections: Array<WinningOption>;\n};\n\nexport type SelectWinningOptionsInstructionDataArgs = {\n selections: Array<WinningOptionArgs>;\n};\n\nexport function getSelectWinningOptionsInstructionDataEncoder(): Encoder<SelectWinningOptionsInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['selections', getArrayEncoder(getWinningOptionEncoder())],\n ]),\n (value) => ({\n ...value,\n discriminator: SELECT_WINNING_OPTIONS_DISCRIMINATOR,\n })\n );\n}\n\nexport function getSelectWinningOptionsInstructionDataDecoder(): Decoder<SelectWinningOptionsInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['selections', getArrayDecoder(getWinningOptionDecoder())],\n ]);\n}\n\nexport function getSelectWinningOptionsInstructionDataCodec(): Codec<\n SelectWinningOptionsInstructionDataArgs,\n SelectWinningOptionsInstructionData\n> {\n return combineCodec(\n getSelectWinningOptionsInstructionDataEncoder(),\n getSelectWinningOptionsInstructionDataDecoder()\n );\n}\n\nexport type SelectWinningOptionsInput<\n TAccountAuthority extends string = string,\n TAccountMarket extends string = string,\n> = {\n authority: TransactionSigner<TAccountAuthority>;\n market: Address<TAccountMarket>;\n selections: SelectWinningOptionsInstructionDataArgs['selections'];\n};\n\nexport function getSelectWinningOptionsInstruction<\n TAccountAuthority extends string,\n TAccountMarket extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: SelectWinningOptionsInput<TAccountAuthority, TAccountMarket>,\n config?: { programAddress?: TProgramAddress }\n): SelectWinningOptionsInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountMarket\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n authority: { value: input.authority ?? 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 // Original args.\n const args = { ...input };\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.market),\n ],\n data: getSelectWinningOptionsInstructionDataEncoder().encode(\n args as SelectWinningOptionsInstructionDataArgs\n ),\n programAddress,\n } as SelectWinningOptionsInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountMarket\n >);\n}\n\nexport type ParsedSelectWinningOptionsInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n authority: TAccountMetas[0];\n market: TAccountMetas[1];\n };\n data: SelectWinningOptionsInstructionData;\n};\n\nexport function parseSelectWinningOptionsInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedSelectWinningOptionsInstruction<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: { authority: getNextAccount(), market: getNextAccount() },\n data: getSelectWinningOptionsInstructionDataDecoder().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 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 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 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 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 TAccountTokenVault extends string | AccountMeta<string> = string,\n TAccountTokenVaultAta 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 ? 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 TAccountTokenVault extends string\n ? WritableAccount<TAccountTokenVault>\n : TAccountTokenVault,\n TAccountTokenVaultAta extends string\n ? WritableAccount<TAccountTokenVaultAta>\n : TAccountTokenVaultAta,\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};\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};\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 ]),\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 ]);\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 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 TAccountTokenVault extends string = string,\n TAccountTokenVaultAta 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 market: Address<TAccountMarket>;\n stakeAccount?: Address<TAccountStakeAccount>;\n tokenMint: Address<TAccountTokenMint>;\n signerTokenAccount: Address<TAccountSignerTokenAccount>;\n /** Market's ATA for holding staked tokens */\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n /** Token vault for fee collection */\n tokenVault?: Address<TAccountTokenVault>;\n /** Token vault ATA for fee tokens */\n tokenVaultAta?: Address<TAccountTokenVaultAta>;\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};\n\nexport async function getStakeInstructionAsync<\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 TAccountTokenVault extends string,\n TAccountTokenVaultAta 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 TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenVault,\n TAccountTokenVaultAta,\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 TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenVault,\n TAccountTokenVaultAta,\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: 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 tokenVault: { value: input.tokenVault ?? null, isWritable: true },\n tokenVaultAta: { value: input.tokenVaultAta ?? 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.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.tokenVault.value) {\n accounts.tokenVault.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116])\n ),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.tokenVaultAta.value) {\n accounts.tokenVaultAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.tokenVault.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.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.signerTokenAccount),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.tokenVaultAta),\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 TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenVault,\n TAccountTokenVaultAta,\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 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 TAccountTokenVault extends string = string,\n TAccountTokenVaultAta 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 market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n tokenMint: Address<TAccountTokenMint>;\n signerTokenAccount: Address<TAccountSignerTokenAccount>;\n /** Market's ATA for holding staked tokens */\n marketTokenAta: Address<TAccountMarketTokenAta>;\n /** Token vault for fee collection */\n tokenVault: Address<TAccountTokenVault>;\n /** Token vault ATA for fee tokens */\n tokenVaultAta: Address<TAccountTokenVaultAta>;\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};\n\nexport function getStakeInstruction<\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 TAccountTokenVault extends string,\n TAccountTokenVaultAta 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 TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenVault,\n TAccountTokenVaultAta,\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 TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenVault,\n TAccountTokenVaultAta,\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: 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 tokenVault: { value: input.tokenVault ?? null, isWritable: true },\n tokenVaultAta: { value: input.tokenVaultAta ?? 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.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.signerTokenAccount),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.tokenVaultAta),\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 TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountSignerTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenVault,\n TAccountTokenVaultAta,\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 market: TAccountMetas[1];\n stakeAccount: TAccountMetas[2];\n tokenMint: TAccountMetas[3];\n signerTokenAccount: TAccountMetas[4];\n /** Market's ATA for holding staked tokens */\n marketTokenAta: TAccountMetas[5];\n /** Token vault for fee collection */\n tokenVault: TAccountMetas[6];\n /** Token vault ATA for fee tokens */\n tokenVaultAta: TAccountMetas[7];\n tokenProgram: TAccountMetas[8];\n signPdaAccount: TAccountMetas[9];\n mxeAccount: TAccountMetas[10];\n mempoolAccount: TAccountMetas[11];\n executingPool: TAccountMetas[12];\n computationAccount: TAccountMetas[13];\n compDefAccount: TAccountMetas[14];\n clusterAccount: TAccountMetas[15];\n poolAccount: TAccountMetas[16];\n clockAccount: TAccountMetas[17];\n systemProgram: TAccountMetas[18];\n arciumProgram: TAccountMetas[19];\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 < 20) {\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 tokenVault: getNextAccount(),\n tokenVaultAta: 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 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 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> = {\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: 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 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 >,\n config?: { programAddress?: TProgramAddress }\n): StakeCallbackInstruction<\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: 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 >);\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 };\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 < 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: 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 getAddressDecoder,\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 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 TRANSFER_CENTRAL_STATE_AUTHORITY_DISCRIMINATOR = new Uint8Array([\n 237, 33, 80, 239, 189, 157, 253, 90,\n]);\n\nexport function getTransferCentralStateAuthorityDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n TRANSFER_CENTRAL_STATE_AUTHORITY_DISCRIMINATOR\n );\n}\n\nexport type TransferCentralStateAuthorityInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountAuthority extends string | AccountMeta<string> = string,\n TAccountCentralState extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountAuthority extends string\n ? ReadonlySignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountCentralState extends string\n ? WritableAccount<TAccountCentralState>\n : TAccountCentralState,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type TransferCentralStateAuthorityInstructionData = {\n discriminator: ReadonlyUint8Array;\n newAuthority: Address;\n};\n\nexport type TransferCentralStateAuthorityInstructionDataArgs = {\n newAuthority: Address;\n};\n\nexport function getTransferCentralStateAuthorityInstructionDataEncoder(): FixedSizeEncoder<TransferCentralStateAuthorityInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['newAuthority', getAddressEncoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: TRANSFER_CENTRAL_STATE_AUTHORITY_DISCRIMINATOR,\n })\n );\n}\n\nexport function getTransferCentralStateAuthorityInstructionDataDecoder(): FixedSizeDecoder<TransferCentralStateAuthorityInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['newAuthority', getAddressDecoder()],\n ]);\n}\n\nexport function getTransferCentralStateAuthorityInstructionDataCodec(): FixedSizeCodec<\n TransferCentralStateAuthorityInstructionDataArgs,\n TransferCentralStateAuthorityInstructionData\n> {\n return combineCodec(\n getTransferCentralStateAuthorityInstructionDataEncoder(),\n getTransferCentralStateAuthorityInstructionDataDecoder()\n );\n}\n\nexport type TransferCentralStateAuthorityAsyncInput<\n TAccountAuthority extends string = string,\n TAccountCentralState extends string = string,\n> = {\n authority: TransactionSigner<TAccountAuthority>;\n centralState?: Address<TAccountCentralState>;\n newAuthority: TransferCentralStateAuthorityInstructionDataArgs['newAuthority'];\n};\n\nexport async function getTransferCentralStateAuthorityInstructionAsync<\n TAccountAuthority extends string,\n TAccountCentralState extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: TransferCentralStateAuthorityAsyncInput<\n TAccountAuthority,\n TAccountCentralState\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n TransferCentralStateAuthorityInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountCentralState\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n authority: { value: input.authority ?? null, isWritable: false },\n centralState: { value: input.centralState ?? 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.centralState.value) {\n accounts.centralState.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 99, 101, 110, 116, 114, 97, 108, 95, 115, 116, 97, 116, 101,\n ])\n ),\n ],\n });\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.centralState),\n ],\n data: getTransferCentralStateAuthorityInstructionDataEncoder().encode(\n args as TransferCentralStateAuthorityInstructionDataArgs\n ),\n programAddress,\n } as TransferCentralStateAuthorityInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountCentralState\n >);\n}\n\nexport type TransferCentralStateAuthorityInput<\n TAccountAuthority extends string = string,\n TAccountCentralState extends string = string,\n> = {\n authority: TransactionSigner<TAccountAuthority>;\n centralState: Address<TAccountCentralState>;\n newAuthority: TransferCentralStateAuthorityInstructionDataArgs['newAuthority'];\n};\n\nexport function getTransferCentralStateAuthorityInstruction<\n TAccountAuthority extends string,\n TAccountCentralState extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: TransferCentralStateAuthorityInput<\n TAccountAuthority,\n TAccountCentralState\n >,\n config?: { programAddress?: TProgramAddress }\n): TransferCentralStateAuthorityInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountCentralState\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n authority: { value: input.authority ?? null, isWritable: false },\n centralState: { value: input.centralState ?? 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.authority),\n getAccountMeta(accounts.centralState),\n ],\n data: getTransferCentralStateAuthorityInstructionDataEncoder().encode(\n args as TransferCentralStateAuthorityInstructionDataArgs\n ),\n programAddress,\n } as TransferCentralStateAuthorityInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountCentralState\n >);\n}\n\nexport type ParsedTransferCentralStateAuthorityInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n authority: TAccountMetas[0];\n centralState: TAccountMetas[1];\n };\n data: TransferCentralStateAuthorityInstructionData;\n};\n\nexport function parseTransferCentralStateAuthorityInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedTransferCentralStateAuthorityInstruction<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: { authority: getNextAccount(), centralState: getNextAccount() },\n data: getTransferCentralStateAuthorityInstructionDataDecoder().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 UNSTAKE_EARLY_DISCRIMINATOR = new Uint8Array([\n 246, 212, 81, 180, 65, 2, 126, 125,\n]);\n\nexport function getUnstakeEarlyDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n UNSTAKE_EARLY_DISCRIMINATOR\n );\n}\n\nexport type UnstakeEarlyInstruction<\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 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 ...TRemainingAccounts,\n ]\n >;\n\nexport type UnstakeEarlyInstructionData = {\n discriminator: ReadonlyUint8Array;\n stakeAccountId: number;\n};\n\nexport type UnstakeEarlyInstructionDataArgs = { stakeAccountId: number };\n\nexport function getUnstakeEarlyInstructionDataEncoder(): FixedSizeEncoder<UnstakeEarlyInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['stakeAccountId', getU32Encoder()],\n ]),\n (value) => ({ ...value, discriminator: UNSTAKE_EARLY_DISCRIMINATOR })\n );\n}\n\nexport function getUnstakeEarlyInstructionDataDecoder(): FixedSizeDecoder<UnstakeEarlyInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['stakeAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getUnstakeEarlyInstructionDataCodec(): FixedSizeCodec<\n UnstakeEarlyInstructionDataArgs,\n UnstakeEarlyInstructionData\n> {\n return combineCodec(\n getUnstakeEarlyInstructionDataEncoder(),\n getUnstakeEarlyInstructionDataDecoder()\n );\n}\n\nexport type UnstakeEarlyAsyncInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n stakeAccount?: Address<TAccountStakeAccount>;\n stakeAccountId: UnstakeEarlyInstructionDataArgs['stakeAccountId'];\n};\n\nexport async function getUnstakeEarlyInstructionAsync<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: UnstakeEarlyAsyncInput<\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n UnstakeEarlyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount\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 };\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\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 ],\n data: getUnstakeEarlyInstructionDataEncoder().encode(\n args as UnstakeEarlyInstructionDataArgs\n ),\n programAddress,\n } as UnstakeEarlyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount\n >);\n}\n\nexport type UnstakeEarlyInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n> = {\n signer: TransactionSigner<TAccountSigner>;\n market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n stakeAccountId: UnstakeEarlyInstructionDataArgs['stakeAccountId'];\n};\n\nexport function getUnstakeEarlyInstruction<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: UnstakeEarlyInput<\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount\n >,\n config?: { programAddress?: TProgramAddress }\n): UnstakeEarlyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount\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 };\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.signer),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.stakeAccount),\n ],\n data: getUnstakeEarlyInstructionDataEncoder().encode(\n args as UnstakeEarlyInstructionDataArgs\n ),\n programAddress,\n } as UnstakeEarlyInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount\n >);\n}\n\nexport type ParsedUnstakeEarlyInstruction<\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 };\n data: UnstakeEarlyInstructionData;\n};\n\nexport function parseUnstakeEarlyInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedUnstakeEarlyInstruction<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 stakeAccount: getNextAccount(),\n },\n data: getUnstakeEarlyInstructionDataDecoder().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 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 { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_CENTRAL_STATE_DISCRIMINATOR = new Uint8Array([\n 228, 211, 60, 53, 115, 153, 149, 194,\n]);\n\nexport function getUpdateCentralStateDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n UPDATE_CENTRAL_STATE_DISCRIMINATOR\n );\n}\n\nexport type UpdateCentralStateInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountAuthority extends string | AccountMeta<string> = string,\n TAccountCentralState extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountAuthority extends string\n ? ReadonlySignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountCentralState extends string\n ? WritableAccount<TAccountCentralState>\n : TAccountCentralState,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type UpdateCentralStateInstructionData = {\n discriminator: ReadonlyUint8Array;\n earlinessCutoffSeconds: bigint;\n minOptionDeposit: bigint;\n protocolFeeBp: number;\n feeRecipient: Address;\n};\n\nexport type UpdateCentralStateInstructionDataArgs = {\n earlinessCutoffSeconds: number | bigint;\n minOptionDeposit: number | bigint;\n protocolFeeBp: number;\n feeRecipient: Address;\n};\n\nexport function getUpdateCentralStateInstructionDataEncoder(): FixedSizeEncoder<UpdateCentralStateInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['earlinessCutoffSeconds', getU64Encoder()],\n ['minOptionDeposit', getU64Encoder()],\n ['protocolFeeBp', getU16Encoder()],\n ['feeRecipient', getAddressEncoder()],\n ]),\n (value) => ({ ...value, discriminator: UPDATE_CENTRAL_STATE_DISCRIMINATOR })\n );\n}\n\nexport function getUpdateCentralStateInstructionDataDecoder(): FixedSizeDecoder<UpdateCentralStateInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['earlinessCutoffSeconds', getU64Decoder()],\n ['minOptionDeposit', getU64Decoder()],\n ['protocolFeeBp', getU16Decoder()],\n ['feeRecipient', getAddressDecoder()],\n ]);\n}\n\nexport function getUpdateCentralStateInstructionDataCodec(): FixedSizeCodec<\n UpdateCentralStateInstructionDataArgs,\n UpdateCentralStateInstructionData\n> {\n return combineCodec(\n getUpdateCentralStateInstructionDataEncoder(),\n getUpdateCentralStateInstructionDataDecoder()\n );\n}\n\nexport type UpdateCentralStateAsyncInput<\n TAccountAuthority extends string = string,\n TAccountCentralState extends string = string,\n> = {\n authority: TransactionSigner<TAccountAuthority>;\n centralState?: Address<TAccountCentralState>;\n earlinessCutoffSeconds: UpdateCentralStateInstructionDataArgs['earlinessCutoffSeconds'];\n minOptionDeposit: UpdateCentralStateInstructionDataArgs['minOptionDeposit'];\n protocolFeeBp: UpdateCentralStateInstructionDataArgs['protocolFeeBp'];\n feeRecipient: UpdateCentralStateInstructionDataArgs['feeRecipient'];\n};\n\nexport async function getUpdateCentralStateInstructionAsync<\n TAccountAuthority extends string,\n TAccountCentralState extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: UpdateCentralStateAsyncInput<TAccountAuthority, TAccountCentralState>,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n UpdateCentralStateInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountCentralState\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n authority: { value: input.authority ?? null, isWritable: false },\n centralState: { value: input.centralState ?? 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.centralState.value) {\n accounts.centralState.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 99, 101, 110, 116, 114, 97, 108, 95, 115, 116, 97, 116, 101,\n ])\n ),\n ],\n });\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.centralState),\n ],\n data: getUpdateCentralStateInstructionDataEncoder().encode(\n args as UpdateCentralStateInstructionDataArgs\n ),\n programAddress,\n } as UpdateCentralStateInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountCentralState\n >);\n}\n\nexport type UpdateCentralStateInput<\n TAccountAuthority extends string = string,\n TAccountCentralState extends string = string,\n> = {\n authority: TransactionSigner<TAccountAuthority>;\n centralState: Address<TAccountCentralState>;\n earlinessCutoffSeconds: UpdateCentralStateInstructionDataArgs['earlinessCutoffSeconds'];\n minOptionDeposit: UpdateCentralStateInstructionDataArgs['minOptionDeposit'];\n protocolFeeBp: UpdateCentralStateInstructionDataArgs['protocolFeeBp'];\n feeRecipient: UpdateCentralStateInstructionDataArgs['feeRecipient'];\n};\n\nexport function getUpdateCentralStateInstruction<\n TAccountAuthority extends string,\n TAccountCentralState extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: UpdateCentralStateInput<TAccountAuthority, TAccountCentralState>,\n config?: { programAddress?: TProgramAddress }\n): UpdateCentralStateInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountCentralState\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n authority: { value: input.authority ?? null, isWritable: false },\n centralState: { value: input.centralState ?? 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.authority),\n getAccountMeta(accounts.centralState),\n ],\n data: getUpdateCentralStateInstructionDataEncoder().encode(\n args as UpdateCentralStateInstructionDataArgs\n ),\n programAddress,\n } as UpdateCentralStateInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountCentralState\n >);\n}\n\nexport type ParsedUpdateCentralStateInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n authority: TAccountMetas[0];\n centralState: TAccountMetas[1];\n };\n data: UpdateCentralStateInstructionData;\n};\n\nexport function parseUpdateCentralStateInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedUpdateCentralStateInstruction<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: { authority: getNextAccount(), centralState: getNextAccount() },\n data: getUpdateCentralStateInstructionDataDecoder().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 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 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 TAccountCreator 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 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 TAccountCreator extends string\n ? ReadonlySignerAccount<TAccountCreator> &\n AccountSignerMeta<TAccountCreator>\n : TAccountCreator,\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 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 TAccountCreator extends string = string,\n TAccountMarket 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 creator: TransactionSigner<TAccountCreator>;\n market: Address<TAccountMarket>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market's ATA holding reward tokens */\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n /** Creator-specified destination for refunded reward tokens */\n refundTokenAccount: Address<TAccountRefundTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport async function getWithdrawRewardInstructionAsync<\n TAccountCreator extends string,\n TAccountMarket 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 TAccountCreator,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n WithdrawRewardInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountMarket,\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 creator: { value: input.creator ?? 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 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.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.creator),\n getAccountMeta(accounts.market),\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 TAccountCreator,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type WithdrawRewardInput<\n TAccountCreator extends string = string,\n TAccountMarket 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 creator: TransactionSigner<TAccountCreator>;\n market: Address<TAccountMarket>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market's ATA holding reward tokens */\n marketTokenAta: Address<TAccountMarketTokenAta>;\n /** Creator-specified destination for refunded reward tokens */\n refundTokenAccount: Address<TAccountRefundTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport function getWithdrawRewardInstruction<\n TAccountCreator extends string,\n TAccountMarket 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 TAccountCreator,\n TAccountMarket,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): WithdrawRewardInstruction<\n TProgramAddress,\n TAccountCreator,\n TAccountMarket,\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 creator: { value: input.creator ?? 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 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.creator),\n getAccountMeta(accounts.market),\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 TAccountCreator,\n TAccountMarket,\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 creator: TAccountMetas[0];\n market: TAccountMetas[1];\n tokenMint: TAccountMetas[2];\n /** Market's ATA holding reward tokens */\n marketTokenAta: TAccountMetas[3];\n /** Creator-specified destination for refunded reward tokens */\n refundTokenAccount: TAccountMetas[4];\n tokenProgram: TAccountMetas[5];\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 < 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 creator: getNextAccount(),\n market: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n refundTokenAccount: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getWithdrawRewardInstructionDataDecoder().decode(instruction.data),\n };\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getInitTokenVaultInstructionAsync,\n type InitTokenVaultInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface InitTokenVaultParams extends BaseInstructionParams {\n /** The signer/payer for the transaction */\n payer: TransactionSigner;\n /** The token mint for this vault */\n tokenMint: Address;\n /** Address that can withdraw tokens from the vault */\n fundManager: Address;\n}\n\nexport async function initTokenVault(\n input: InitTokenVaultParams\n): Promise<InitTokenVaultInstruction<string>> {\n const { programAddress, payer, tokenMint, fundManager } = input;\n\n return getInitTokenVaultInstructionAsync(\n {\n payer,\n tokenMint,\n fundManager,\n },\n programAddress ? { programAddress } : undefined\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 tokenMint: Address;\n tokenProgram: Address;\n marketIndex: bigint;\n rewardAmount: bigint;\n timeToStake: bigint;\n timeToReveal: bigint;\n marketAuthority: Address | null;\n unstakeDelaySeconds: bigint;\n authorizedReaderPubkey: ByteArray;\n allowClosingEarly: boolean;\n}\n\nexport async function createMarket(\n input: CreateMarketParams\n): Promise<CreateMarketInstruction<string>> {\n const {\n creator,\n tokenMint,\n tokenProgram,\n marketIndex,\n rewardAmount,\n timeToReveal,\n timeToStake,\n marketAuthority,\n unstakeDelaySeconds,\n authorizedReaderPubkey,\n allowClosingEarly,\n programAddress,\n } = input;\n\n return getCreateMarketInstructionAsync(\n {\n creator,\n tokenMint,\n tokenProgram,\n marketIndex,\n rewardAmount,\n timeToStake,\n timeToReveal,\n marketAuthority,\n unstakeDelaySeconds,\n authorizedReaderPubkey: toNumberArray(authorizedReaderPubkey),\n allowClosingEarly,\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} 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 fetchMXEAccount,\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 return fetchMXEAccount(rpc, mxeAddress)\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 market: Address;\n stakeAccountId: number;\n tokenMint: Address;\n signerTokenAccount: Address;\n marketTokenAta: Address;\n tokenVault: Address;\n tokenVaultAta: Address;\n tokenProgram: Address;\n amount: bigint;\n selectedOptionCiphertext: ByteArray;\n inputNonce: bigint;\n authorizedReaderNonce: bigint;\n userPubkey: ByteArray;\n}\n\nexport async function stake(\n input: StakeParams,\n config: ArciumConfig\n): Promise<StakeInstruction<string>> {\n const {\n programAddress,\n signer,\n market,\n stakeAccountId,\n tokenMint,\n signerTokenAccount,\n marketTokenAta,\n tokenVault,\n tokenVaultAta,\n tokenProgram,\n amount,\n selectedOptionCiphertext,\n inputNonce,\n authorizedReaderNonce,\n userPubkey,\n } = input;\n\n return getStakeInstructionAsync(\n {\n ...getComputeAccounts(\"stake\", config),\n signer,\n market,\n stakeAccountId,\n tokenMint,\n signerTokenAccount,\n marketTokenAta,\n tokenVault,\n tokenVaultAta,\n tokenProgram,\n amount,\n selectedOptionCiphertext: toNumberArray(selectedOptionCiphertext),\n inputNonce,\n authorizedReaderNonce,\n userPubkey: toNumberArray(userPubkey),\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 creator: 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 creator: TransactionSigner;\n market: Address;\n tokenMint: Address;\n marketTokenAta: Address;\n tokenProgram: Address;\n openTimestamp: 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 getSelectWinningOptionsInstruction,\n type SelectWinningOptionsInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\nimport { type WinningOptionArgs } from \"../generated/types\";\n\nexport interface SelectWinningOptionsParams extends BaseInstructionParams {\n authority: TransactionSigner;\n market: Address;\n selections: Array<WinningOptionArgs>;\n}\n\nexport function selectWinningOptions(\n input: SelectWinningOptionsParams\n): SelectWinningOptionsInstruction<string> {\n const { programAddress, ...params } = input;\n return getSelectWinningOptionsInstruction(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getExtendRevealPeriodInstruction,\n type ExtendRevealPeriodInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface ExtendRevealPeriodParams extends BaseInstructionParams {\n authority: TransactionSigner;\n market: Address;\n newTimeToReveal: bigint;\n}\n\nexport function extendRevealPeriod(\n input: ExtendRevealPeriodParams\n): ExtendRevealPeriodInstruction<string> {\n const { programAddress, ...params } = input;\n return getExtendRevealPeriodInstruction(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getIncreaseRewardPoolInstruction,\n type IncreaseRewardPoolInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface IncreaseRewardPoolParams extends BaseInstructionParams {\n authority: TransactionSigner;\n market: Address;\n tokenMint: Address;\n marketTokenAta: Address;\n tokenProgram: Address;\n newRewardAmount: bigint;\n}\n\nexport function increaseRewardPool(\n input: IncreaseRewardPoolParams\n): IncreaseRewardPoolInstruction<string> {\n const { programAddress, ...params } = input;\n return getIncreaseRewardPoolInstruction(\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 signer: TransactionSigner;\n market: Address;\n stateNonce: bigint;\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 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 getReclaimStakeInstructionAsync,\n type ReclaimStakeInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface ReclaimStakeParams extends BaseInstructionParams {\n signer: TransactionSigner;\n owner: Address;\n market: Address;\n tokenMint: Address;\n marketTokenAta: Address;\n ownerTokenAccount: Address;\n tokenProgram: Address;\n stakeAccountId: number;\n}\n\nexport async function reclaimStake(\n input: ReclaimStakeParams,\n): Promise<ReclaimStakeInstruction<string>> {\n const { programAddress, ...params } = input;\n\n return getReclaimStakeInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getIncrementOptionTallyInstructionAsync,\n type IncrementOptionTallyInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface IncrementOptionTallyParams extends BaseInstructionParams {\n signer: TransactionSigner;\n owner: Address;\n market: Address;\n optionId: number | bigint;\n stakeAccountId: number;\n}\n\nexport async function incrementOptionTally(\n input: IncrementOptionTallyParams\n): Promise<IncrementOptionTallyInstruction<string>> {\n const { programAddress, ...params } = input;\n return getIncrementOptionTallyInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getUnstakeEarlyInstructionAsync,\n type UnstakeEarlyInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface UnstakeEarlyParams extends BaseInstructionParams {\n signer: TransactionSigner;\n market: Address;\n stakeAccountId: number;\n}\n\nexport async function unstakeEarly(\n input: UnstakeEarlyParams\n): Promise<UnstakeEarlyInstruction<string>> {\n const { programAddress, ...params } = input;\n return getUnstakeEarlyInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getDoUnstakeEarlyInstructionAsync,\n type DoUnstakeEarlyInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface DoUnstakeEarlyParams extends BaseInstructionParams {\n signer: TransactionSigner;\n market: Address;\n tokenMint: Address;\n marketTokenAta: Address;\n ownerTokenAccount: Address;\n tokenProgram: Address;\n stakeAccountId: number;\n stakeAccountOwner: Address;\n}\n\nexport async function doUnstakeEarly(\n input: DoUnstakeEarlyParams,\n): Promise<DoUnstakeEarlyInstruction<string>> {\n const { programAddress, ...params } = input;\n\n return getDoUnstakeEarlyInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import {\n type Address,\n getProgramDerivedAddress,\n type ProgramDerivedAddress,\n} from \"@solana/kit\";\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from \"../generated\";\n\nexport const CENTRAL_STATE_SEED = \"central_state\";\n\nexport async function getCentralStateAddress(\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [CENTRAL_STATE_SEED],\n });\n}\n","import { type TransactionSigner, type Address, type Instruction } from \"@solana/kit\";\nimport {\n fetchMaybeCentralState,\n getInitCentralStateInstructionAsync,\n getUpdateCentralStateInstructionAsync,\n} from \"../generated\";\nimport { getCentralStateAddress } from \"../accounts/centralState\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface EnsureCentralStateParams extends BaseInstructionParams {\n signer: TransactionSigner;\n earlinessCutoffSeconds: bigint | number;\n minOptionDeposit: bigint | number;\n protocolFeeBp: number;\n feeRecipient: Address;\n}\n\nexport async function ensureCentralState(\n rpc: Parameters<typeof fetchMaybeCentralState>[0],\n params: EnsureCentralStateParams,\n): Promise<Instruction | null> {\n const { programAddress, signer, ...args } = params;\n const config = programAddress ? { programAddress } : undefined;\n\n const [centralStateAddress] = await getCentralStateAddress(programAddress);\n const existing = await fetchMaybeCentralState(rpc, centralStateAddress);\n\n if (existing.exists) {\n const s = existing.data;\n if (\n s.earlinessCutoffSeconds === BigInt(args.earlinessCutoffSeconds) &&\n s.minOptionDeposit === BigInt(args.minOptionDeposit) &&\n s.protocolFeeBp === args.protocolFeeBp &&\n s.feeRecipient === args.feeRecipient\n ) {\n return null;\n }\n\n return getUpdateCentralStateInstructionAsync(\n { authority: signer, ...args },\n config,\n ) as Promise<Instruction>;\n }\n\n return getInitCentralStateInstructionAsync(\n { payer: signer, ...args },\n config,\n ) as Promise<Instruction>;\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 creator: 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 {\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 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(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 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 {\n type Address,\n getAddressEncoder,\n getProgramDerivedAddress,\n type ProgramDerivedAddress,\n} from \"@solana/kit\";\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from \"../generated\";\n\nexport const TOKEN_VAULT_SEED = \"token_vault\";\n\nexport async function getTokenVaultAddress(\n mint: Address,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [TOKEN_VAULT_SEED, getAddressEncoder().encode(mint)],\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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","names":["address","import_kit","address","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","LocalCircuitSource","import_kit","import_kit","import_kit","import_kit","MxeStatus","import_kit","import_kit","import_kit","import_kit","import_kit","Output","import_kit","Parameter","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","import_kit","OpportunityMarketAccount","OpportunityMarketInstruction","import_kit","import_kit","kitIsTransactionSigner","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_client","import_web3","import_bn","toAddress","BN","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_client","import_bn","import_crypto"]}