@bench.games/opportunity-markets 0.2.8 → 0.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.js +100 -66
- package/dist/index.cjs +20 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +18 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +100 -66
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -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/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/rewardAddedEvent.ts","../src/generated/types/rewardClaimedEvent.ts","../src/generated/types/rewardWithdrawnEvent.ts","../src/generated/types/stakeAccountInitializedEvent.ts","../src/generated/types/stakedEvent.ts","../src/generated/types/stakeOutput.ts","../src/generated/types/stakeOutputStruct0.ts","../src/generated/types/stakeReclaimedEvent.ts","../src/generated/types/stakeRevealedEvent.ts","../src/generated/types/stuckStakeClosedEvent.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/opportunityMarketSponsor.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/addReward.ts","../src/generated/instructions/claimFees.ts","../src/generated/instructions/closeStakeAccount.ts","../src/generated/instructions/closeStuckStakeAccount.ts","../src/generated/instructions/createMarket.ts","../src/generated/instructions/doUnstakeEarly.ts","../src/generated/instructions/endRevealPeriod.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/endRevealPeriod.ts","../src/instructions/addReward.ts","../src/instructions/initStakeAccount.ts","../src/instructions/closeStakeAccount.ts","../src/instructions/closeStuckStakeAccount.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/opportunityMarketSponsor.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 getArrayDecoder,\n getArrayEncoder,\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 minimumInitialRevealPeriod: bigint;\n /** Reserved for future use */\n reserved: Array<number>;\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 minimumInitialRevealPeriod: number | bigint;\n /** Reserved for future use */\n reserved: Array<number>;\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 ['minimumInitialRevealPeriod', getU64Encoder()],\n ['reserved', getArrayEncoder(getU8Encoder(), { size: 128 })],\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 ['minimumInitialRevealPeriod', getU64Decoder()],\n ['reserved', getArrayDecoder(getU8Decoder(), { size: 128 })],\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 timeToStake: bigint;\n timeToReveal: bigint;\n earlinessCutoffSeconds: 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 timeToStake: number | bigint;\n timeToReveal: number | bigint;\n earlinessCutoffSeconds: 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 ['timeToStake', getU64Encoder()],\n ['timeToReveal', getU64Encoder()],\n ['earlinessCutoffSeconds', 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 ['timeToStake', getU64Decoder()],\n ['timeToReveal', getU64Decoder()],\n ['earlinessCutoffSeconds', 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 getBooleanDecoder,\n getBooleanEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RewardAddedEvent = {\n market: Address;\n sponsor: Address;\n amount: bigint;\n totalRewardAmount: bigint;\n locked: boolean;\n timestamp: bigint;\n};\n\nexport type RewardAddedEventArgs = {\n market: Address;\n sponsor: Address;\n amount: number | bigint;\n totalRewardAmount: number | bigint;\n locked: boolean;\n timestamp: number | bigint;\n};\n\nexport function getRewardAddedEventEncoder(): FixedSizeEncoder<RewardAddedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['sponsor', getAddressEncoder()],\n ['amount', getU64Encoder()],\n ['totalRewardAmount', getU64Encoder()],\n ['locked', getBooleanEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRewardAddedEventDecoder(): FixedSizeDecoder<RewardAddedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['sponsor', getAddressDecoder()],\n ['amount', getU64Decoder()],\n ['totalRewardAmount', getU64Decoder()],\n ['locked', getBooleanDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRewardAddedEventCodec(): FixedSizeCodec<\n RewardAddedEventArgs,\n RewardAddedEvent\n> {\n return combineCodec(\n getRewardAddedEventEncoder(),\n getRewardAddedEventDecoder()\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type 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 RewardWithdrawnEvent = {\n market: Address;\n sponsor: Address;\n rewardAmount: bigint;\n refundTokenAccount: Address;\n timestamp: bigint;\n};\n\nexport type RewardWithdrawnEventArgs = {\n market: Address;\n sponsor: Address;\n rewardAmount: number | bigint;\n refundTokenAccount: Address;\n timestamp: number | bigint;\n};\n\nexport function getRewardWithdrawnEventEncoder(): FixedSizeEncoder<RewardWithdrawnEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['sponsor', getAddressEncoder()],\n ['rewardAmount', getU64Encoder()],\n ['refundTokenAccount', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRewardWithdrawnEventDecoder(): FixedSizeDecoder<RewardWithdrawnEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['sponsor', getAddressDecoder()],\n ['rewardAmount', getU64Decoder()],\n ['refundTokenAccount', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRewardWithdrawnEventCodec(): FixedSizeCodec<\n RewardWithdrawnEventArgs,\n RewardWithdrawnEvent\n> {\n return combineCodec(\n getRewardWithdrawnEventEncoder(),\n getRewardWithdrawnEventDecoder()\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StakeAccountInitializedEvent = {\n stakeAccount: Address;\n owner: Address;\n market: Address;\n accountId: number;\n timestamp: bigint;\n};\n\nexport type StakeAccountInitializedEventArgs = {\n stakeAccount: Address;\n owner: Address;\n market: Address;\n accountId: number;\n timestamp: number | bigint;\n};\n\nexport function getStakeAccountInitializedEventEncoder(): FixedSizeEncoder<StakeAccountInitializedEventArgs> {\n return getStructEncoder([\n ['stakeAccount', getAddressEncoder()],\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['accountId', getU32Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakeAccountInitializedEventDecoder(): FixedSizeDecoder<StakeAccountInitializedEvent> {\n return getStructDecoder([\n ['stakeAccount', getAddressDecoder()],\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['accountId', getU32Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakeAccountInitializedEventCodec(): FixedSizeCodec<\n StakeAccountInitializedEventArgs,\n StakeAccountInitializedEvent\n> {\n return combineCodec(\n getStakeAccountInitializedEventEncoder(),\n getStakeAccountInitializedEventDecoder()\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n 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 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 getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StuckStakeClosedEvent = {\n owner: Address;\n market: Address;\n stakeAccountId: number;\n refundedAmount: bigint;\n refundedFee: bigint;\n timestamp: bigint;\n};\n\nexport type StuckStakeClosedEventArgs = {\n owner: Address;\n market: Address;\n stakeAccountId: number;\n refundedAmount: number | bigint;\n refundedFee: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getStuckStakeClosedEventEncoder(): FixedSizeEncoder<StuckStakeClosedEventArgs> {\n return getStructEncoder([\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['refundedAmount', getU64Encoder()],\n ['refundedFee', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStuckStakeClosedEventDecoder(): FixedSizeDecoder<StuckStakeClosedEvent> {\n return getStructDecoder([\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccountId', getU32Decoder()],\n ['refundedAmount', getU64Decoder()],\n ['refundedFee', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStuckStakeClosedEventCodec(): FixedSizeCodec<\n StuckStakeClosedEventArgs,\n StuckStakeClosedEvent\n> {\n return combineCodec(\n getStuckStakeClosedEventEncoder(),\n getStuckStakeClosedEventDecoder()\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n 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 userStake: bigint;\n userScore: bigint;\n totalScore: bigint;\n totalStake: bigint;\n timestamp: bigint;\n};\n\nexport type TallyIncrementedEventArgs = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n optionId: number | bigint;\n userStake: number | bigint;\n userScore: number | bigint;\n totalScore: number | bigint;\n totalStake: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getTallyIncrementedEventEncoder(): FixedSizeEncoder<TallyIncrementedEventArgs> {\n return getStructEncoder([\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['optionId', getU64Encoder()],\n ['userStake', getU64Encoder()],\n ['userScore', getU64Encoder()],\n ['totalScore', getU64Encoder()],\n ['totalStake', 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 ['userStake', getU64Decoder()],\n ['userScore', getU64Decoder()],\n ['totalScore', getU64Decoder()],\n ['totalStake', 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: Address;\n revealPeriodAuthority: 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 | 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: Address;\n revealPeriodAuthority: 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', getU64Encoder()],\n ['openTimestamp', getOptionEncoder(getU64Encoder())],\n ['timeToStake', getU64Encoder()],\n ['timeToReveal', getU64Encoder()],\n [\n 'selectedOptions',\n getOptionEncoder(getArrayEncoder(getWinningOptionEncoder())),\n ],\n ['rewardAmount', getU64Encoder()],\n ['marketAuthority', getAddressEncoder()],\n ['revealPeriodAuthority', 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', getU64Decoder()],\n ['openTimestamp', getOptionDecoder(getU64Decoder())],\n ['timeToStake', getU64Decoder()],\n ['timeToReveal', getU64Decoder()],\n [\n 'selectedOptions',\n getOptionDecoder(getArrayDecoder(getWinningOptionDecoder())),\n ],\n ['rewardAmount', getU64Decoder()],\n ['marketAuthority', getAddressDecoder()],\n ['revealPeriodAuthority', 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 assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type EncodedAccount,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const OPPORTUNITY_MARKET_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 totalStaked: bigint;\n totalScore: bigint;\n};\n\nexport type OpportunityMarketOptionArgs = {\n bump: number;\n id: number | bigint;\n totalStaked: number | bigint;\n totalScore: number | bigint;\n};\n\nexport function getOpportunityMarketOptionEncoder(): FixedSizeEncoder<OpportunityMarketOptionArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['id', getU64Encoder()],\n ['totalStaked', getU64Encoder()],\n ['totalScore', getU64Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: OPPORTUNITY_MARKET_OPTION_DISCRIMINATOR,\n })\n );\n}\n\nexport function getOpportunityMarketOptionDecoder(): FixedSizeDecoder<OpportunityMarketOption> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ['id', getU64Decoder()],\n ['totalStaked', getU64Decoder()],\n ['totalScore', getU64Decoder()],\n ]);\n}\n\nexport function getOpportunityMarketOptionCodec(): FixedSizeCodec<\n OpportunityMarketOptionArgs,\n OpportunityMarketOption\n> {\n return combineCodec(\n getOpportunityMarketOptionEncoder(),\n getOpportunityMarketOptionDecoder()\n );\n}\n\nexport function decodeOpportunityMarketOption<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<OpportunityMarketOption, TAddress>;\nexport function decodeOpportunityMarketOption<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<OpportunityMarketOption, TAddress>;\nexport function decodeOpportunityMarketOption<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n | Account<OpportunityMarketOption, TAddress>\n | MaybeAccount<OpportunityMarketOption, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getOpportunityMarketOptionDecoder()\n );\n}\n\nexport async function fetchOpportunityMarketOption<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<OpportunityMarketOption, TAddress>> {\n const maybeAccount = await fetchMaybeOpportunityMarketOption(\n rpc,\n address,\n config\n );\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeOpportunityMarketOption<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<OpportunityMarketOption, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeOpportunityMarketOption(maybeAccount);\n}\n\nexport async function fetchAllOpportunityMarketOption(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<OpportunityMarketOption>[]> {\n const maybeAccounts = await fetchAllMaybeOpportunityMarketOption(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeOpportunityMarketOption(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<OpportunityMarketOption>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeOpportunityMarketOption(maybeAccount)\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type EncodedAccount,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const OPPORTUNITY_MARKET_SPONSOR_DISCRIMINATOR = new Uint8Array([\n 207, 139, 192, 91, 37, 190, 2, 192,\n]);\n\nexport function getOpportunityMarketSponsorDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n OPPORTUNITY_MARKET_SPONSOR_DISCRIMINATOR\n );\n}\n\nexport type OpportunityMarketSponsor = {\n discriminator: ReadonlyUint8Array;\n bump: number;\n sponsor: Address;\n market: Address;\n rewardDeposited: bigint;\n rewardLocked: boolean;\n};\n\nexport type OpportunityMarketSponsorArgs = {\n bump: number;\n sponsor: Address;\n market: Address;\n rewardDeposited: number | bigint;\n rewardLocked: boolean;\n};\n\nexport function getOpportunityMarketSponsorEncoder(): FixedSizeEncoder<OpportunityMarketSponsorArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['sponsor', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['rewardDeposited', getU64Encoder()],\n ['rewardLocked', getBooleanEncoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: OPPORTUNITY_MARKET_SPONSOR_DISCRIMINATOR,\n })\n );\n}\n\nexport function getOpportunityMarketSponsorDecoder(): FixedSizeDecoder<OpportunityMarketSponsor> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ['sponsor', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['rewardDeposited', getU64Decoder()],\n ['rewardLocked', getBooleanDecoder()],\n ]);\n}\n\nexport function getOpportunityMarketSponsorCodec(): FixedSizeCodec<\n OpportunityMarketSponsorArgs,\n OpportunityMarketSponsor\n> {\n return combineCodec(\n getOpportunityMarketSponsorEncoder(),\n getOpportunityMarketSponsorDecoder()\n );\n}\n\nexport function decodeOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<OpportunityMarketSponsor, TAddress>;\nexport function decodeOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<OpportunityMarketSponsor, TAddress>;\nexport function decodeOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n | Account<OpportunityMarketSponsor, TAddress>\n | MaybeAccount<OpportunityMarketSponsor, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getOpportunityMarketSponsorDecoder()\n );\n}\n\nexport async function fetchOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<OpportunityMarketSponsor, TAddress>> {\n const maybeAccount = await fetchMaybeOpportunityMarketSponsor(\n rpc,\n address,\n config\n );\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<OpportunityMarketSponsor, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeOpportunityMarketSponsor(maybeAccount);\n}\n\nexport async function fetchAllOpportunityMarketSponsor(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<OpportunityMarketSponsor>[]> {\n const maybeAccounts = await fetchAllMaybeOpportunityMarketSponsor(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeOpportunityMarketSponsor(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<OpportunityMarketSponsor>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeOpportunityMarketSponsor(maybeAccount)\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n 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 fee: bigint;\n revealedOption: Option<bigint>;\n score: Option<bigint>;\n totalIncremented: boolean;\n unstakeableAtTimestamp: Option<bigint>;\n locked: boolean;\n stakeReclaimed: boolean;\n pendingStake: boolean;\n pendingReveal: boolean;\n};\n\nexport type StakeAccountArgs = {\n encryptedOption: Array<number>;\n stateNonce: number | bigint;\n bump: number;\n owner: Address;\n market: Address;\n userPubkey: Array<number>;\n encryptedOptionDisclosure: Array<number>;\n stateNonceDisclosure: number | bigint;\n stakedAtTimestamp: OptionOrNullable<number | bigint>;\n unstakedAtTimestamp: OptionOrNullable<number | bigint>;\n amount: number | bigint;\n fee: 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 pendingStake: boolean;\n pendingReveal: boolean;\n};\n\nexport function getStakeAccountEncoder(): Encoder<StakeAccountArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['encryptedOption', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['stateNonce', getU128Encoder()],\n ['bump', getU8Encoder()],\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['userPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n [\n 'encryptedOptionDisclosure',\n getArrayEncoder(getU8Encoder(), { size: 32 }),\n ],\n ['stateNonceDisclosure', getU128Encoder()],\n ['stakedAtTimestamp', getOptionEncoder(getU64Encoder())],\n ['unstakedAtTimestamp', getOptionEncoder(getU64Encoder())],\n ['amount', getU64Encoder()],\n ['fee', getU64Encoder()],\n ['revealedOption', getOptionEncoder(getU64Encoder())],\n ['score', getOptionEncoder(getU64Encoder())],\n ['totalIncremented', getBooleanEncoder()],\n ['unstakeableAtTimestamp', getOptionEncoder(getU64Encoder())],\n ['locked', getBooleanEncoder()],\n ['stakeReclaimed', getBooleanEncoder()],\n ['pendingStake', getBooleanEncoder()],\n ['pendingReveal', getBooleanEncoder()],\n ]),\n (value) => ({ ...value, discriminator: STAKE_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getStakeAccountDecoder(): Decoder<StakeAccount> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['encryptedOption', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['stateNonce', getU128Decoder()],\n ['bump', getU8Decoder()],\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['userPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n [\n 'encryptedOptionDisclosure',\n getArrayDecoder(getU8Decoder(), { size: 32 }),\n ],\n ['stateNonceDisclosure', getU128Decoder()],\n ['stakedAtTimestamp', getOptionDecoder(getU64Decoder())],\n ['unstakedAtTimestamp', getOptionDecoder(getU64Decoder())],\n ['amount', getU64Decoder()],\n ['fee', getU64Decoder()],\n ['revealedOption', getOptionDecoder(getU64Decoder())],\n ['score', getOptionDecoder(getU64Decoder())],\n ['totalIncremented', getBooleanDecoder()],\n ['unstakeableAtTimestamp', getOptionDecoder(getU64Decoder())],\n ['locked', getBooleanDecoder()],\n ['stakeReclaimed', getBooleanDecoder()],\n ['pendingStake', getBooleanDecoder()],\n ['pendingReveal', getBooleanDecoder()],\n ]);\n}\n\nexport function getStakeAccountCodec(): Codec<StakeAccountArgs, StakeAccount> {\n return combineCodec(getStakeAccountEncoder(), getStakeAccountDecoder());\n}\n\nexport function decodeStakeAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<StakeAccount, TAddress>;\nexport function decodeStakeAccount<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<StakeAccount, TAddress>;\nexport function decodeStakeAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<StakeAccount, TAddress> | MaybeAccount<StakeAccount, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getStakeAccountDecoder()\n );\n}\n\nexport async function fetchStakeAccount<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<StakeAccount, TAddress>> {\n const maybeAccount = await fetchMaybeStakeAccount(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeStakeAccount<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<StakeAccount, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeStakeAccount(maybeAccount);\n}\n\nexport async function fetchAllStakeAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<StakeAccount>[]> {\n const maybeAccounts = await fetchAllMaybeStakeAccount(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeStakeAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<StakeAccount>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeStakeAccount(maybeAccount));\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\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 mint: Address;\n collectedFees: bigint;\n protocolFeeBp: number;\n /** Reserved for future use */\n reserved: Array<number>;\n};\n\nexport type TokenVaultArgs = {\n bump: number;\n mint: Address;\n collectedFees: number | bigint;\n protocolFeeBp: number;\n /** Reserved for future use */\n reserved: Array<number>;\n};\n\nexport function getTokenVaultEncoder(): FixedSizeEncoder<TokenVaultArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['mint', getAddressEncoder()],\n ['collectedFees', getU64Encoder()],\n ['protocolFeeBp', getU16Encoder()],\n ['reserved', getArrayEncoder(getU8Encoder(), { size: 128 })],\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 ['mint', getAddressDecoder()],\n ['collectedFees', getU64Decoder()],\n ['protocolFeeBp', getU16Decoder()],\n ['reserved', getArrayDecoder(getU8Decoder(), { size: 128 })],\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/** AlreadyStaked: Already staked for this stake account */\nexport const OPPORTUNITY_MARKET_ERROR__ALREADY_STAKED = 0x1783; // 6019\n/** DepositBelowMinimum: Deposit amount below minimum required for option creation */\nexport const OPPORTUNITY_MARKET_ERROR__DEPOSIT_BELOW_MINIMUM = 0x1784; // 6020\n/** AddOptionStakeFailed: Add option stake failed: insufficient balance or below minimum deposit */\nexport const OPPORTUNITY_MARKET_ERROR__ADD_OPTION_STAKE_FAILED = 0x1785; // 6021\n/** Locked: Account is locked */\nexport const OPPORTUNITY_MARKET_ERROR__LOCKED = 0x1786; // 6022\n/** InvalidAccountState: Invalid account state */\nexport const OPPORTUNITY_MARKET_ERROR__INVALID_ACCOUNT_STATE = 0x1787; // 6023\n/** 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/** StakeNotStuck: Stake account is not in a stuck or failed state */\nexport const OPPORTUNITY_MARKET_ERROR__STAKE_NOT_STUCK = 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_REVEALED\n | typeof OPPORTUNITY_MARKET_ERROR__ALREADY_STAKED\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__STAKE_NOT_STUCK\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_REVEALED]: `Stake already revealed`,\n [OPPORTUNITY_MARKET_ERROR__ALREADY_STAKED]: `Already staked for this stake account`,\n [OPPORTUNITY_MARKET_ERROR__ALREADY_UNSTAKED]: `Already unstaked`,\n [OPPORTUNITY_MARKET_ERROR__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__STAKE_NOT_STUCK]: `Stake account is not in a stuck or failed state`,\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 ParsedAddRewardInstruction,\n type ParsedClaimFeesInstruction,\n type ParsedCloseStakeAccountInstruction,\n type ParsedCloseStuckStakeAccountInstruction,\n type ParsedCreateMarketInstruction,\n type ParsedDoUnstakeEarlyInstruction,\n type ParsedEndRevealPeriodInstruction,\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 OpportunityMarketSponsor,\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([207, 139, 192, 91, 37, 190, 2, 192])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.OpportunityMarketSponsor;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([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 AddReward,\n ClaimFees,\n CloseStakeAccount,\n CloseStuckStakeAccount,\n CreateMarket,\n DoUnstakeEarly,\n EndRevealPeriod,\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([4, 114, 188, 164, 149, 249, 198, 237])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.AddReward;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([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([41, 239, 108, 203, 185, 230, 165, 181])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.CloseStuckStakeAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([103, 226, 97, 235, 200, 188, 251, 254])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.CreateMarket;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([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([144, 81, 42, 65, 127, 60, 134, 92])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.EndRevealPeriod;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([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.AddReward;\n } & ParsedAddRewardInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.ClaimFees;\n } & ParsedClaimFeesInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CloseStakeAccount;\n } & ParsedCloseStakeAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CloseStuckStakeAccount;\n } & ParsedCloseStuckStakeAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CreateMarket;\n } & ParsedCreateMarketInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.DoUnstakeEarly;\n } & ParsedDoUnstakeEarlyInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.EndRevealPeriod;\n } & ParsedEndRevealPeriodInstruction<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 getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const ADD_REWARD_DISCRIMINATOR = new Uint8Array([\n 4, 114, 188, 164, 149, 249, 198, 237,\n]);\n\nexport function getAddRewardDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(ADD_REWARD_DISCRIMINATOR);\n}\n\nexport type AddRewardInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSponsor extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountSponsorAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountSponsorTokenAccount extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSponsor extends string\n ? WritableSignerAccount<TAccountSponsor> &\n AccountSignerMeta<TAccountSponsor>\n : TAccountSponsor,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountSponsorAccount extends string\n ? WritableAccount<TAccountSponsorAccount>\n : TAccountSponsorAccount,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountSponsorTokenAccount extends string\n ? WritableAccount<TAccountSponsorTokenAccount>\n : TAccountSponsorTokenAccount,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type AddRewardInstructionData = {\n discriminator: ReadonlyUint8Array;\n amount: bigint;\n lock: boolean;\n};\n\nexport type AddRewardInstructionDataArgs = {\n amount: number | bigint;\n lock: boolean;\n};\n\nexport function getAddRewardInstructionDataEncoder(): FixedSizeEncoder<AddRewardInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['amount', getU64Encoder()],\n ['lock', getBooleanEncoder()],\n ]),\n (value) => ({ ...value, discriminator: ADD_REWARD_DISCRIMINATOR })\n );\n}\n\nexport function getAddRewardInstructionDataDecoder(): FixedSizeDecoder<AddRewardInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['amount', getU64Decoder()],\n ['lock', getBooleanDecoder()],\n ]);\n}\n\nexport function getAddRewardInstructionDataCodec(): FixedSizeCodec<\n AddRewardInstructionDataArgs,\n AddRewardInstructionData\n> {\n return combineCodec(\n getAddRewardInstructionDataEncoder(),\n getAddRewardInstructionDataDecoder()\n );\n}\n\nexport type AddRewardAsyncInput<\n TAccountSponsor extends string = string,\n TAccountMarket extends string = string,\n TAccountSponsorAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSponsorTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n sponsor: TransactionSigner<TAccountSponsor>;\n market: Address<TAccountMarket>;\n sponsorAccount?: Address<TAccountSponsorAccount>;\n tokenMint: Address<TAccountTokenMint>;\n sponsorTokenAccount: Address<TAccountSponsorTokenAccount>;\n /** Market's ATA holding reward tokens */\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n amount: AddRewardInstructionDataArgs['amount'];\n lock: AddRewardInstructionDataArgs['lock'];\n};\n\nexport async function getAddRewardInstructionAsync<\n TAccountSponsor extends string,\n TAccountMarket extends string,\n TAccountSponsorAccount extends string,\n TAccountTokenMint extends string,\n TAccountSponsorTokenAccount extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: AddRewardAsyncInput<\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n AddRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sponsor: { value: input.sponsor ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n sponsorAccount: { value: input.sponsorAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n sponsorTokenAccount: {\n value: input.sponsorTokenAccount ?? null,\n isWritable: true,\n },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.sponsorAccount.value) {\n accounts.sponsorAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([115, 112, 111, 110, 115, 111, 114])\n ),\n getAddressEncoder().encode(expectAddress(accounts.sponsor.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n ],\n });\n }\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.sponsor),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.sponsorAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.sponsorTokenAccount),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getAddRewardInstructionDataEncoder().encode(\n args as AddRewardInstructionDataArgs\n ),\n programAddress,\n } as AddRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type AddRewardInput<\n TAccountSponsor extends string = string,\n TAccountMarket extends string = string,\n TAccountSponsorAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSponsorTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n sponsor: TransactionSigner<TAccountSponsor>;\n market: Address<TAccountMarket>;\n sponsorAccount: Address<TAccountSponsorAccount>;\n tokenMint: Address<TAccountTokenMint>;\n sponsorTokenAccount: Address<TAccountSponsorTokenAccount>;\n /** Market's ATA holding reward tokens */\n marketTokenAta: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n amount: AddRewardInstructionDataArgs['amount'];\n lock: AddRewardInstructionDataArgs['lock'];\n};\n\nexport function getAddRewardInstruction<\n TAccountSponsor extends string,\n TAccountMarket extends string,\n TAccountSponsorAccount extends string,\n TAccountTokenMint extends string,\n TAccountSponsorTokenAccount extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: AddRewardInput<\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): AddRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sponsor: { value: input.sponsor ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n sponsorAccount: { value: input.sponsorAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n sponsorTokenAccount: {\n value: input.sponsorTokenAccount ?? null,\n isWritable: true,\n },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.sponsor),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.sponsorAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.sponsorTokenAccount),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getAddRewardInstructionDataEncoder().encode(\n args as AddRewardInstructionDataArgs\n ),\n programAddress,\n } as AddRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedAddRewardInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n sponsor: TAccountMetas[0];\n market: TAccountMetas[1];\n sponsorAccount: TAccountMetas[2];\n tokenMint: TAccountMetas[3];\n sponsorTokenAccount: TAccountMetas[4];\n /** Market's ATA holding reward tokens */\n marketTokenAta: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n systemProgram: TAccountMetas[7];\n };\n data: AddRewardInstructionData;\n};\n\nexport function parseAddRewardInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedAddRewardInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 8) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n sponsor: getNextAccount(),\n market: getNextAccount(),\n sponsorAccount: getNextAccount(),\n tokenMint: getNextAccount(),\n sponsorTokenAccount: getNextAccount(),\n marketTokenAta: getNextAccount(),\n tokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getAddRewardInstructionDataDecoder().decode(instruction.data),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CLAIM_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 getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CLOSE_STUCK_STAKE_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 41, 239, 108, 203, 185, 230, 165, 181,\n]);\n\nexport function getCloseStuckStakeAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLOSE_STUCK_STAKE_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type CloseStuckStakeAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta 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 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 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 TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CloseStuckStakeAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n stakeAccountId: number;\n};\n\nexport type CloseStuckStakeAccountInstructionDataArgs = {\n stakeAccountId: number;\n};\n\nexport function getCloseStuckStakeAccountInstructionDataEncoder(): FixedSizeEncoder<CloseStuckStakeAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['stakeAccountId', getU32Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: CLOSE_STUCK_STAKE_ACCOUNT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getCloseStuckStakeAccountInstructionDataDecoder(): FixedSizeDecoder<CloseStuckStakeAccountInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['stakeAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getCloseStuckStakeAccountInstructionDataCodec(): FixedSizeCodec<\n CloseStuckStakeAccountInstructionDataArgs,\n CloseStuckStakeAccountInstructionData\n> {\n return combineCodec(\n getCloseStuckStakeAccountInstructionDataEncoder(),\n getCloseStuckStakeAccountInstructionDataDecoder()\n );\n}\n\nexport type CloseStuckStakeAccountAsyncInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountTokenVault extends string = string,\n TAccountTokenVaultAta 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 /** Signer's token account to receive refund */\n signerTokenAccount: Address<TAccountSignerTokenAccount>;\n tokenVault?: Address<TAccountTokenVault>;\n /** Token vault ATA holding fee tokens */\n tokenVaultAta?: Address<TAccountTokenVaultAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n stakeAccountId: CloseStuckStakeAccountInstructionDataArgs['stakeAccountId'];\n};\n\nexport async function getCloseStuckStakeAccountInstructionAsync<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountSignerTokenAccount extends string,\n TAccountTokenVault extends string,\n TAccountTokenVaultAta extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseStuckStakeAccountAsyncInput<\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountSignerTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CloseStuckStakeAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountSignerTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\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 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 tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.stakeAccount.value) {\n accounts.stakeAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 116, 97, 107, 101, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.signer.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU32Encoder().encode(expectSome(args.stakeAccountId)),\n ],\n });\n }\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.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.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.signerTokenAccount),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.tokenVaultAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCloseStuckStakeAccountInstructionDataEncoder().encode(\n args as CloseStuckStakeAccountInstructionDataArgs\n ),\n programAddress,\n } as CloseStuckStakeAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountSignerTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type CloseStuckStakeAccountInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountTokenVault extends string = string,\n TAccountTokenVaultAta 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 /** Signer's token account to receive refund */\n signerTokenAccount: Address<TAccountSignerTokenAccount>;\n tokenVault: Address<TAccountTokenVault>;\n /** Token vault ATA holding fee tokens */\n tokenVaultAta: Address<TAccountTokenVaultAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n stakeAccountId: CloseStuckStakeAccountInstructionDataArgs['stakeAccountId'];\n};\n\nexport function getCloseStuckStakeAccountInstruction<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountSignerTokenAccount extends string,\n TAccountTokenVault extends string,\n TAccountTokenVaultAta extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseStuckStakeAccountInput<\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountSignerTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CloseStuckStakeAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountSignerTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\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 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 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.signerTokenAccount),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.tokenVaultAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCloseStuckStakeAccountInstructionDataEncoder().encode(\n args as CloseStuckStakeAccountInstructionDataArgs\n ),\n programAddress,\n } as CloseStuckStakeAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountSignerTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCloseStuckStakeAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n market: TAccountMetas[1];\n stakeAccount: TAccountMetas[2];\n tokenMint: TAccountMetas[3];\n /** Market's ATA holding staked tokens */\n marketTokenAta: TAccountMetas[4];\n /** Signer's token account to receive refund */\n signerTokenAccount: TAccountMetas[5];\n tokenVault: TAccountMetas[6];\n /** Token vault ATA holding fee tokens */\n tokenVaultAta: TAccountMetas[7];\n tokenProgram: TAccountMetas[8];\n systemProgram: TAccountMetas[9];\n };\n data: CloseStuckStakeAccountInstructionData;\n};\n\nexport function parseCloseStuckStakeAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedCloseStuckStakeAccountInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 10) {\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 signerTokenAccount: getNextAccount(),\n tokenVault: getNextAccount(),\n tokenVaultAta: getNextAccount(),\n tokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCloseStuckStakeAccountInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n 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 timeToStake: bigint;\n timeToReveal: bigint;\n marketAuthority: Option<Address>;\n unstakeDelaySeconds: bigint;\n authorizedReaderPubkey: Array<number>;\n allowClosingEarly: boolean;\n revealPeriodAuthority: Address;\n};\n\nexport type CreateMarketInstructionDataArgs = {\n marketIndex: 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 revealPeriodAuthority: Address;\n};\n\nexport function getCreateMarketInstructionDataEncoder(): Encoder<CreateMarketInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['marketIndex', getU64Encoder()],\n ['timeToStake', getU64Encoder()],\n ['timeToReveal', getU64Encoder()],\n ['marketAuthority', getOptionEncoder(getAddressEncoder())],\n ['unstakeDelaySeconds', getU64Encoder()],\n ['authorizedReaderPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['allowClosingEarly', getBooleanEncoder()],\n ['revealPeriodAuthority', getAddressEncoder()],\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 ['timeToStake', getU64Decoder()],\n ['timeToReveal', getU64Decoder()],\n ['marketAuthority', getOptionDecoder(getAddressDecoder())],\n ['unstakeDelaySeconds', getU64Decoder()],\n ['authorizedReaderPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['allowClosingEarly', getBooleanDecoder()],\n ['revealPeriodAuthority', getAddressDecoder()],\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 timeToStake: CreateMarketInstructionDataArgs['timeToStake'];\n timeToReveal: CreateMarketInstructionDataArgs['timeToReveal'];\n marketAuthority: CreateMarketInstructionDataArgs['marketAuthority'];\n unstakeDelaySeconds: CreateMarketInstructionDataArgs['unstakeDelaySeconds'];\n authorizedReaderPubkey: CreateMarketInstructionDataArgs['authorizedReaderPubkey'];\n allowClosingEarly: CreateMarketInstructionDataArgs['allowClosingEarly'];\n revealPeriodAuthority: CreateMarketInstructionDataArgs['revealPeriodAuthority'];\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 timeToStake: CreateMarketInstructionDataArgs['timeToStake'];\n timeToReveal: CreateMarketInstructionDataArgs['timeToReveal'];\n marketAuthority: CreateMarketInstructionDataArgs['marketAuthority'];\n unstakeDelaySeconds: CreateMarketInstructionDataArgs['unstakeDelaySeconds'];\n authorizedReaderPubkey: CreateMarketInstructionDataArgs['authorizedReaderPubkey'];\n allowClosingEarly: CreateMarketInstructionDataArgs['allowClosingEarly'];\n revealPeriodAuthority: CreateMarketInstructionDataArgs['revealPeriodAuthority'];\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 transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const END_REVEAL_PERIOD_DISCRIMINATOR = new Uint8Array([\n 144, 81, 42, 65, 127, 60, 134, 92,\n]);\n\nexport function getEndRevealPeriodDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n END_REVEAL_PERIOD_DISCRIMINATOR\n );\n}\n\nexport type EndRevealPeriodInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n 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 EndRevealPeriodInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type EndRevealPeriodInstructionDataArgs = {};\n\nexport function getEndRevealPeriodInstructionDataEncoder(): FixedSizeEncoder<EndRevealPeriodInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: END_REVEAL_PERIOD_DISCRIMINATOR })\n );\n}\n\nexport function getEndRevealPeriodInstructionDataDecoder(): FixedSizeDecoder<EndRevealPeriodInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getEndRevealPeriodInstructionDataCodec(): FixedSizeCodec<\n EndRevealPeriodInstructionDataArgs,\n EndRevealPeriodInstructionData\n> {\n return combineCodec(\n getEndRevealPeriodInstructionDataEncoder(),\n getEndRevealPeriodInstructionDataDecoder()\n );\n}\n\nexport type EndRevealPeriodInput<\n TAccountAuthority extends string = string,\n TAccountMarket extends string = string,\n> = {\n authority: TransactionSigner<TAccountAuthority>;\n market: Address<TAccountMarket>;\n};\n\nexport function getEndRevealPeriodInstruction<\n TAccountAuthority extends string,\n TAccountMarket extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: EndRevealPeriodInput<TAccountAuthority, TAccountMarket>,\n config?: { programAddress?: TProgramAddress }\n): EndRevealPeriodInstruction<\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 const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.market),\n ],\n data: getEndRevealPeriodInstructionDataEncoder().encode({}),\n programAddress,\n } as EndRevealPeriodInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountMarket\n >);\n}\n\nexport type ParsedEndRevealPeriodInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n authority: TAccountMetas[0];\n market: TAccountMetas[1];\n };\n data: EndRevealPeriodInstructionData;\n};\n\nexport function parseEndRevealPeriodInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedEndRevealPeriodInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: { authority: getNextAccount(), market: getNextAccount() },\n data: getEndRevealPeriodInstructionDataDecoder().decode(instruction.data),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const 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 minimumInitialRevealPeriod: bigint;\n};\n\nexport type InitCentralStateInstructionDataArgs = {\n earlinessCutoffSeconds: number | bigint;\n minOptionDeposit: number | bigint;\n protocolFeeBp: number;\n feeRecipient: Address;\n minimumInitialRevealPeriod: number | bigint;\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 ['minimumInitialRevealPeriod', getU64Encoder()],\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 ['minimumInitialRevealPeriod', getU64Decoder()],\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 minimumInitialRevealPeriod: InitCentralStateInstructionDataArgs['minimumInitialRevealPeriod'];\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 minimumInitialRevealPeriod: InitCentralStateInstructionDataArgs['minimumInitialRevealPeriod'];\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 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};\n\nexport type InitTokenVaultInstructionDataArgs = {};\n\nexport function getInitTokenVaultInstructionDataEncoder(): FixedSizeEncoder<InitTokenVaultInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\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 ]);\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};\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 // 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 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};\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 // 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 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 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 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 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 ...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 OpenMarketInput<\n TAccountCreator extends string = string,\n TAccountMarket extends string = string,\n> = {\n creator: TransactionSigner<TAccountCreator>;\n market: Address<TAccountMarket>;\n openTimestamp: OpenMarketInstructionDataArgs['openTimestamp'];\n};\n\nexport function getOpenMarketInstruction<\n TAccountCreator extends string,\n TAccountMarket extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: OpenMarketInput<TAccountCreator, TAccountMarket>,\n config?: { programAddress?: TProgramAddress }\n): OpenMarketInstruction<TProgramAddress, TAccountCreator, TAccountMarket> {\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 };\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 ],\n data: getOpenMarketInstructionDataEncoder().encode(\n args as OpenMarketInstructionDataArgs\n ),\n programAddress,\n } as OpenMarketInstruction<TProgramAddress, TAccountCreator, TAccountMarket>);\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 };\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 < 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: { creator: getNextAccount(), market: getNextAccount() },\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 ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n 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 TAccountPayer extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountSignerTokenAccount extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n 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 ? ReadonlySignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\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 TAccountPayer extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n 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 payer: TransactionSigner<TAccountPayer>;\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 TAccountPayer 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 TAccountPayer,\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 TAccountPayer,\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: false },\n payer: { value: input.payer ?? 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.payer),\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 TAccountPayer,\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 TAccountPayer extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n 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 payer: TransactionSigner<TAccountPayer>;\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 TAccountPayer 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 TAccountPayer,\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 TAccountPayer,\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: false },\n payer: { value: input.payer ?? 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.payer),\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 TAccountPayer,\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 payer: TAccountMetas[1];\n market: TAccountMetas[2];\n stakeAccount: TAccountMetas[3];\n tokenMint: TAccountMetas[4];\n signerTokenAccount: TAccountMetas[5];\n /** Market's ATA for holding staked tokens */\n marketTokenAta: TAccountMetas[6];\n /** Token vault for fee collection */\n tokenVault: TAccountMetas[7];\n /** Token vault ATA for fee tokens */\n tokenVaultAta: TAccountMetas[8];\n tokenProgram: TAccountMetas[9];\n signPdaAccount: TAccountMetas[10];\n mxeAccount: TAccountMetas[11];\n mempoolAccount: TAccountMetas[12];\n executingPool: TAccountMetas[13];\n computationAccount: TAccountMetas[14];\n compDefAccount: TAccountMetas[15];\n clusterAccount: TAccountMetas[16];\n poolAccount: TAccountMetas[17];\n clockAccount: TAccountMetas[18];\n systemProgram: TAccountMetas[19];\n arciumProgram: TAccountMetas[20];\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 < 21) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n payer: getNextAccount(),\n market: getNextAccount(),\n stakeAccount: getNextAccount(),\n tokenMint: getNextAccount(),\n signerTokenAccount: getNextAccount(),\n marketTokenAta: getNextAccount(),\n 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 TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountTokenVault 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 TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountTokenVault extends string\n ? WritableAccount<TAccountTokenVault>\n : TAccountTokenVault,\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 TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenVault 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 market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n tokenVault: Address<TAccountTokenVault>;\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 TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenVault 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 TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenVault\n >,\n config?: { programAddress?: TProgramAddress }\n): StakeCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenVault\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 market: { value: input.market ?? null, isWritable: true },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n tokenVault: { value: input.tokenVault ?? 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.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.tokenVault),\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 TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenVault\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 market: TAccountMetas[6];\n stakeAccount: TAccountMetas[7];\n tokenVault: TAccountMetas[8];\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 < 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 market: getNextAccount(),\n stakeAccount: getNextAccount(),\n tokenVault: 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 minimumInitialRevealPeriod: bigint;\n};\n\nexport type UpdateCentralStateInstructionDataArgs = {\n earlinessCutoffSeconds: number | bigint;\n minOptionDeposit: number | bigint;\n protocolFeeBp: number;\n feeRecipient: Address;\n minimumInitialRevealPeriod: number | bigint;\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 ['minimumInitialRevealPeriod', getU64Encoder()],\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 ['minimumInitialRevealPeriod', getU64Decoder()],\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 minimumInitialRevealPeriod: UpdateCentralStateInstructionDataArgs['minimumInitialRevealPeriod'];\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 minimumInitialRevealPeriod: UpdateCentralStateInstructionDataArgs['minimumInitialRevealPeriod'];\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 ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const WITHDRAW_REWARD_DISCRIMINATOR = new Uint8Array([\n 191, 187, 176, 137, 9, 25, 187, 244,\n]);\n\nexport function getWithdrawRewardDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n WITHDRAW_REWARD_DISCRIMINATOR\n );\n}\n\nexport type WithdrawRewardInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSponsor extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountSponsorAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountRefundTokenAccount extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSponsor extends string\n ? WritableSignerAccount<TAccountSponsor> &\n AccountSignerMeta<TAccountSponsor>\n : TAccountSponsor,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountSponsorAccount extends string\n ? WritableAccount<TAccountSponsorAccount>\n : TAccountSponsorAccount,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountRefundTokenAccount extends string\n ? WritableAccount<TAccountRefundTokenAccount>\n : TAccountRefundTokenAccount,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type WithdrawRewardInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type WithdrawRewardInstructionDataArgs = {};\n\nexport function getWithdrawRewardInstructionDataEncoder(): FixedSizeEncoder<WithdrawRewardInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: WITHDRAW_REWARD_DISCRIMINATOR })\n );\n}\n\nexport function getWithdrawRewardInstructionDataDecoder(): FixedSizeDecoder<WithdrawRewardInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getWithdrawRewardInstructionDataCodec(): FixedSizeCodec<\n WithdrawRewardInstructionDataArgs,\n WithdrawRewardInstructionData\n> {\n return combineCodec(\n getWithdrawRewardInstructionDataEncoder(),\n getWithdrawRewardInstructionDataDecoder()\n );\n}\n\nexport type WithdrawRewardAsyncInput<\n TAccountSponsor extends string = string,\n TAccountMarket extends string = string,\n TAccountSponsorAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountRefundTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n sponsor: TransactionSigner<TAccountSponsor>;\n market: Address<TAccountMarket>;\n sponsorAccount?: Address<TAccountSponsorAccount>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market's ATA holding reward tokens */\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n /** Sponsor's destination for refunded reward tokens */\n refundTokenAccount: Address<TAccountRefundTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport async function getWithdrawRewardInstructionAsync<\n TAccountSponsor extends string,\n TAccountMarket extends string,\n TAccountSponsorAccount extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountRefundTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: WithdrawRewardAsyncInput<\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n WithdrawRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sponsor: { value: input.sponsor ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n sponsorAccount: { value: input.sponsorAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n refundTokenAccount: {\n value: input.refundTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.sponsorAccount.value) {\n accounts.sponsorAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([115, 112, 111, 110, 115, 111, 114])\n ),\n getAddressEncoder().encode(expectAddress(accounts.sponsor.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n ],\n });\n }\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.sponsor),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.sponsorAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.refundTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getWithdrawRewardInstructionDataEncoder().encode({}),\n programAddress,\n } as WithdrawRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type WithdrawRewardInput<\n TAccountSponsor extends string = string,\n TAccountMarket extends string = string,\n TAccountSponsorAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountRefundTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n sponsor: TransactionSigner<TAccountSponsor>;\n market: Address<TAccountMarket>;\n sponsorAccount: Address<TAccountSponsorAccount>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market's ATA holding reward tokens */\n marketTokenAta: Address<TAccountMarketTokenAta>;\n /** Sponsor's destination for refunded reward tokens */\n refundTokenAccount: Address<TAccountRefundTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport function getWithdrawRewardInstruction<\n TAccountSponsor extends string,\n TAccountMarket extends string,\n TAccountSponsorAccount extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountRefundTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: WithdrawRewardInput<\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): WithdrawRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sponsor: { value: input.sponsor ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n sponsorAccount: { value: input.sponsorAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n refundTokenAccount: {\n value: input.refundTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.sponsor),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.sponsorAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.refundTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getWithdrawRewardInstructionDataEncoder().encode({}),\n programAddress,\n } as WithdrawRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type ParsedWithdrawRewardInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n sponsor: TAccountMetas[0];\n market: TAccountMetas[1];\n sponsorAccount: TAccountMetas[2];\n tokenMint: TAccountMetas[3];\n /** Market's ATA holding reward tokens */\n marketTokenAta: TAccountMetas[4];\n /** Sponsor's destination for refunded reward tokens */\n refundTokenAccount: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n };\n data: WithdrawRewardInstructionData;\n};\n\nexport function parseWithdrawRewardInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedWithdrawRewardInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n sponsor: getNextAccount(),\n market: getNextAccount(),\n sponsorAccount: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n refundTokenAccount: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getWithdrawRewardInstructionDataDecoder().decode(instruction.data),\n };\n}\n","import { 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 payer: TransactionSigner;\n tokenMint: Address;\n}\n\nexport async function initTokenVault(\n input: InitTokenVaultParams\n): Promise<InitTokenVaultInstruction<string>> {\n const { programAddress, payer, tokenMint } = input;\n\n return getInitTokenVaultInstructionAsync(\n {\n payer,\n tokenMint,\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 timeToStake: bigint;\n timeToReveal: bigint;\n marketAuthority: Address | null;\n unstakeDelaySeconds: bigint;\n authorizedReaderPubkey: ByteArray;\n allowClosingEarly: boolean;\n revealPeriodAuthority: Address;\n}\n\nexport async function createMarket(\n input: CreateMarketParams\n): Promise<CreateMarketInstruction<string>> {\n const {\n creator,\n tokenMint,\n tokenProgram,\n marketIndex,\n timeToReveal,\n timeToStake,\n marketAuthority,\n unstakeDelaySeconds,\n authorizedReaderPubkey,\n allowClosingEarly,\n revealPeriodAuthority,\n programAddress,\n } = input;\n\n return getCreateMarketInstructionAsync(\n {\n creator,\n tokenMint,\n tokenProgram,\n marketIndex,\n timeToStake,\n timeToReveal,\n marketAuthority,\n unstakeDelaySeconds,\n authorizedReaderPubkey: toNumberArray(authorizedReaderPubkey),\n allowClosingEarly,\n revealPeriodAuthority,\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 payer: 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 payer,\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 payer,\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 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 getEndRevealPeriodInstruction,\n type EndRevealPeriodInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface EndRevealPeriodParams extends BaseInstructionParams {\n authority: TransactionSigner;\n market: Address;\n}\n\nexport function endRevealPeriod(\n input: EndRevealPeriodParams\n): EndRevealPeriodInstruction<string> {\n const { programAddress, ...params } = input;\n return getEndRevealPeriodInstruction(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getAddRewardInstructionAsync,\n type AddRewardInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface AddRewardParams extends BaseInstructionParams {\n sponsor: TransactionSigner;\n market: Address;\n tokenMint: Address;\n sponsorTokenAccount: Address;\n tokenProgram: Address;\n amount: bigint;\n lock: boolean;\n}\n\nexport async function addReward(\n input: AddRewardParams\n): Promise<AddRewardInstruction<string>> {\n const { programAddress, ...params } = input;\n return getAddRewardInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getInitStakeAccountInstructionAsync,\n type InitStakeAccountInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface InitStakeAccountParams extends BaseInstructionParams {\n 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 getCloseStuckStakeAccountInstructionAsync,\n type CloseStuckStakeAccountInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface CloseStuckStakeAccountParams extends BaseInstructionParams {\n signer: TransactionSigner;\n market: Address;\n tokenMint: Address;\n signerTokenAccount: Address;\n tokenProgram: Address;\n stakeAccountId: number;\n}\n\nexport async function closeStuckStakeAccount(\n input: CloseStuckStakeAccountParams\n): Promise<CloseStuckStakeAccountInstruction<string>> {\n const { programAddress, ...params } = input;\n return getCloseStuckStakeAccountInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n 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 minimumInitialRevealPeriod: bigint | number;\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 s.minimumInitialRevealPeriod === BigInt(args.minimumInitialRevealPeriod)\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 sponsor: TransactionSigner;\n market: Address;\n tokenMint: Address;\n refundTokenAccount: Address;\n tokenProgram: Address;\n}\n\nexport async function withdrawReward(\n input: WithdrawRewardParams\n): Promise<WithdrawRewardInstruction<string>> {\n const { programAddress, ...params } = input;\n return getWithdrawRewardInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import {\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 SPONSOR_SEED = \"sponsor\";\n\nexport async function getOpportunityMarketSponsorAddress(\n sponsor: Address,\n market: Address,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n const addressEncoder = getAddressEncoder();\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n SPONSOR_SEED,\n addressEncoder.encode(sponsor),\n addressEncoder.encode(market),\n ],\n });\n}\n","import {\n type Address,\n getAddressEncoder,\n getProgramDerivedAddress,\n type ProgramDerivedAddress,\n} from \"@solana/kit\";\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from \"../generated\";\n\nexport const STAKE_ACCOUNT_SEED = \"stake_account\";\n\nexport async function getStakeAccountAddress(\n owner: Address,\n market: Address,\n stakeAccountId: number,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n const addressEncoder = getAddressEncoder();\n const idBytes = new Uint8Array(4);\n new DataView(idBytes.buffer).setUint32(0, stakeAccountId, true);\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n STAKE_ACCOUNT_SEED,\n addressEncoder.encode(owner),\n addressEncoder.encode(market),\n idBytes,\n ],\n });\n}\n","import {\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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACQA,iBA2BO;AAEA,IAAM,sCAAsC,IAAI,WAAW;AAAA,EAChE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AACpC,CAAC;AAEM,SAAS,2CAA2C;AACzD,aAAO,+BAAe,4BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AASO,SAAS,gCAA2E;AACzF,aAAO;AAAA,QACL,6BAAiB;AAAA,MACf,CAAC,qBAAiB,+BAAe,4BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,YAAQ,yBAAa,CAAC;AAAA,IACzB,CAAC;AAAA,IACD,CAAC,WAAW;AAAA,MACV,GAAG;AAAA,MACH,eAAe;AAAA,IACjB;AAAA,EACF;AACF;AAEO,SAAS,gCAAuE;AACrF,aAAO,6BAAiB;AAAA,IACtB,CAAC,qBAAiB,+BAAe,4BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,YAAQ,yBAAa,CAAC;AAAA,EACzB,CAAC;AACH;AAEO,SAAS,8BAGd;AACA,aAAO;AAAA,IACL,8BAA8B;AAAA,IAC9B,8BAA8B;AAAA,EAChC;AACF;AAQO,SAAS,0BACd,gBAG8C;AAC9C,aAAO;AAAA,IACL;AAAA,IACA,8BAA8B;AAAA,EAChC;AACF;AAEA,eAAsB,yBAGpB,KACAA,UACA,QACiD;AACjD,QAAM,eAAe,MAAM;AAAA,IACzB;AAAA,IACAA;AAAA,IACA;AAAA,EACF;AACA,sCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,8BAGpB,KACAA,UACA,QACsD;AACtD,QAAM,eAAe,UAAM,gCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,0BAA0B,YAAY;AAC/C;AAEA,eAAsB,4BACpB,KACA,WACA,QACyC;AACzC,QAAM,gBAAgB,MAAM;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,sCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,iCACpB,KACA,WACA,QAC8C;AAC9C,QAAM,gBAAgB,UAAM,iCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc;AAAA,IAAI,CAAC,iBACxB,0BAA0B,YAAY;AAAA,EACxC;AACF;;;AC/IA,IAAAC,cAmCO;AAEA,IAAM,8BAA8B,IAAI,WAAW;AAAA,EACxD;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AACjC,CAAC;AAEM,SAAS,oCAAoC;AAClD,aAAO,gCAAe,6BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AA2BO,SAAS,yBAA6D;AAC3E,aAAO;AAAA,QACL,8BAAiB;AAAA,MACf,CAAC,qBAAiB,gCAAe,6BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,YAAQ,0BAAa,CAAC;AAAA,MACvB,CAAC,8BAA0B,2BAAc,CAAC;AAAA,MAC1C,CAAC,iBAAa,+BAAkB,CAAC;AAAA,MACjC,CAAC,wBAAoB,2BAAc,CAAC;AAAA,MACpC,CAAC,qBAAiB,2BAAc,CAAC;AAAA,MACjC,CAAC,oBAAgB,+BAAkB,CAAC;AAAA,MACpC,CAAC,kCAA8B,2BAAc,CAAC;AAAA,MAC9C,CAAC,gBAAY,iCAAgB,0BAAa,GAAG,EAAE,MAAM,IAAI,CAAC,CAAC;AAAA,IAC7D,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,4BAA4B;AAAA,EACrE;AACF;AAEO,SAAS,yBAAyD;AACvE,aAAO,8BAAiB;AAAA,IACtB,CAAC,qBAAiB,gCAAe,6BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,YAAQ,0BAAa,CAAC;AAAA,IACvB,CAAC,8BAA0B,2BAAc,CAAC;AAAA,IAC1C,CAAC,iBAAa,+BAAkB,CAAC;AAAA,IACjC,CAAC,wBAAoB,2BAAc,CAAC;AAAA,IACpC,CAAC,qBAAiB,2BAAc,CAAC;AAAA,IACjC,CAAC,oBAAgB,+BAAkB,CAAC;AAAA,IACpC,CAAC,kCAA8B,2BAAc,CAAC;AAAA,IAC9C,CAAC,gBAAY,iCAAgB,0BAAa,GAAG,EAAE,MAAM,IAAI,CAAC,CAAC;AAAA,EAC7D,CAAC;AACH;AAEO,SAAS,uBAGd;AACA,aAAO,0BAAa,uBAAuB,GAAG,uBAAuB,CAAC;AACxE;AAQO,SAAS,mBACd,gBACwE;AACxE,aAAO;AAAA,IACL;AAAA,IACA,uBAAuB;AAAA,EACzB;AACF;AAEA,eAAsB,kBACpB,KACAC,UACA,QAC0C;AAC1C,QAAM,eAAe,MAAM,uBAAuB,KAAKA,UAAS,MAAM;AACtE,uCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,uBACpB,KACAA,UACA,QAC+C;AAC/C,QAAM,eAAe,UAAM,iCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,mBAAmB,YAAY;AACxC;AAEA,eAAsB,qBACpB,KACA,WACA,QACkC;AAClC,QAAM,gBAAgB,MAAM,0BAA0B,KAAK,WAAW,MAAM;AAC5E,uCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,0BACpB,KACA,WACA,QACuC;AACvC,QAAM,gBAAgB,UAAM,kCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc,IAAI,CAAC,iBAAiB,mBAAmB,YAAY,CAAC;AAC7E;;;ACjKA,IAAAC,eA2BO;;;AC3BP,IAAAC,cAOO;AAeA,SAAS,uBAAyD;AACvE,aAAO,8BAAiB;AAAA,IACtB,CAAC,mBAAmB,gBAAgB,CAAC;AAAA,IACrC,CAAC,qBAAqB,gBAAgB,CAAC;AAAA,EACzC,CAAC;AACH;AAEO,SAAS,uBAAqD;AACnE,aAAO,8BAAiB;AAAA,IACtB,CAAC,mBAAmB,gBAAgB,CAAC;AAAA,IACrC,CAAC,qBAAqB,gBAAgB,CAAC;AAAA,EACzC,CAAC;AACH;AAEO,SAAS,qBAGd;AACA,aAAO,0BAAa,qBAAqB,GAAG,qBAAqB,CAAC;AACpE;;;ACzCA,IAAAC,cAWO;AAMA,SAAS,gCAA2E;AACzF,aAAO,6BAAgB,KAAC,iCAAgB,0BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;AACxE;AAEO,SAAS,gCAAuE;AACrF,aAAO,6BAAgB,KAAC,iCAAgB,0BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;AACxE;AAEO,SAAS,8BAGd;AACA,aAAO;AAAA,IACL,8BAA8B;AAAA,IAC9B,8BAA8B;AAAA,EAChC;AACF;;;ACjCA,IAAAC,cAaO;AA0BA,SAAS,0BAAsD;AACpE,aAAO,0CAA6B;AAAA,IAClC;AAAA,MACE;AAAA,UACA,8BAAiB;AAAA,QACf,CAAC,cAAU,6BAAgB,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAAA,MAC9D,CAAC;AAAA,IACH;AAAA,IACA;AAAA,MACE;AAAA,UACA,8BAAiB;AAAA,QACf,CAAC,cAAU,6BAAgB,CAAC,+BAA+B,CAAC,CAAC,CAAC;AAAA,MAChE,CAAC;AAAA,IACH;AAAA,IACA;AAAA,MACE;AAAA,UACA,8BAAiB;AAAA,QACf,CAAC,cAAU,6BAAgB,CAAC,gCAAgC,CAAC,CAAC,CAAC;AAAA,MACjE,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAEO,SAAS,0BAAkD;AAChE,aAAO,0CAA6B;AAAA,IAClC;AAAA,MACE;AAAA,UACA,8BAAiB;AAAA,QACf,CAAC,cAAU,6BAAgB,CAAC,6BAA6B,CAAC,CAAC,CAAC;AAAA,MAC9D,CAAC;AAAA,IACH;AAAA,IACA;AAAA,MACE;AAAA,UACA,8BAAiB;AAAA,QACf,CAAC,cAAU,6BAAgB,CAAC,+BAA+B,CAAC,CAAC,CAAC;AAAA,MAChE,CAAC;AAAA,IACH;AAAA,IACA;AAAA,MACE;AAAA,UACA,8BAAiB;AAAA,QACf,CAAC,cAAU,6BAAgB,CAAC,gCAAgC,CAAC,CAAC,CAAC;AAAA,MACjE,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAEO,SAAS,wBAGd;AACA,aAAO,0BAAa,wBAAwB,GAAG,wBAAwB,CAAC;AAC1E;AA2BO,SAAS,cACd,MACA,MACA;AACA,SAAO,MAAM,QAAQ,IAAI,IACrB,EAAE,QAAQ,MAAM,QAAQ,KAAK,IAC7B,EAAE,QAAQ,MAAM,GAAI,QAAQ,CAAC,EAAG;AACtC;AAEO,SAAS,gBACd,MACA,OACwC;AACxC,SAAO,MAAM,WAAW;AAC1B;;;ACnIA,IAAAC,cASO;AAmBA,SAAS,sCAA8E;AAC5F,aAAO,8BAAiB;AAAA,IACtB,CAAC,kBAAc,2BAAc,CAAC;AAAA,IAC9B,CAAC,aAAa,+BAA+B,CAAC;AAAA,EAChD,CAAC;AACH;AAEO,SAAS,sCAA0E;AACxF,aAAO,8BAAiB;AAAA,IACtB,CAAC,kBAAc,2BAAc,CAAC;AAAA,IAC9B,CAAC,aAAa,+BAA+B,CAAC;AAAA,EAChD,CAAC;AACH;AAEO,SAAS,oCAGd;AACA,aAAO;AAAA,IACL,oCAAoC;AAAA,IACpC,oCAAoC;AAAA,EACtC;AACF;;;AClDA,IAAAC,cASO;AAuBA,SAAS,iCAAoE;AAClF,aAAO,8BAAiB;AAAA,IACtB,CAAC,kBAAc,6BAAgB,oBAAoB,CAAC,CAAC;AAAA,IACrD,CAAC,eAAW,6BAAgB,iBAAiB,CAAC,CAAC;AAAA,EACjD,CAAC;AACH;AAEO,SAAS,iCAAgE;AAC9E,aAAO,8BAAiB;AAAA,IACtB,CAAC,kBAAc,6BAAgB,oBAAoB,CAAC,CAAC;AAAA,IACrD,CAAC,eAAW,6BAAgB,iBAAiB,CAAC,CAAC;AAAA,EACjD,CAAC;AACH;AAEO,SAAS,+BAGd;AACA,aAAO;AAAA,IACL,+BAA+B;AAAA,IAC/B,+BAA+B;AAAA,EACjC;AACF;;;ACtDA,IAAAC,cASO;AAOA,SAAS,kBAA+C;AAC7D,aAAO,6BAAgB,KAAC,2BAAc,CAAC,CAAC;AAC1C;AAEO,SAAS,kBAA2C;AACzD,aAAO,6BAAgB,KAAC,2BAAc,CAAC,CAAC;AAC1C;AAEO,SAAS,gBAAkD;AAChE,aAAO,0BAAa,gBAAgB,GAAG,gBAAgB,CAAC;AAC1D;;;AC1BA,IAAAC,cAcO;AAkBA,SAAS,6BAAqE;AACnF,aAAO,8BAAiB;AAAA,IACtB,CAAC,kBAAc,+BAAkB,CAAC;AAAA,IAClC,CAAC,YAAQ,+BAAkB,CAAC;AAAA,IAC5B,CAAC,oBAAgB,+BAAkB,CAAC;AAAA,IACpC,CAAC,cAAU,2BAAc,CAAC;AAAA,IAC1B,CAAC,iBAAa,2BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,6BAAiE;AAC/E,aAAO,8BAAiB;AAAA,IACtB,CAAC,kBAAc,+BAAkB,CAAC;AAAA,IAClC,CAAC,YAAQ,+BAAkB,CAAC;AAAA,IAC5B,CAAC,oBAAgB,+BAAkB,CAAC;AAAA,IACpC,CAAC,cAAU,2BAAc,CAAC;AAAA,IAC1B,CAAC,iBAAa,2BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,2BAGd;AACA,aAAO;AAAA,IACL,2BAA2B;AAAA,IAC3B,2BAA2B;AAAA,EAC7B;AACF;;;AC5DA,IAAAC,eAOO;AAEA,IAAK,qBAAL,kBAAKC,wBAAL;AACL,EAAAA,wCAAA;AACA,EAAAA,wCAAA;AACA,EAAAA,wCAAA;AAHU,SAAAA;AAAA,GAAA;AAQL,SAAS,+BAAyE;AACvF,aAAO,6BAAe,kBAAkB;AAC1C;AAEO,SAAS,+BAAqE;AACnF,aAAO,6BAAe,kBAAkB;AAC1C;AAEO,SAAS,6BAGd;AACA,aAAO;AAAA,IACL,6BAA6B;AAAA,IAC7B,6BAA6B;AAAA,EAC/B;AACF;;;ACjCA,IAAAC,eAwBO;AAgCA,SAAS,+BAAgE;AAC9E,aAAO,+BAAiB;AAAA,IACtB,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,aAAS,4BAAc,CAAC;AAAA,IACzB,CAAC,YAAQ,gCAAkB,CAAC;AAAA,IAC5B,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,oBAAgB,4BAAc,CAAC;AAAA,IAChC,CAAC,8BAA0B,4BAAc,CAAC;AAAA,IAC1C,CAAC,uBAAmB,mCAAiB,gCAAkB,CAAC,CAAC;AAAA,IACzD,CAAC,8BAA0B,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IACxE,CAAC,2BAAuB,4BAAc,CAAC;AAAA,IACvC,CAAC,yBAAqB,gCAAkB,CAAC;AAAA,IACzC,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,+BAA4D;AAC1E,aAAO,+BAAiB;AAAA,IACtB,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,aAAS,4BAAc,CAAC;AAAA,IACzB,CAAC,YAAQ,gCAAkB,CAAC;AAAA,IAC5B,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,oBAAgB,4BAAc,CAAC;AAAA,IAChC,CAAC,8BAA0B,4BAAc,CAAC;AAAA,IAC1C,CAAC,uBAAmB,mCAAiB,gCAAkB,CAAC,CAAC;AAAA,IACzD,CAAC,8BAA0B,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IACxE,CAAC,2BAAuB,4BAAc,CAAC;AAAA,IACvC,CAAC,yBAAqB,gCAAkB,CAAC;AAAA,IACzC,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,6BAGd;AACA,aAAO;AAAA,IACL,6BAA6B;AAAA,IAC7B,6BAA6B;AAAA,EAC/B;AACF;;;AClGA,IAAAC,eAcO;AAgBA,SAAS,8BAAuE;AACrF,aAAO,+BAAiB;AAAA,IACtB,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,qBAAiB,4BAAc,CAAC;AAAA,IACjC,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,8BAAmE;AACjF,aAAO,+BAAiB;AAAA,IACtB,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,qBAAiB,4BAAc,CAAC;AAAA,IACjC,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,4BAGd;AACA,aAAO;AAAA,IACL,4BAA4B;AAAA,IAC5B,4BAA4B;AAAA,EAC9B;AACF;;;ACxDA,IAAAC,eAcO;AAkBA,SAAS,qCAAqF;AACnG,aAAO,+BAAiB;AAAA,IACtB,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,UAAM,4BAAc,CAAC;AAAA,IACtB,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,qCAAiF;AAC/F,aAAO,+BAAiB;AAAA,IACtB,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,UAAM,4BAAc,CAAC;AAAA,IACtB,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,mCAGd;AACA,aAAO;AAAA,IACL,mCAAmC;AAAA,IACnC,mCAAmC;AAAA,EACrC;AACF;;;AC5DA,IAAAC,eAOO;AAGA,IAAK,YAAL,kBAAKC,eAAL;AACL,EAAAA,sBAAA;AACA,EAAAA,sBAAA;AAFU,SAAAA;AAAA,GAAA;AAOL,SAAS,sBAAuD;AACrE,aAAO,6BAAe,SAAS;AACjC;AAEO,SAAS,sBAAmD;AACjE,aAAO,6BAAe,SAAS;AACjC;AAEO,SAAS,oBAA8D;AAC5E,aAAO,2BAAa,oBAAoB,GAAG,oBAAoB,CAAC;AAClE;;;AC3BA,IAAAC,eAWO;AAWA,SAAS,yBAA6D;AAC3E,aAAO,+BAAiB;AAAA,IACtB,CAAC,UAAM,kCAAgB,2BAAa,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;AAAA,IACnD,CAAC,cAAU,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IACxD,CAAC,gBAAY,2BAAa,CAAC;AAAA,EAC7B,CAAC;AACH;AAEO,SAAS,yBAAyD;AACvE,aAAO,+BAAiB;AAAA,IACtB,CAAC,UAAM,kCAAgB,2BAAa,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;AAAA,IACnD,CAAC,cAAU,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IACxD,CAAC,gBAAY,2BAAa,CAAC;AAAA,EAC7B,CAAC;AACH;AAEO,SAAS,uBAGd;AACA,aAAO,2BAAa,uBAAuB,GAAG,uBAAuB,CAAC;AACxE;;;AC3CA,IAAAC,eAaO;AAoBA,SAAS,oBAAmD;AACjE,aAAO,+BAAiB;AAAA,IACtB,CAAC,cAAU,4BAAc,CAAC;AAAA,IAC1B,CAAC,2BAAuB,4BAAc,CAAC;AAAA,IACvC,CAAC,YAAQ,2BAAa,CAAC;AAAA,EACzB,CAAC;AACH;AAEO,SAAS,oBAA+C;AAC7D,aAAO,+BAAiB;AAAA,IACtB,CAAC,cAAU,4BAAc,CAAC;AAAA,IAC1B,CAAC,2BAAuB,4BAAc,CAAC;AAAA,IACvC,CAAC,YAAQ,2BAAa,CAAC;AAAA,EACzB,CAAC;AACH;AAEO,SAAS,kBAAwD;AACtE,aAAO,2BAAa,kBAAkB,GAAG,kBAAkB,CAAC;AAC9D;;;ACnDA,IAAAC,eAiBO;AAMA,SAAS,kCAAsE;AACpF,aAAO,+BAAiB;AAAA,IACtB,CAAC,cAAU,uCAAqB,6BAAe,OAAG,4BAAc,CAAC,CAAC;AAAA,IAClE,CAAC,YAAQ,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,EACxD,CAAC;AACH;AAEO,SAAS,kCAAkE;AAChF,aAAO,+BAAiB;AAAA,IACtB,CAAC,cAAU,uCAAqB,6BAAe,OAAG,4BAAc,CAAC,CAAC;AAAA,IAClE,CAAC,YAAQ,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,EACxD,CAAC;AACH;AAEO,SAAS,gCAGd;AACA,aAAO;AAAA,IACL,gCAAgC;AAAA,IAChC,gCAAgC;AAAA,EAClC;AACF;;;AC7CA,IAAAC,eAYO;AASA,SAAS,iCAA6E;AAC3F,aAAO,+BAAiB;AAAA,IACtB,CAAC,mBAAe,gCAAkB,CAAC;AAAA,IACnC,CAAC,kBAAc,gCAAkB,CAAC;AAAA,EACpC,CAAC;AACH;AAEO,SAAS,iCAAyE;AACvF,aAAO,+BAAiB;AAAA,IACtB,CAAC,mBAAe,gCAAkB,CAAC;AAAA,IACnC,CAAC,kBAAc,gCAAkB,CAAC;AAAA,EACpC,CAAC;AACH;AAEO,SAAS,+BAGd;AACA,aAAO;AAAA,IACL,+BAA+B;AAAA,IAC/B,+BAA+B;AAAA,EACjC;AACF;;;AC3CA,IAAAC,eAOO;AAOA,IAAK,SAAL,kBAAKC,YAAL;AACL,EAAAA,gBAAA;AACA,EAAAA,gBAAA;AACA,EAAAA,gBAAA;AACA,EAAAA,gBAAA;AACA,EAAAA,gBAAA;AACA,EAAAA,gBAAA;AACA,EAAAA,gBAAA;AACA,EAAAA,gBAAA;AACA,EAAAA,gBAAA;AACA,EAAAA,gBAAA;AACA,EAAAA,gBAAA;AACA,EAAAA,gBAAA;AACA,EAAAA,gBAAA;AACA,EAAAA,gBAAA;AACA,EAAAA,gBAAA;AAfU,SAAAA;AAAA,GAAA;AAoBL,SAAS,mBAAiD;AAC/D,aAAO,6BAAe,MAAM;AAC9B;AAEO,SAAS,mBAA6C;AAC3D,aAAO,6BAAe,MAAM;AAC9B;AAEO,SAAS,iBAAqD;AACnE,aAAO,2BAAa,iBAAiB,GAAG,iBAAiB,CAAC;AAC5D;;;AC5CA,IAAAC,eAOO;AASA,IAAK,YAAL,kBAAKC,eAAL;AACL,EAAAA,sBAAA;AACA,EAAAA,sBAAA;AACA,EAAAA,sBAAA;AACA,EAAAA,sBAAA;AACA,EAAAA,sBAAA;AACA,EAAAA,sBAAA;AACA,EAAAA,sBAAA;AACA,EAAAA,sBAAA;AACA,EAAAA,sBAAA;AACA,EAAAA,sBAAA;AACA,EAAAA,sBAAA;AACA,EAAAA,sBAAA;AACA,EAAAA,sBAAA;AACA,EAAAA,sBAAA;AACA,EAAAA,sBAAA;AACA,EAAAA,sBAAA;AAhBU,SAAAA;AAAA,GAAA;AAqBL,SAAS,sBAAuD;AACrE,aAAO,6BAAe,SAAS;AACjC;AAEO,SAAS,sBAAmD;AACjE,aAAO,6BAAe,SAAS;AACjC;AAEO,SAAS,oBAA8D;AAC5E,aAAO,2BAAa,oBAAoB,GAAG,oBAAoB,CAAC;AAClE;;;AC/CA,IAAAC,eAcO;AAgBA,SAAS,sCAAuF;AACrG,aAAO,+BAAiB;AAAA,IACtB,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,IACjC,CAAC,uBAAmB,4BAAc,CAAC;AAAA,IACnC,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,sCAAmF;AACjG,aAAO,+BAAiB;AAAA,IACtB,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,IACjC,CAAC,uBAAmB,4BAAc,CAAC;AAAA,IACnC,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,oCAGd;AACA,aAAO;AAAA,IACL,oCAAoC;AAAA,IACpC,oCAAoC;AAAA,EACtC;AACF;;;ACxDA,IAAAC,eASO;AAUA,SAAS,8BAAuE;AACrF,aAAO,+BAAiB,CAAC,CAAC,cAAU,4BAAc,CAAC,CAAC,CAAC;AACvD;AAEO,SAAS,8BAAmE;AACjF,aAAO,+BAAiB,CAAC,CAAC,cAAU,4BAAc,CAAC,CAAC,CAAC;AACvD;AAEO,SAAS,4BAGd;AACA,aAAO;AAAA,IACL,4BAA4B;AAAA,IAC5B,4BAA4B;AAAA,EAC9B;AACF;;;ACnCA,IAAAC,eAgBO;AAoBA,SAAS,6BAAqE;AACnF,aAAO,+BAAiB;AAAA,IACtB,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,cAAU,4BAAc,CAAC;AAAA,IAC1B,CAAC,yBAAqB,4BAAc,CAAC;AAAA,IACrC,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,6BAAiE;AAC/E,aAAO,+BAAiB;AAAA,IACtB,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,cAAU,4BAAc,CAAC;AAAA,IAC1B,CAAC,yBAAqB,4BAAc,CAAC;AAAA,IACrC,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,2BAGd;AACA,aAAO;AAAA,IACL,2BAA2B;AAAA,IAC3B,2BAA2B;AAAA,EAC7B;AACF;;;AClEA,IAAAC,eAcO;AA4BA,SAAS,+BAAyE;AACvF,aAAO,+BAAiB;AAAA,IACtB,CAAC,aAAS,gCAAkB,CAAC;AAAA,IAC7B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,gBAAY,4BAAc,CAAC;AAAA,IAC5B,CAAC,oBAAgB,4BAAc,CAAC;AAAA,IAChC,CAAC,yBAAqB,4BAAc,CAAC;AAAA,IACrC,CAAC,2BAAuB,4BAAc,CAAC;AAAA,IACvC,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,aAAS,4BAAc,CAAC;AAAA,IACzB,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,+BAAqE;AACnF,aAAO,+BAAiB;AAAA,IACtB,CAAC,aAAS,gCAAkB,CAAC;AAAA,IAC7B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,gBAAY,4BAAc,CAAC;AAAA,IAC5B,CAAC,oBAAgB,4BAAc,CAAC;AAAA,IAChC,CAAC,yBAAqB,4BAAc,CAAC;AAAA,IACrC,CAAC,2BAAuB,4BAAc,CAAC;AAAA,IACvC,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,aAAS,4BAAc,CAAC;AAAA,IACzB,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,6BAGd;AACA,aAAO;AAAA,IACL,6BAA6B;AAAA,IAC7B,6BAA6B;AAAA,EAC/B;AACF;;;AChFA,IAAAC,eAcO;AAkBA,SAAS,iCAA6E;AAC3F,aAAO,+BAAiB;AAAA,IACtB,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,oBAAgB,4BAAc,CAAC;AAAA,IAChC,CAAC,0BAAsB,gCAAkB,CAAC;AAAA,IAC1C,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,iCAAyE;AACvF,aAAO,+BAAiB;AAAA,IACtB,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,oBAAgB,4BAAc,CAAC;AAAA,IAChC,CAAC,0BAAsB,gCAAkB,CAAC;AAAA,IAC1C,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,+BAGd;AACA,aAAO;AAAA,IACL,+BAA+B;AAAA,IAC/B,+BAA+B;AAAA,EACjC;AACF;;;AC5DA,IAAAC,eAcO;AAkBA,SAAS,yCAA6F;AAC3G,aAAO,+BAAiB;AAAA,IACtB,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,aAAS,gCAAkB,CAAC;AAAA,IAC7B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,iBAAa,4BAAc,CAAC;AAAA,IAC7B,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,yCAAyF;AACvG,aAAO,+BAAiB;AAAA,IACtB,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,aAAS,gCAAkB,CAAC;AAAA,IAC7B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,iBAAa,4BAAc,CAAC;AAAA,IAC7B,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,uCAGd;AACA,aAAO;AAAA,IACL,uCAAuC;AAAA,IACvC,uCAAuC;AAAA,EACzC;AACF;;;AC5DA,IAAAC,eAoBO;AA0BA,SAAS,wBAA2D;AACzE,aAAO,+BAAiB;AAAA,IACtB,CAAC,YAAQ,gCAAkB,CAAC;AAAA,IAC5B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,4BAAwB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IACtE,CAAC,uBAAmB,6BAAe,CAAC;AAAA,IACpC;AAAA,MACE;AAAA,UACA,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC;AAAA,IAC9C;AAAA,IACA,CAAC,iCAA6B,6BAAe,CAAC;AAAA,IAC9C,CAAC,cAAU,4BAAc,CAAC;AAAA,IAC1B,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,wBAAuD;AACrE,aAAO,+BAAiB;AAAA,IACtB,CAAC,YAAQ,gCAAkB,CAAC;AAAA,IAC5B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,4BAAwB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IACtE,CAAC,uBAAmB,6BAAe,CAAC;AAAA,IACpC;AAAA,MACE;AAAA,UACA,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC;AAAA,IAC9C;AAAA,IACA,CAAC,iCAA6B,6BAAe,CAAC;AAAA,IAC9C,CAAC,cAAU,4BAAc,CAAC;AAAA,IAC1B,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,sBAGd;AACA,aAAO,2BAAa,sBAAsB,GAAG,sBAAsB,CAAC;AACtE;;;ACrFA,IAAAC,eAOO;AAgBA,SAAS,wBAA2D;AACzE,aAAO,+BAAiB,CAAC,CAAC,UAAU,6BAA6B,CAAC,CAAC,CAAC;AACtE;AAEO,SAAS,wBAAuD;AACrE,aAAO,+BAAiB,CAAC,CAAC,UAAU,6BAA6B,CAAC,CAAC,CAAC;AACtE;AAEO,SAAS,sBAGd;AACA,aAAO,2BAAa,sBAAsB,GAAG,sBAAsB,CAAC;AACtE;;;ACpCA,IAAAC,eAaO;AA4BA,SAAS,+BAAyE;AACvF,aAAO,+BAAiB;AAAA,IACtB;AAAA,MACE;AAAA,UACA,+BAAiB;AAAA,QACf,CAAC,qBAAiB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,QAC/D,CAAC,aAAS,6BAAe,CAAC;AAAA,QAC1B;AAAA,UACE;AAAA,cACA,kCAAgB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG;AAAA,YAC7D,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA;AAAA,MACE;AAAA,UACA,+BAAiB;AAAA,QACf,CAAC,qBAAiB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,QAC/D,CAAC,aAAS,6BAAe,CAAC;AAAA,QAC1B;AAAA,UACE;AAAA,cACA,kCAAgB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG;AAAA,YAC7D,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAEO,SAAS,+BAAqE;AACnF,aAAO,+BAAiB;AAAA,IACtB;AAAA,MACE;AAAA,UACA,+BAAiB;AAAA,QACf,CAAC,qBAAiB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,QAC/D,CAAC,aAAS,6BAAe,CAAC;AAAA,QAC1B;AAAA,UACE;AAAA,cACA,kCAAgB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG;AAAA,YAC7D,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA;AAAA,MACE;AAAA,UACA,+BAAiB;AAAA,QACf,CAAC,qBAAiB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,QAC/D,CAAC,aAAS,6BAAe,CAAC;AAAA,QAC1B;AAAA,UACE;AAAA,cACA,kCAAgB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG;AAAA,YAC7D,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAEO,SAAS,6BAGd;AACA,aAAO;AAAA,IACL,6BAA6B;AAAA,IAC7B,6BAA6B;AAAA,EAC/B;AACF;;;AC/GA,IAAAC,eAcO;AAkBA,SAAS,gCAA2E;AACzF,aAAO,+BAAiB;AAAA,IACtB,CAAC,aAAS,gCAAkB,CAAC;AAAA,IAC7B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,cAAU,4BAAc,CAAC;AAAA,IAC1B,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,gCAAuE;AACrF,aAAO,+BAAiB;AAAA,IACtB,CAAC,aAAS,gCAAkB,CAAC;AAAA,IAC7B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,cAAU,4BAAc,CAAC;AAAA,IAC1B,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,8BAGd;AACA,aAAO;AAAA,IACL,8BAA8B;AAAA,IAC9B,8BAA8B;AAAA,EAChC;AACF;;;AC5DA,IAAAC,eAcO;AAoBA,SAAS,+BAAyE;AACvF,aAAO,+BAAiB;AAAA,IACtB,CAAC,YAAQ,gCAAkB,CAAC;AAAA,IAC5B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,sBAAkB,4BAAc,CAAC;AAAA,IAClC,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,+BAAqE;AACnF,aAAO,+BAAiB;AAAA,IACtB,CAAC,YAAQ,gCAAkB,CAAC;AAAA,IAC5B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,sBAAkB,4BAAc,CAAC;AAAA,IAClC,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,6BAGd;AACA,aAAO;AAAA,IACL,6BAA6B;AAAA,IAC7B,6BAA6B;AAAA,EAC/B;AACF;;;AChEA,IAAAC,eAgBO;AAoBA,SAAS,kCAA+E;AAC7F,aAAO,+BAAiB;AAAA,IACtB,CAAC,aAAS,gCAAkB,CAAC;AAAA,IAC7B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,sBAAkB,4BAAc,CAAC;AAAA,IAClC,CAAC,sBAAkB,4BAAc,CAAC;AAAA,IAClC,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,kCAA2E;AACzF,aAAO,+BAAiB;AAAA,IACtB,CAAC,aAAS,gCAAkB,CAAC;AAAA,IAC7B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,sBAAkB,4BAAc,CAAC;AAAA,IAClC,CAAC,sBAAkB,4BAAc,CAAC;AAAA,IAClC,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,gCAGd;AACA,aAAO;AAAA,IACL,gCAAgC;AAAA,IAChC,gCAAgC;AAAA,EAClC;AACF;;;AClEA,IAAAC,eAcO;AA0BA,SAAS,kCAA+E;AAC7F,aAAO,+BAAiB;AAAA,IACtB,CAAC,aAAS,gCAAkB,CAAC;AAAA,IAC7B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,gBAAY,4BAAc,CAAC;AAAA,IAC5B,CAAC,iBAAa,4BAAc,CAAC;AAAA,IAC7B,CAAC,iBAAa,4BAAc,CAAC;AAAA,IAC7B,CAAC,kBAAc,4BAAc,CAAC;AAAA,IAC9B,CAAC,kBAAc,4BAAc,CAAC;AAAA,IAC9B,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,kCAA2E;AACzF,aAAO,+BAAiB;AAAA,IACtB,CAAC,aAAS,gCAAkB,CAAC;AAAA,IAC7B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,gBAAY,4BAAc,CAAC;AAAA,IAC5B,CAAC,iBAAa,4BAAc,CAAC;AAAA,IAC7B,CAAC,iBAAa,4BAAc,CAAC;AAAA,IAC7B,CAAC,kBAAc,4BAAc,CAAC;AAAA,IAC9B,CAAC,kBAAc,4BAAc,CAAC;AAAA,IAC9B,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,gCAGd;AACA,aAAO;AAAA,IACL,gCAAgC;AAAA,IAChC,gCAAgC;AAAA,EAClC;AACF;;;AC5EA,IAAAC,eASO;AAMA,SAAS,sBAAuD;AACrE,aAAO,+BAAiB,CAAC,CAAC,iBAAa,4BAAc,CAAC,CAAC,CAAC;AAC1D;AAEO,SAAS,sBAAmD;AACjE,aAAO,+BAAiB,CAAC,CAAC,iBAAa,4BAAc,CAAC,CAAC,CAAC;AAC1D;AAEO,SAAS,oBAA8D;AAC5E,aAAO,2BAAa,oBAAoB,GAAG,oBAAoB,CAAC;AAClE;;;ACzBA,IAAAC,eAYO;AAgBA,SAAS,0BAA+D;AAC7E,aAAO,+BAAiB;AAAA,IACtB,CAAC,YAAQ,gCAAkB,CAAC;AAAA,IAC5B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,0BAA2D;AACzE,aAAO,+BAAiB;AAAA,IACtB,CAAC,YAAQ,gCAAkB,CAAC;AAAA,IAC5B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,wBAGd;AACA,aAAO,2BAAa,wBAAwB,GAAG,wBAAwB,CAAC;AAC1E;;;ACnDA,IAAAC,eAcO;AAkBA,SAAS,kCAA+E;AAC7F,aAAO,+BAAiB;AAAA,IACtB,CAAC,YAAQ,gCAAkB,CAAC;AAAA,IAC5B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,8BAA0B,4BAAc,CAAC;AAAA,IAC1C,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,kCAA2E;AACzF,aAAO,+BAAiB;AAAA,IACtB,CAAC,YAAQ,gCAAkB,CAAC;AAAA,IAC5B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,8BAA0B,4BAAc,CAAC;AAAA,IAC1C,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,gCAGd;AACA,aAAO;AAAA,IACL,gCAAgC;AAAA,IAChC,gCAAgC;AAAA,EAClC;AACF;;;AC5DA,IAAAC,eAWO;AAWA,SAAS,2BAAiE;AAC/E,aAAO,+BAAiB;AAAA,IACtB,CAAC,oBAAgB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAC9D,CAAC,2BAAuB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IACrE,CAAC,qBAAiB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAC/D,CAAC,2BAAuB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,EACvE,CAAC;AACH;AAEO,SAAS,2BAA6D;AAC3E,aAAO,+BAAiB;AAAA,IACtB,CAAC,oBAAgB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAC9D,CAAC,2BAAuB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IACrE,CAAC,qBAAiB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAC/D,CAAC,2BAAuB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,EACvE,CAAC;AACH;AAEO,SAAS,yBAGd;AACA,aAAO,2BAAa,yBAAyB,GAAG,yBAAyB,CAAC;AAC5E;;;AC7CA,IAAAC,eAWO;AASA,SAAS,0BAA+D;AAC7E,aAAO,+BAAiB;AAAA,IACtB,CAAC,gBAAY,4BAAc,CAAC;AAAA,IAC5B,CAAC,wBAAoB,2BAAa,CAAC;AAAA,EACrC,CAAC;AACH;AAEO,SAAS,0BAA2D;AACzE,aAAO,+BAAiB;AAAA,IACtB,CAAC,gBAAY,4BAAc,CAAC;AAAA,IAC5B,CAAC,wBAAoB,2BAAa,CAAC;AAAA,EACrC,CAAC;AACH;AAEO,SAAS,wBAGd;AACA,aAAO,2BAAa,wBAAwB,GAAG,wBAAwB,CAAC;AAC1E;;;ACvCA,IAAAC,eAcO;AAsBA,SAAS,wCAAkF;AAChG,aAAO,+BAAiB;AAAA,IACtB,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,IACjC,CAAC,uBAAmB,8BAAgB,wBAAwB,CAAC,CAAC;AAAA,IAC9D,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,wCAA8E;AAC5F,aAAO,+BAAiB;AAAA,IACtB,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,IACjC,CAAC,uBAAmB,8BAAgB,wBAAwB,CAAC,CAAC;AAAA,IAC9D,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,sCAGd;AACA,aAAO;AAAA,IACL,sCAAsC;AAAA,IACtC,sCAAsC;AAAA,EACxC;AACF;;;ArCvBO,IAAM,8BAA8B,IAAI,WAAW;AAAA,EACxD;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAClC,CAAC;AAEM,SAAS,oCAAoC;AAClD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAiBO,SAAS,yBAA6D;AAC3E,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,cAAc,gBAAgB,CAAC;AAAA,MAChC,CAAC,gBAAgB,gBAAgB,CAAC;AAAA,MAClC,CAAC,uBAAuB,oBAAoB,CAAC;AAAA,MAC7C,CAAC,YAAQ,2BAAa,CAAC;AAAA,IACzB,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,4BAA4B;AAAA,EACrE;AACF;AAEO,SAAS,yBAAyD;AACvE,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,cAAc,gBAAgB,CAAC;AAAA,IAChC,CAAC,gBAAgB,gBAAgB,CAAC;AAAA,IAClC,CAAC,uBAAuB,oBAAoB,CAAC;AAAA,IAC7C,CAAC,YAAQ,2BAAa,CAAC;AAAA,EACzB,CAAC;AACH;AAEO,SAAS,uBAGd;AACA,aAAO,2BAAa,uBAAuB,GAAG,uBAAuB,CAAC;AACxE;AAQO,SAAS,mBACd,gBACwE;AACxE,aAAO;AAAA,IACL;AAAA,IACA,uBAAuB;AAAA,EACzB;AACF;AAEA,eAAsB,kBACpB,KACAC,UACA,QAC0C;AAC1C,QAAM,eAAe,MAAM,uBAAuB,KAAKA,UAAS,MAAM;AACtE,wCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,uBACpB,KACAA,UACA,QAC+C;AAC/C,QAAM,eAAe,UAAM,kCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,mBAAmB,YAAY;AACxC;AAEA,eAAsB,qBACpB,KACA,WACA,QACkC;AAClC,QAAM,gBAAgB,MAAM,0BAA0B,KAAK,WAAW,MAAM;AAC5E,wCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,0BACpB,KACA,WACA,QACuC;AACvC,QAAM,gBAAgB,UAAM,mCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc,IAAI,CAAC,iBAAiB,mBAAmB,YAAY,CAAC;AAC7E;;;AsCjJA,IAAAC,eA+CO;AAwBA,IAAM,wBAAwB,IAAI,WAAW;AAAA,EAClD;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AACpC,CAAC;AAEM,SAAS,+BAA+B;AAC7C,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE,OAAO,qBAAqB;AAC1E;AA2CO,SAAS,oBAA0C;AACxD,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,cAAU,+BAAiB,uBAAuB,CAAC,CAAC;AAAA,MACrD,CAAC,iBAAa,mCAAiB,gCAAkB,CAAC,CAAC;AAAA,MACnD,CAAC,mBAAe,4BAAc,CAAC;AAAA,MAC/B,CAAC,cAAc,qBAAqB,CAAC;AAAA,MACrC,CAAC,mBAAe,4BAAc,CAAC;AAAA,MAC/B,CAAC,eAAW,4BAAc,CAAC;AAAA,MAC3B,CAAC,wBAAoB,kCAAgB,4BAAc,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,MACnE,CAAC,oBAAoB,gBAAgB,CAAC;AAAA,MACtC,CAAC,aAAS,8BAAgB,kBAAkB,CAAC,CAAC;AAAA,MAC9C,CAAC,oBAAgB,kCAAgB,4BAAc,CAAC,CAAC;AAAA,MACjD;AAAA,QACE;AAAA,YACA,2CAA6B;AAAA,UAC3B;AAAA,YACE;AAAA,gBACA,+BAAiB;AAAA,cACf,CAAC,cAAU,8BAAgB,CAAC,8BAA8B,CAAC,CAAC,CAAC;AAAA,YAC/D,CAAC;AAAA,UACH;AAAA,UACA;AAAA,YACE;AAAA,gBACA,+BAAiB;AAAA,cACf;AAAA,gBACE;AAAA,oBACA,8BAAgB;AAAA,kBACd,8BAA8B;AAAA,sBAC9B,kCAAgB,gCAAkB,CAAC;AAAA,gBACrC,CAAC;AAAA,cACH;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,CAAC,YAAQ,2BAAa,CAAC;AAAA,IACzB,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,sBAAsB;AAAA,EAC/D;AACF;AAEO,SAAS,oBAAsC;AACpD,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,cAAU,+BAAiB,uBAAuB,CAAC,CAAC;AAAA,IACrD,CAAC,iBAAa,mCAAiB,gCAAkB,CAAC,CAAC;AAAA,IACnD,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,cAAc,qBAAqB,CAAC;AAAA,IACrC,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,eAAW,4BAAc,CAAC;AAAA,IAC3B,CAAC,wBAAoB,kCAAgB,4BAAc,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IACnE,CAAC,oBAAoB,gBAAgB,CAAC;AAAA,IACtC,CAAC,aAAS,8BAAgB,kBAAkB,CAAC,CAAC;AAAA,IAC9C,CAAC,oBAAgB,kCAAgB,4BAAc,CAAC,CAAC;AAAA,IACjD;AAAA,MACE;AAAA,UACA,2CAA6B;AAAA,QAC3B;AAAA,UACE;AAAA,cACA,+BAAiB;AAAA,YACf,CAAC,cAAU,8BAAgB,CAAC,8BAA8B,CAAC,CAAC,CAAC;AAAA,UAC/D,CAAC;AAAA,QACH;AAAA,QACA;AAAA,UACE;AAAA,cACA,+BAAiB;AAAA,YACf;AAAA,cACE;AAAA,kBACA,8BAAgB;AAAA,gBACd,8BAA8B;AAAA,oBAC9B,kCAAgB,gCAAkB,CAAC;AAAA,cACrC,CAAC;AAAA,YACH;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,YAAQ,2BAAa,CAAC;AAAA,EACzB,CAAC;AACH;AAEO,SAAS,kBAA+C;AAC7D,aAAO,2BAAa,kBAAkB,GAAG,kBAAkB,CAAC;AAC9D;AAQO,SAAS,cACd,gBAC8D;AAC9D,aAAO;AAAA,IACL;AAAA,IACA,kBAAkB;AAAA,EACpB;AACF;AAEA,eAAsB,aACpB,KACAC,UACA,QACqC;AACrC,QAAM,eAAe,MAAM,kBAAkB,KAAKA,UAAS,MAAM;AACjE,wCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,kBACpB,KACAA,UACA,QAC0C;AAC1C,QAAM,eAAe,UAAM,kCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,cAAc,YAAY;AACnC;AAEA,eAAsB,gBACpB,KACA,WACA,QAC6B;AAC7B,QAAM,gBAAgB,MAAM,qBAAqB,KAAK,WAAW,MAAM;AACvE,wCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,qBACpB,KACA,WACA,QACkC;AAClC,QAAM,gBAAgB,UAAM,mCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc,IAAI,CAAC,iBAAiB,cAAc,YAAY,CAAC;AACxE;;;AClQA,IAAAC,eAmCO;AAYA,IAAM,+CAA+C,IAAI,WAAW;AAAA,EACzE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AACrC,CAAC;AAEM,SAAS,oDAAoD;AAClE,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAmBO,SAAS,yCAAoF;AAClG,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,6BAAyB,mCAAiB,gCAAkB,CAAC,CAAC;AAAA,MAC/D,CAAC,gBAAY,4BAAc,CAAC;AAAA,MAC5B,CAAC,cAAc,oCAAoC,CAAC;AAAA,MACpD,CAAC,iBAAiB,wBAAwB,CAAC;AAAA,MAC3C,CAAC,YAAQ,2BAAa,CAAC;AAAA,IACzB,CAAC;AAAA,IACD,CAAC,WAAW;AAAA,MACV,GAAG;AAAA,MACH,eAAe;AAAA,IACjB;AAAA,EACF;AACF;AAEO,SAAS,yCAAgF;AAC9F,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,6BAAyB,mCAAiB,gCAAkB,CAAC,CAAC;AAAA,IAC/D,CAAC,gBAAY,4BAAc,CAAC;AAAA,IAC5B,CAAC,cAAc,oCAAoC,CAAC;AAAA,IACpD,CAAC,iBAAiB,wBAAwB,CAAC;AAAA,IAC3C,CAAC,YAAQ,2BAAa,CAAC;AAAA,EACzB,CAAC;AACH;AAEO,SAAS,uCAGd;AACA,aAAO;AAAA,IACL,uCAAuC;AAAA,IACvC,uCAAuC;AAAA,EACzC;AACF;AAYO,SAAS,mCAGd,gBAGuD;AACvD,aAAO;AAAA,IACL;AAAA,IACA,uCAAuC;AAAA,EACzC;AACF;AAEA,eAAsB,kCAGpB,KACAC,UACA,QAC0D;AAC1D,QAAM,eAAe,MAAM;AAAA,IACzB;AAAA,IACAA;AAAA,IACA;AAAA,EACF;AACA,wCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,uCAGpB,KACAA,UACA,QAC+D;AAC/D,QAAM,eAAe,UAAM,kCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,mCAAmC,YAAY;AACxD;AAEA,eAAsB,qCACpB,KACA,WACA,QACkD;AAClD,QAAM,gBAAgB,MAAM;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,wCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,0CACpB,KACA,WACA,QACuD;AACvD,QAAM,gBAAgB,UAAM,mCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc;AAAA,IAAI,CAAC,iBACxB,mCAAmC,YAAY;AAAA,EACjD;AACF;;;ACzLA,IAAAC,eA2BO;AAEA,IAAM,yBAAyB,IAAI,WAAW;AAAA,EACnD;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAI;AAChC,CAAC;AAEM,SAAS,+BAA+B;AAC7C,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE,OAAO,sBAAsB;AAC3E;AAMO,SAAS,oBAAmD;AACjE,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,YAAQ,2BAAa,CAAC;AAAA,IACzB,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,uBAAuB;AAAA,EAChE;AACF;AAEO,SAAS,oBAA+C;AAC7D,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,YAAQ,2BAAa,CAAC;AAAA,EACzB,CAAC;AACH;AAEO,SAAS,kBAAwD;AACtE,aAAO,2BAAa,kBAAkB,GAAG,kBAAkB,CAAC;AAC9D;AAQO,SAAS,cACd,gBAC8D;AAC9D,aAAO;AAAA,IACL;AAAA,IACA,kBAAkB;AAAA,EACpB;AACF;AAEA,eAAsB,aACpB,KACAC,UACA,QACqC;AACrC,QAAM,eAAe,MAAM,kBAAkB,KAAKA,UAAS,MAAM;AACjE,wCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,kBACpB,KACAA,UACA,QAC0C;AAC1C,QAAM,eAAe,UAAM,kCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,cAAc,YAAY;AACnC;AAEA,eAAsB,gBACpB,KACA,WACA,QAC6B;AAC7B,QAAM,gBAAgB,MAAM,qBAAqB,KAAK,WAAW,MAAM;AACvE,wCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,qBACpB,KACA,WACA,QACkC;AAClC,QAAM,gBAAgB,UAAM,mCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc,IAAI,CAAC,iBAAiB,cAAc,YAAY,CAAC;AACxE;;;ACjHA,IAAAC,eA6CO;AAYA,IAAM,8BAA8B,IAAI,WAAW;AAAA,EACxD;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAClC,CAAC;AAEM,SAAS,kCAAkC;AAChD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAoCO,SAAS,uBAAgD;AAC9D,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,eAAW,mCAAiB,4BAAc,CAAC,CAAC;AAAA,MAC7C,CAAC,oBAAgB,4BAAc,CAAC;AAAA,MAChC,CAAC,6BAAyB,4BAAc,CAAC;AAAA,MACzC,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,MACpC,CAAC,iBAAa,mCAAiB,gCAAkB,CAAC,CAAC;AAAA,MACnD;AAAA,QACE;AAAA,YACA,2CAA6B;AAAA,UAC3B;AAAA,YACE;AAAA,gBACA,+BAAiB;AAAA,cACf,CAAC,cAAU,8BAAgB,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAAA,YAC1D,CAAC;AAAA,UACH;AAAA,UACA;AAAA,YACE;AAAA,gBACA,+BAAiB;AAAA,cACf;AAAA,gBACE;AAAA,oBACA,8BAAgB;AAAA,kBACd,yBAAyB;AAAA,sBACzB,kCAAgB,gCAAkB,CAAC;AAAA,gBACrC,CAAC;AAAA,cACH;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,CAAC,qBAAiB,4BAAc,CAAC;AAAA,MACjC,CAAC,8BAA0B,kCAAgB,4BAAc,CAAC,CAAC;AAAA,MAC3D,CAAC,UAAU,oBAAoB,CAAC;AAAA,MAChC,CAAC,YAAQ,2BAAa,CAAC;AAAA,IACzB,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,4BAA4B;AAAA,EACrE;AACF;AAEO,SAAS,uBAA4C;AAC1D,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,eAAW,mCAAiB,4BAAc,CAAC,CAAC;AAAA,IAC7C,CAAC,oBAAgB,4BAAc,CAAC;AAAA,IAChC,CAAC,6BAAyB,4BAAc,CAAC;AAAA,IACzC,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,iBAAa,mCAAiB,gCAAkB,CAAC,CAAC;AAAA,IACnD;AAAA,MACE;AAAA,UACA,2CAA6B;AAAA,QAC3B;AAAA,UACE;AAAA,cACA,+BAAiB;AAAA,YACf,CAAC,cAAU,8BAAgB,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAAA,UAC1D,CAAC;AAAA,QACH;AAAA,QACA;AAAA,UACE;AAAA,cACA,+BAAiB;AAAA,YACf;AAAA,cACE;AAAA,kBACA,8BAAgB;AAAA,gBACd,yBAAyB;AAAA,oBACzB,kCAAgB,gCAAkB,CAAC;AAAA,cACrC,CAAC;AAAA,YACH;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,qBAAiB,4BAAc,CAAC;AAAA,IACjC,CAAC,8BAA0B,kCAAgB,4BAAc,CAAC,CAAC;AAAA,IAC3D,CAAC,UAAU,oBAAoB,CAAC;AAAA,IAChC,CAAC,YAAQ,2BAAa,CAAC;AAAA,EACzB,CAAC;AACH;AAEO,SAAS,qBAAwD;AACtE,aAAO,2BAAa,qBAAqB,GAAG,qBAAqB,CAAC;AACpE;AAQO,SAAS,iBACd,gBACoE;AACpE,aAAO;AAAA,IACL;AAAA,IACA,qBAAqB;AAAA,EACvB;AACF;AAEA,eAAsB,gBACpB,KACAC,UACA,QACwC;AACxC,QAAM,eAAe,MAAM,qBAAqB,KAAKA,UAAS,MAAM;AACpE,wCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,qBACpB,KACAA,UACA,QAC6C;AAC7C,QAAM,eAAe,UAAM,kCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,iBAAiB,YAAY;AACtC;AAEA,eAAsB,mBACpB,KACA,WACA,QACgC;AAChC,QAAM,gBAAgB,MAAM,wBAAwB,KAAK,WAAW,MAAM;AAC1E,wCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,wBACpB,KACA,WACA,QACqC;AACrC,QAAM,gBAAgB,UAAM,mCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc,IAAI,CAAC,iBAAiB,iBAAiB,YAAY,CAAC;AAC3E;;;AC3OA,IAAAC,eAuCO;AAQA,IAAM,mCAAmC,IAAI,WAAW;AAAA,EAC7D;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AACpC,CAAC;AAEM,SAAS,yCAAyC;AACvD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAyCO,SAAS,8BAA8D;AAC5E,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,YAAQ,2BAAa,CAAC;AAAA,MACvB,CAAC,eAAW,gCAAkB,CAAC;AAAA,MAC/B,CAAC,aAAS,4BAAc,CAAC;AAAA,MACzB,CAAC,oBAAgB,4BAAc,CAAC;AAAA,MAChC,CAAC,qBAAiB,mCAAiB,4BAAc,CAAC,CAAC;AAAA,MACnD,CAAC,mBAAe,4BAAc,CAAC;AAAA,MAC/B,CAAC,oBAAgB,4BAAc,CAAC;AAAA,MAChC;AAAA,QACE;AAAA,YACA,mCAAiB,8BAAgB,wBAAwB,CAAC,CAAC;AAAA,MAC7D;AAAA,MACA,CAAC,oBAAgB,4BAAc,CAAC;AAAA,MAChC,CAAC,uBAAmB,gCAAkB,CAAC;AAAA,MACvC,CAAC,6BAAyB,gCAAkB,CAAC;AAAA,MAC7C,CAAC,YAAQ,gCAAkB,CAAC;AAAA,MAC5B,CAAC,8BAA0B,4BAAc,CAAC;AAAA,MAC1C,CAAC,2BAAuB,4BAAc,CAAC;AAAA,MACvC,CAAC,8BAA0B,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,MACxE,CAAC,yBAAqB,gCAAkB,CAAC;AAAA,IAC3C,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,iCAAiC;AAAA,EAC1E;AACF;AAEO,SAAS,8BAA0D;AACxE,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,YAAQ,2BAAa,CAAC;AAAA,IACvB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,aAAS,4BAAc,CAAC;AAAA,IACzB,CAAC,oBAAgB,4BAAc,CAAC;AAAA,IAChC,CAAC,qBAAiB,mCAAiB,4BAAc,CAAC,CAAC;AAAA,IACnD,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,oBAAgB,4BAAc,CAAC;AAAA,IAChC;AAAA,MACE;AAAA,UACA,mCAAiB,8BAAgB,wBAAwB,CAAC,CAAC;AAAA,IAC7D;AAAA,IACA,CAAC,oBAAgB,4BAAc,CAAC;AAAA,IAChC,CAAC,uBAAmB,gCAAkB,CAAC;AAAA,IACvC,CAAC,6BAAyB,gCAAkB,CAAC;AAAA,IAC7C,CAAC,YAAQ,gCAAkB,CAAC;AAAA,IAC5B,CAAC,8BAA0B,4BAAc,CAAC;AAAA,IAC1C,CAAC,2BAAuB,4BAAc,CAAC;AAAA,IACvC,CAAC,8BAA0B,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IACxE,CAAC,yBAAqB,gCAAkB,CAAC;AAAA,EAC3C,CAAC;AACH;AAEO,SAAS,4BAGd;AACA,aAAO;AAAA,IACL,4BAA4B;AAAA,IAC5B,4BAA4B;AAAA,EAC9B;AACF;AAQO,SAAS,wBACd,gBAG4C;AAC5C,aAAO;AAAA,IACL;AAAA,IACA,4BAA4B;AAAA,EAC9B;AACF;AAEA,eAAsB,uBACpB,KACAC,UACA,QAC+C;AAC/C,QAAM,eAAe,MAAM,4BAA4B,KAAKA,UAAS,MAAM;AAC3E,wCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,4BAGpB,KACAA,UACA,QACoD;AACpD,QAAM,eAAe,UAAM,kCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,wBAAwB,YAAY;AAC7C;AAEA,eAAsB,0BACpB,KACA,WACA,QACuC;AACvC,QAAM,gBAAgB,MAAM;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,wCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,+BACpB,KACA,WACA,QAC4C;AAC5C,QAAM,gBAAgB,UAAM,mCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc;AAAA,IAAI,CAAC,iBACxB,wBAAwB,YAAY;AAAA,EACtC;AACF;;;AC5NA,IAAAC,eA6BO;AAEA,IAAM,0CAA0C,IAAI,WAAW;AAAA,EACpE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AACpC,CAAC;AAEM,SAAS,+CAA+C;AAC7D,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAiBO,SAAS,oCAAmF;AACjG,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,YAAQ,2BAAa,CAAC;AAAA,MACvB,CAAC,UAAM,4BAAc,CAAC;AAAA,MACtB,CAAC,mBAAe,4BAAc,CAAC;AAAA,MAC/B,CAAC,kBAAc,4BAAc,CAAC;AAAA,IAChC,CAAC;AAAA,IACD,CAAC,WAAW;AAAA,MACV,GAAG;AAAA,MACH,eAAe;AAAA,IACjB;AAAA,EACF;AACF;AAEO,SAAS,oCAA+E;AAC7F,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,YAAQ,2BAAa,CAAC;AAAA,IACvB,CAAC,UAAM,4BAAc,CAAC;AAAA,IACtB,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,kBAAc,4BAAc,CAAC;AAAA,EAChC,CAAC;AACH;AAEO,SAAS,kCAGd;AACA,aAAO;AAAA,IACL,kCAAkC;AAAA,IAClC,kCAAkC;AAAA,EACpC;AACF;AAQO,SAAS,8BACd,gBAGkD;AAClD,aAAO;AAAA,IACL;AAAA,IACA,kCAAkC;AAAA,EACpC;AACF;AAEA,eAAsB,6BAGpB,KACAC,UACA,QACqD;AACrD,QAAM,eAAe,MAAM;AAAA,IACzB;AAAA,IACAA;AAAA,IACA;AAAA,EACF;AACA,wCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,kCAGpB,KACAA,UACA,QAC0D;AAC1D,QAAM,eAAe,UAAM,kCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,8BAA8B,YAAY;AACnD;AAEA,eAAsB,gCACpB,KACA,WACA,QAC6C;AAC7C,QAAM,gBAAgB,MAAM;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,wCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,qCACpB,KACA,WACA,QACkD;AAClD,QAAM,gBAAgB,UAAM,mCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc;AAAA,IAAI,CAAC,iBACxB,8BAA8B,YAAY;AAAA,EAC5C;AACF;;;AC/JA,IAAAC,eAiCO;AAEA,IAAM,2CAA2C,IAAI,WAAW;AAAA,EACrE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AACjC,CAAC;AAEM,SAAS,gDAAgD;AAC9D,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAmBO,SAAS,qCAAqF;AACnG,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,YAAQ,2BAAa,CAAC;AAAA,MACvB,CAAC,eAAW,gCAAkB,CAAC;AAAA,MAC/B,CAAC,cAAU,gCAAkB,CAAC;AAAA,MAC9B,CAAC,uBAAmB,4BAAc,CAAC;AAAA,MACnC,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACtC,CAAC;AAAA,IACD,CAAC,WAAW;AAAA,MACV,GAAG;AAAA,MACH,eAAe;AAAA,IACjB;AAAA,EACF;AACF;AAEO,SAAS,qCAAiF;AAC/F,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,YAAQ,2BAAa,CAAC;AAAA,IACvB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,uBAAmB,4BAAc,CAAC;AAAA,IACnC,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,EACtC,CAAC;AACH;AAEO,SAAS,mCAGd;AACA,aAAO;AAAA,IACL,mCAAmC;AAAA,IACnC,mCAAmC;AAAA,EACrC;AACF;AAYO,SAAS,+BAGd,gBAGmD;AACnD,aAAO;AAAA,IACL;AAAA,IACA,mCAAmC;AAAA,EACrC;AACF;AAEA,eAAsB,8BAGpB,KACAC,UACA,QACsD;AACtD,QAAM,eAAe,MAAM;AAAA,IACzB;AAAA,IACAA;AAAA,IACA;AAAA,EACF;AACA,wCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,mCAGpB,KACAA,UACA,QAC2D;AAC3D,QAAM,eAAe,UAAM,kCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,+BAA+B,YAAY;AACpD;AAEA,eAAsB,iCACpB,KACA,WACA,QAC8C;AAC9C,QAAM,gBAAgB,MAAM;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,wCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,sCACpB,KACA,WACA,QACmD;AACnD,QAAM,gBAAgB,UAAM,mCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc;AAAA,IAAI,CAAC,iBACxB,+BAA+B,YAAY;AAAA,EAC7C;AACF;;;AC7KA,IAAAC,eAyCO;AAEA,IAAM,8BAA8B,IAAI,WAAW;AAAA,EACxD;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAClC,CAAC;AAEM,SAAS,oCAAoC;AAClD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAiDO,SAAS,yBAAoD;AAClE,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,uBAAmB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,MACjE,CAAC,kBAAc,6BAAe,CAAC;AAAA,MAC/B,CAAC,YAAQ,2BAAa,CAAC;AAAA,MACvB,CAAC,aAAS,gCAAkB,CAAC;AAAA,MAC7B,CAAC,cAAU,gCAAkB,CAAC;AAAA,MAC9B,CAAC,kBAAc,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,MAC5D;AAAA,QACE;AAAA,YACA,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC;AAAA,MAC9C;AAAA,MACA,CAAC,4BAAwB,6BAAe,CAAC;AAAA,MACzC,CAAC,yBAAqB,mCAAiB,4BAAc,CAAC,CAAC;AAAA,MACvD,CAAC,2BAAuB,mCAAiB,4BAAc,CAAC,CAAC;AAAA,MACzD,CAAC,cAAU,4BAAc,CAAC;AAAA,MAC1B,CAAC,WAAO,4BAAc,CAAC;AAAA,MACvB,CAAC,sBAAkB,mCAAiB,4BAAc,CAAC,CAAC;AAAA,MACpD,CAAC,aAAS,mCAAiB,4BAAc,CAAC,CAAC;AAAA,MAC3C,CAAC,wBAAoB,gCAAkB,CAAC;AAAA,MACxC,CAAC,8BAA0B,mCAAiB,4BAAc,CAAC,CAAC;AAAA,MAC5D,CAAC,cAAU,gCAAkB,CAAC;AAAA,MAC9B,CAAC,sBAAkB,gCAAkB,CAAC;AAAA,MACtC,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,MACpC,CAAC,qBAAiB,gCAAkB,CAAC;AAAA,IACvC,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,4BAA4B;AAAA,EACrE;AACF;AAEO,SAAS,yBAAgD;AAC9D,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,uBAAmB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IACjE,CAAC,kBAAc,6BAAe,CAAC;AAAA,IAC/B,CAAC,YAAQ,2BAAa,CAAC;AAAA,IACvB,CAAC,aAAS,gCAAkB,CAAC;AAAA,IAC7B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,kBAAc,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAC5D;AAAA,MACE;AAAA,UACA,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC;AAAA,IAC9C;AAAA,IACA,CAAC,4BAAwB,6BAAe,CAAC;AAAA,IACzC,CAAC,yBAAqB,mCAAiB,4BAAc,CAAC,CAAC;AAAA,IACvD,CAAC,2BAAuB,mCAAiB,4BAAc,CAAC,CAAC;AAAA,IACzD,CAAC,cAAU,4BAAc,CAAC;AAAA,IAC1B,CAAC,WAAO,4BAAc,CAAC;AAAA,IACvB,CAAC,sBAAkB,mCAAiB,4BAAc,CAAC,CAAC;AAAA,IACpD,CAAC,aAAS,mCAAiB,4BAAc,CAAC,CAAC;AAAA,IAC3C,CAAC,wBAAoB,gCAAkB,CAAC;AAAA,IACxC,CAAC,8BAA0B,mCAAiB,4BAAc,CAAC,CAAC;AAAA,IAC5D,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,sBAAkB,gCAAkB,CAAC;AAAA,IACtC,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,qBAAiB,gCAAkB,CAAC;AAAA,EACvC,CAAC;AACH;AAEO,SAAS,uBAA8D;AAC5E,aAAO,2BAAa,uBAAuB,GAAG,uBAAuB,CAAC;AACxE;AAQO,SAAS,mBACd,gBACwE;AACxE,aAAO;AAAA,IACL;AAAA,IACA,uBAAuB;AAAA,EACzB;AACF;AAEA,eAAsB,kBACpB,KACAC,UACA,QAC0C;AAC1C,QAAM,eAAe,MAAM,uBAAuB,KAAKA,UAAS,MAAM;AACtE,wCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,uBACpB,KACAA,UACA,QAC+C;AAC/C,QAAM,eAAe,UAAM,kCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,mBAAmB,YAAY;AACxC;AAEA,eAAsB,qBACpB,KACA,WACA,QACkC;AAClC,QAAM,gBAAgB,MAAM,0BAA0B,KAAK,WAAW,MAAM;AAC5E,wCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,0BACpB,KACA,WACA,QACuC;AACvC,QAAM,gBAAgB,UAAM,mCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc,IAAI,CAAC,iBAAiB,mBAAmB,YAAY,CAAC;AAC7E;;;ACxNA,IAAAC,eAmCO;AAEA,IAAM,4BAA4B,IAAI,WAAW;AAAA,EACtD;AAAA,EAAK;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AACjC,CAAC;AAEM,SAAS,kCAAkC;AAChD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE,OAAO,yBAAyB;AAC9E;AAqBO,SAAS,uBAAyD;AACvE,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,YAAQ,2BAAa,CAAC;AAAA,MACvB,CAAC,YAAQ,gCAAkB,CAAC;AAAA,MAC5B,CAAC,qBAAiB,4BAAc,CAAC;AAAA,MACjC,CAAC,qBAAiB,4BAAc,CAAC;AAAA,MACjC,CAAC,gBAAY,kCAAgB,2BAAa,GAAG,EAAE,MAAM,IAAI,CAAC,CAAC;AAAA,IAC7D,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,0BAA0B;AAAA,EACnE;AACF;AAEO,SAAS,uBAAqD;AACnE,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,YAAQ,2BAAa,CAAC;AAAA,IACvB,CAAC,YAAQ,gCAAkB,CAAC;AAAA,IAC5B,CAAC,qBAAiB,4BAAc,CAAC;AAAA,IACjC,CAAC,qBAAiB,4BAAc,CAAC;AAAA,IACjC,CAAC,gBAAY,kCAAgB,2BAAa,GAAG,EAAE,MAAM,IAAI,CAAC,CAAC;AAAA,EAC7D,CAAC;AACH;AAEO,SAAS,qBAGd;AACA,aAAO,2BAAa,qBAAqB,GAAG,qBAAqB,CAAC;AACpE;AAQO,SAAS,iBACd,gBACoE;AACpE,aAAO;AAAA,IACL;AAAA,IACA,qBAAqB;AAAA,EACvB;AACF;AAEA,eAAsB,gBACpB,KACAC,UACA,QACwC;AACxC,QAAM,eAAe,MAAM,qBAAqB,KAAKA,UAAS,MAAM;AACpE,wCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,qBACpB,KACAA,UACA,QAC6C;AAC7C,QAAM,eAAe,UAAM,kCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,iBAAiB,YAAY;AACtC;AAEA,eAAsB,mBACpB,KACA,WACA,QACgC;AAChC,QAAM,gBAAgB,MAAM,wBAAwB,KAAK,WAAW,MAAM;AAC1E,wCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,wBACpB,KACA,WACA,QACqC;AACrC,QAAM,gBAAgB,UAAM,mCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc,IAAI,CAAC,iBAAiB,iBAAiB,YAAY,CAAC;AAC3E;;;ACnJA,IAAAC,eAKO;;;ACLP,IAAAC,eAMO;AA6BA,IAAM,qCACX;AAEK,IAAK,2BAAL,kBAAKC,8BAAL;AACL,EAAAA,oDAAA;AACA,EAAAA,oDAAA;AACA,EAAAA,oDAAA;AACA,EAAAA,oDAAA;AACA,EAAAA,oDAAA;AACA,EAAAA,oDAAA;AACA,EAAAA,oDAAA;AACA,EAAAA,oDAAA;AACA,EAAAA,oDAAA;AACA,EAAAA,oDAAA;AACA,EAAAA,oDAAA;AACA,EAAAA,oDAAA;AAZU,SAAAA;AAAA,GAAA;AAeL,SAAS,iCACd,SAC0B;AAC1B,QAAM,OAAO,UAAU,UAAU,QAAQ,OAAO;AAChD,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,EAAE,CAAC;AAAA,IACvD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,IAAI,IAAI,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC;AAAA,IACpD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC;AAAA,IACpD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,CAAC;AAAA,IACvD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,IACzD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC;AAAA,IACpD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,CAAC;AAAA,IACtD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,GAAG,CAAC;AAAA,IACxD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,CAAC;AAAA,IACvD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC;AAAA,IACrD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC;AAAA,IACtD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,GAAG,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,CAAC;AAAA,IACrD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,QAAM,IAAI;AAAA,IACR;AAAA,EACF;AACF;AAEO,IAAK,+BAAL,kBAAKC,kCAAL;AACL,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AACA,EAAAA,4DAAA;AAzBU,SAAAA;AAAA,GAAA;AA4BL,SAAS,qCACd,aAC8B;AAC9B,QAAM,OAAO,UAAU,cAAc,YAAY,OAAO;AACxD,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC;AAAA,IACtD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,GAAG,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,IACvD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG,CAAC;AAAA,IACtD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,CAAC;AAAA,IACvD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,IACxD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,IACxD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,CAAC;AAAA,IACtD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;AAAA,IACpD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,GAAG,CAAC;AAAA,IACtD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,EAAE,CAAC;AAAA,IACvD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,EAAE,CAAC;AAAA,IACvD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,IACxD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;AAAA,IACrD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;AAAA,IACrD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,IACxD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,GAAG,CAAC;AAAA,IACtD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC;AAAA,IACnD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;AAAA,IACtD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,IACxD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;AAAA,IACnD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,GAAG,IAAI,KAAK,KAAK,KAAK,GAAG,GAAG,CAAC;AAAA,IACpD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,EAAE,CAAC;AAAA,IACtD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI,KAAK,IAAI,GAAG,KAAK,GAAG,CAAC;AAAA,IACrD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,IACvD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC;AAAA,IACtD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,QAAM,IAAI;AAAA,IACR;AAAA,EACF;AACF;;;AD/eO,IAAM,gDAAgD;AAEtD,IAAM,4CAA4C;AAElD,IAAM,yCAAyC;AAE/C,IAAM,iDAAiD;AAEvD,IAAM,wDAAwD;AAE9D,IAAM,8CAA8C;AAEpD,IAAM,gDAAgD;AAEtD,IAAM,8CAA8C;AAEpD,IAAM,4CAA4C;AAElD,IAAM,+CAA+C;AAErD,IAAM,oDAAoD;AAE1D,IAAM,6CAA6C;AAEnD,IAAM,gDAAgD;AAEtD,IAAM,yCAAyC;AAE/C,IAAM,sDAAsD;AAE5D,IAAM,qCAAqC;AAE3C,IAAM,gDAAgD;AAEtD,IAAM,yCAAyC;AAE/C,IAAM,6CAA6C;AAEnD,IAAM,2CAA2C;AAEjD,IAAM,kDAAkD;AAExD,IAAM,oDAAoD;AAE1D,IAAM,mCAAmC;AAEzC,IAAM,kDAAkD;AAExD,IAAM,kDAAkD;AAExD,IAAM,kDAAkD;AAExD,IAAM,sDAAsD;AAE5D,IAAM,6CAA6C;AAEnD,IAAM,0DAA0D;AAEhE,IAAM,4CAA4C;AAkCzD,IAAI;AAGJ,IAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,mCAAiC;AAAA,IAC/B,CAAC,6CAA6C,GAAG;AAAA,IACjD,CAAC,iDAAiD,GAAG;AAAA,IACrD,CAAC,0CAA0C,GAAG;AAAA,IAC9C,CAAC,wCAAwC,GAAG;AAAA,IAC5C,CAAC,0CAA0C,GAAG;AAAA,IAC9C,CAAC,mDAAmD,GAAG;AAAA,IACvD,CAAC,yCAAyC,GAAG;AAAA,IAC7C,CAAC,+CAA+C,GAAG;AAAA,IACnD,CAAC,8CAA8C,GAAG;AAAA,IAClD,CAAC,qDAAqD,GAAG;AAAA,IACzD,CAAC,+CAA+C,GAAG;AAAA,IACnD,CAAC,sCAAsC,GAAG;AAAA,IAC1C,CAAC,2CAA2C,GAAG;AAAA,IAC/C,CAAC,2CAA2C,GAAG;AAAA,IAC/C,CAAC,uDAAuD,GAAG;AAAA,IAC3D,CAAC,gCAAgC,GAAG;AAAA,IACpC,CAAC,6CAA6C,GAAG;AAAA,IACjD,CAAC,yCAAyC,GAAG;AAAA,IAC7C,CAAC,6CAA6C,GAAG;AAAA,IACjD,CAAC,0CAA0C,GAAG;AAAA,IAC9C,CAAC,sCAAsC,GAAG;AAAA,IAC1C,CAAC,kCAAkC,GAAG;AAAA,IACtC,CAAC,6CAA6C,GAAG;AAAA,IACjD,CAAC,yCAAyC,GAAG;AAAA,IAC7C,CAAC,4CAA4C,GAAG;AAAA,IAChD,CAAC,mDAAmD,GAAG;AAAA,IACvD,CAAC,sCAAsC,GAAG;AAAA,IAC1C,CAAC,+CAA+C,GAAG;AAAA,IACnD,CAAC,+CAA+C,GAAG;AAAA,IACnD,CAAC,iDAAiD,GAAG;AAAA,EACvD;AACF;AAEO,SAAS,iCACd,MACQ;AACR,MAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,WACE,+BACA,IAAI;AAAA,EACR;AAEA,SAAO;AACT;AAEO,SAAS,yBAGd,OACA,oBAGA,MAE6D;AAC7D,aAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AEvKA,IAAAC,eA2BO;;;AC3BP,IAAAC,eAUO;AAMA,SAAS,WAAc,OAAgC;AAC5D,MAAI,UAAU,QAAQ,UAAU,QAAW;AACzC,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACpE;AACA,SAAO;AACT;AAMO,SAAS,cACd,OAMY;AACZ,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,OAAO,UAAU,YAAY,aAAa,OAAO;AACnD,WAAO,MAAM;AAAA,EACf;AACA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,CAAC;AAAA,EAChB;AACA,SAAO;AACT;AAsEO,SAAS,sBACd,gBACA,yBACA;AACA,SAAO,CACL,YACgD;AAChD,QAAI,CAAC,QAAQ,OAAO;AAClB,UAAI,4BAA4B,UAAW;AAC3C,aAAO,OAAO,OAAO;AAAA,QACnB,SAAS;AAAA,QACT,MAAM,yBAAY;AAAA,MACpB,CAAC;AAAA,IACH;AAEA,UAAM,eAAe,QAAQ,aACzB,yBAAY,WACZ,yBAAY;AAChB,WAAO,OAAO,OAAO;AAAA,MACnB,SAAS,cAAc,QAAQ,KAAK;AAAA,MACpC,MAAM,oBAAoB,QAAQ,KAAK,QACnC,kCAAoB,YAAY,IAChC;AAAA,MACJ,GAAI,oBAAoB,QAAQ,KAAK,IAAI,EAAE,QAAQ,QAAQ,MAAM,IAAI,CAAC;AAAA,IACxE,CAAC;AAAA,EACH;AACF;AAEO,SAAS,oBACd,OAIsC;AACtC,SACE,CAAC,CAAC,SACF,OAAO,UAAU,YACjB,aAAa,aACb,aAAAC,qBAAuB,KAAK;AAEhC;;;ADvHO,IAAM,kCAAkC,IAAI,WAAW;AAAA,EAC5D;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAClC,CAAC;AAEM,SAAS,uCAAuC;AACrD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAsCO,SAAS,2CAAiG;AAC/G,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,gBAAY,4BAAc,CAAC;AAAA,IAC9B,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,gCAAgC;AAAA,EACzE;AACF;AAEO,SAAS,2CAA6F;AAC3G,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,gBAAY,4BAAc,CAAC;AAAA,EAC9B,CAAC;AACH;AAEO,SAAS,yCAGd;AACA,aAAO;AAAA,IACL,yCAAyC;AAAA,IACzC,yCAAyC;AAAA,EAC3C;AACF;AAeA,eAAsB,mCAOpB,OAMA,QASA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IAC1D,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,QAC/C;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,4BAAc,EAAE,OAAO,WAAW,KAAK,QAAQ,CAAC;AAAA,MAClD;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,yCAAyC,EAAE;AAAA,MAC/C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAMC;AACH;AAeO,SAAS,8BAOd,OAMA,QAOA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IAC1D,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,yCAAyC,EAAE;AAAA,MAC/C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAMC;AACH;AAgBO,SAAS,gCAId,aAG2D;AAC3D,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,SAAS,eAAe;AAAA,MACxB,QAAQ,eAAe;AAAA,MACvB,QAAQ,eAAe;AAAA,MACvB,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,yCAAyC,EAAE,OAAO,YAAY,IAAI;AAAA,EAC1E;AACF;;;AErUA,IAAAC,eA6BO;AAQA,IAAM,2BAA2B,IAAI,WAAW;AAAA,EACrD;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AACnC,CAAC;AAEM,SAAS,iCAAiC;AAC/C,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE,OAAO,wBAAwB;AAC7E;AA0DO,SAAS,qCAAqF;AACnG,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,cAAU,4BAAc,CAAC;AAAA,MAC1B,CAAC,YAAQ,gCAAkB,CAAC;AAAA,IAC9B,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,yBAAyB;AAAA,EAClE;AACF;AAEO,SAAS,qCAAiF;AAC/F,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,cAAU,4BAAc,CAAC;AAAA,IAC1B,CAAC,YAAQ,gCAAkB,CAAC;AAAA,EAC9B,CAAC;AACH;AAEO,SAAS,mCAGd;AACA,aAAO;AAAA,IACL,mCAAmC;AAAA,IACnC,mCAAmC;AAAA,EACrC;AACF;AAyBA,eAAsB,6BAWpB,OAUA,QAaA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IAC1D,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,qBAAqB;AAAA,MACnB,OAAO,MAAM,uBAAuB;AAAA,MACpC,YAAY;AAAA,IACd;AAAA,IACA,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,eAAe,OAAO;AAClC,aAAS,eAAe,QAAQ,UAAM,uCAAyB;AAAA,MAC7D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,QACpD;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,QAAQ,KAAK,CAAC;AAAA,YAChE,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,MACjE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,eAAe,OAAO;AAClC,aAAS,eAAe,QAAQ,UAAM,uCAAyB;AAAA,MAC7D,gBACE;AAAA,MACF,OAAO;AAAA,YACL,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,gCAAkB,EAAE,OAAO,cAAc,SAAS,aAAa,KAAK,CAAC;AAAA,YACrE,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,mBAAmB;AAAA,MAC3C,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,mCAAmC,EAAE;AAAA,MACzC;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAUC;AACH;AAyBO,SAAS,wBAWd,OAUA,QAWA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IAC1D,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,qBAAqB;AAAA,MACnB,OAAO,MAAM,uBAAuB;AAAA,MACpC,YAAY;AAAA,IACd;AAAA,IACA,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,mBAAmB;AAAA,MAC3C,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,mCAAmC,EAAE;AAAA,MACzC;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAUC;AACH;AAqBO,SAAS,0BAId,aAGqD;AACrD,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,SAAS,eAAe;AAAA,MACxB,QAAQ,eAAe;AAAA,MACvB,gBAAgB,eAAe;AAAA,MAC/B,WAAW,eAAe;AAAA,MAC1B,qBAAqB,eAAe;AAAA,MACpC,gBAAgB,eAAe;AAAA,MAC/B,cAAc,eAAe;AAAA,MAC7B,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,mCAAmC,EAAE,OAAO,YAAY,IAAI;AAAA,EACpE;AACF;;;ACxbA,IAAAC,eAyBO;AAQA,IAAM,2BAA2B,IAAI,WAAW;AAAA,EACrD;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAClC,CAAC;AAEM,SAAS,iCAAiC;AAC/C,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE,OAAO,wBAAwB;AAC7E;AA+CO,SAAS,qCAAqF;AACnG,aAAO;AAAA,QACL,+BAAiB,CAAC,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC,CAAC,CAAC;AAAA,IAC1E,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,yBAAyB;AAAA,EAClE;AACF;AAEO,SAAS,qCAAiF;AAC/F,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,EACxD,CAAC;AACH;AAEO,SAAS,mCAGd;AACA,aAAO;AAAA,IACL,mCAAmC;AAAA,IACnC,mCAAmC;AAAA,EACrC;AACF;AAoBA,eAAsB,6BAUpB,OASA,QAYA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA,IAChE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,0BAA0B;AAAA,MACxB,OAAO,MAAM,4BAA4B;AAAA,MACzC,YAAY;AAAA,IACd;AAAA,IACA,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,EACvE;AACA,QAAM,WAAW;AAMjB,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QAAQ,UAAM,uCAAyB;AAAA,MAC3D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,UAC1D,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,WAAW,OAAO;AAC9B,aAAS,WAAW,QAAQ,UAAM,uCAAyB;AAAA,MACzD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC;AAAA,QACtE;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QAAQ,UAAM,uCAAyB;AAAA,MAC5D,gBACE;AAAA,MACF,OAAO;AAAA,YACL,gCAAkB,EAAE,OAAO,cAAc,SAAS,WAAW,KAAK,CAAC;AAAA,YACnE,gCAAkB,EAAE,OAAO,cAAc,SAAS,aAAa,KAAK,CAAC;AAAA,YACrE,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,UAAU;AAAA,MAClC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,wBAAwB;AAAA,MAChD,eAAe,SAAS,YAAY;AAAA,IACtC;AAAA,IACA,MAAM,mCAAmC,EAAE,OAAO,CAAC,CAAC;AAAA,IACpD;AAAA,EACF,CASC;AACH;AAoBO,SAAS,wBAUd,OASA,QAUA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA,IAChE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,0BAA0B;AAAA,MACxB,OAAO,MAAM,4BAA4B;AAAA,MACzC,YAAY;AAAA,IACd;AAAA,IACA,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,EACvE;AACA,QAAM,WAAW;AAKjB,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,UAAU;AAAA,MAClC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,wBAAwB;AAAA,MAChD,eAAe,SAAS,YAAY;AAAA,IACtC;AAAA,IACA,MAAM,mCAAmC,EAAE,OAAO,CAAC,CAAC;AAAA,IACpD;AAAA,EACF,CASC;AACH;AAmBO,SAAS,0BAId,aAGqD;AACrD,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,QAAQ,eAAe;AAAA,MACvB,cAAc,eAAe;AAAA,MAC7B,WAAW,eAAe;AAAA,MAC1B,YAAY,eAAe;AAAA,MAC3B,eAAe,eAAe;AAAA,MAC9B,0BAA0B,eAAe;AAAA,MACzC,cAAc,eAAe;AAAA,IAC/B;AAAA,IACA,MAAM,mCAAmC,EAAE,OAAO,YAAY,IAAI;AAAA,EACpE;AACF;;;ACjYA,IAAAC,eA6BO;AASA,IAAM,oCAAoC,IAAI,WAAW;AAAA,EAC9D;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AACpC,CAAC;AAEM,SAAS,yCAAyC;AACvD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AA8DO,SAAS,6CAAqG;AACnH,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,gBAAY,4BAAc,CAAC;AAAA,MAC5B,CAAC,sBAAkB,4BAAc,CAAC;AAAA,IACpC,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,kCAAkC;AAAA,EAC3E;AACF;AAEO,SAAS,6CAAiG;AAC/G,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,gBAAY,4BAAc,CAAC;AAAA,IAC5B,CAAC,sBAAkB,4BAAc,CAAC;AAAA,EACpC,CAAC;AACH;AAEO,SAAS,2CAGd;AACA,aAAO;AAAA,IACL,2CAA2C;AAAA,IAC3C,2CAA2C;AAAA,EAC7C;AACF;AA4BA,eAAsB,qCAYpB,OAWA,QAcA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,OAAO,EAAE,OAAO,MAAM,SAAS,MAAM,YAAY,KAAK;AAAA,IACtD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,mBAAmB;AAAA,MACjB,OAAO,MAAM,qBAAqB;AAAA,MAClC,YAAY;AAAA,IACd;AAAA,IACA,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QAAQ,UAAM,uCAAyB;AAAA,MAC3D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAI;AAAA,YAAI;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UACzD,CAAC;AAAA,QACH;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,MAAM,KAAK,CAAC;AAAA,YAC9D,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,4BAAc,EAAE,OAAO,WAAW,KAAK,cAAc,CAAC;AAAA,MACxD;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,QAC/C;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,4BAAc,EAAE,OAAO,WAAW,KAAK,QAAQ,CAAC;AAAA,MAClD;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,eAAe,OAAO;AAClC,aAAS,eAAe,QAAQ,UAAM,uCAAyB;AAAA,MAC7D,gBACE;AAAA,MACF,OAAO;AAAA,YACL,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,gCAAkB,EAAE,OAAO,cAAc,SAAS,aAAa,KAAK,CAAC;AAAA,YACrE,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,KAAK;AAAA,MAC7B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,iBAAiB;AAAA,MACzC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,2CAA2C,EAAE;AAAA,MACjD;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAWC;AACH;AA4BO,SAAS,gCAYd,OAWA,QAYA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,OAAO,EAAE,OAAO,MAAM,SAAS,MAAM,YAAY,KAAK;AAAA,IACtD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,mBAAmB;AAAA,MACjB,OAAO,MAAM,qBAAqB;AAAA,MAClC,YAAY;AAAA,IACd;AAAA,IACA,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,KAAK;AAAA,MAC7B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,iBAAiB;AAAA,MACzC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,2CAA2C,EAAE;AAAA,MACjD;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAWC;AACH;AAuBO,SAAS,kCAId,aAG6D;AAC7D,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,OAAO,eAAe;AAAA,MACtB,QAAQ,eAAe;AAAA,MACvB,cAAc,eAAe;AAAA,MAC7B,QAAQ,eAAe;AAAA,MACvB,WAAW,eAAe;AAAA,MAC1B,gBAAgB,eAAe;AAAA,MAC/B,mBAAmB,eAAe;AAAA,MAClC,cAAc,eAAe;AAAA,MAC7B,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,2CAA2C,EAAE,OAAO,YAAY,IAAI;AAAA,EAC5E;AACF;;;ACneA,IAAAC,eA2BO;AASA,IAAM,0CAA0C,IAAI,WAAW;AAAA,EACpE;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AACpC,CAAC;AAEM,SAAS,8CAA8C;AAC5D,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAgEO,SAAS,kDAA+G;AAC7H,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,sBAAkB,4BAAc,CAAC;AAAA,IACpC,CAAC;AAAA,IACD,CAAC,WAAW;AAAA,MACV,GAAG;AAAA,MACH,eAAe;AAAA,IACjB;AAAA,EACF;AACF;AAEO,SAAS,kDAA2G;AACzH,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,sBAAkB,4BAAc,CAAC;AAAA,EACpC,CAAC;AACH;AAEO,SAAS,gDAGd;AACA,aAAO;AAAA,IACL,gDAAgD;AAAA,IAChD,gDAAgD;AAAA,EAClD;AACF;AA8BA,eAAsB,0CAapB,OAYA,QAeA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA,IAChE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QAAQ,UAAM,uCAAyB;AAAA,MAC3D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAI;AAAA,YAAI;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UACzD,CAAC;AAAA,QACH;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,4BAAc,EAAE,OAAO,WAAW,KAAK,cAAc,CAAC;AAAA,MACxD;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,eAAe,OAAO;AAClC,aAAS,eAAe,QAAQ,UAAM,uCAAyB;AAAA,MAC7D,gBACE;AAAA,MACF,OAAO;AAAA,YACL,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,gCAAkB,EAAE,OAAO,cAAc,SAAS,aAAa,KAAK,CAAC;AAAA,YACrE,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,WAAW,OAAO;AAC9B,aAAS,WAAW,QAAQ,UAAM,uCAAyB;AAAA,MACzD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC;AAAA,QACtE;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QAAQ,UAAM,uCAAyB;AAAA,MAC5D,gBACE;AAAA,MACF,OAAO;AAAA,YACL,gCAAkB,EAAE,OAAO,cAAc,SAAS,WAAW,KAAK,CAAC;AAAA,YACnE,gCAAkB,EAAE,OAAO,cAAc,SAAS,aAAa,KAAK,CAAC;AAAA,YACrE,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,UAAU;AAAA,MAClC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,gDAAgD,EAAE;AAAA,MACtD;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAYC;AACH;AA8BO,SAAS,qCAad,OAYA,QAaA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA,IAChE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,UAAU;AAAA,MAClC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,gDAAgD,EAAE;AAAA,MACtD;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAYC;AACH;AAyBO,SAAS,uCAId,aAGkE;AAClE,MAAI,YAAY,SAAS,SAAS,IAAI;AAEpC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,QAAQ,eAAe;AAAA,MACvB,QAAQ,eAAe;AAAA,MACvB,cAAc,eAAe;AAAA,MAC7B,WAAW,eAAe;AAAA,MAC1B,gBAAgB,eAAe;AAAA,MAC/B,oBAAoB,eAAe;AAAA,MACnC,YAAY,eAAe;AAAA,MAC3B,eAAe,eAAe;AAAA,MAC9B,cAAc,eAAe;AAAA,MAC7B,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,gDAAgD,EAAE;AAAA,MACtD,YAAY;AAAA,IACd;AAAA,EACF;AACF;;;ACngBA,IAAAC,eAsCO;AASA,IAAM,8BAA8B,IAAI,WAAW;AAAA,EACxD;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AACpC,CAAC;AAEM,SAAS,oCAAoC;AAClD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAuEO,SAAS,wCAAkF;AAChG,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,mBAAe,4BAAc,CAAC;AAAA,MAC/B,CAAC,mBAAe,4BAAc,CAAC;AAAA,MAC/B,CAAC,oBAAgB,4BAAc,CAAC;AAAA,MAChC,CAAC,uBAAmB,mCAAiB,gCAAkB,CAAC,CAAC;AAAA,MACzD,CAAC,2BAAuB,4BAAc,CAAC;AAAA,MACvC,CAAC,8BAA0B,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,MACxE,CAAC,yBAAqB,gCAAkB,CAAC;AAAA,MACzC,CAAC,6BAAyB,gCAAkB,CAAC;AAAA,IAC/C,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,4BAA4B;AAAA,EACrE;AACF;AAEO,SAAS,wCAA8E;AAC5F,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,oBAAgB,4BAAc,CAAC;AAAA,IAChC,CAAC,uBAAmB,mCAAiB,gCAAkB,CAAC,CAAC;AAAA,IACzD,CAAC,2BAAuB,4BAAc,CAAC;AAAA,IACvC,CAAC,8BAA0B,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IACxE,CAAC,yBAAqB,gCAAkB,CAAC;AAAA,IACzC,CAAC,6BAAyB,gCAAkB,CAAC;AAAA,EAC/C,CAAC;AACH;AAEO,SAAS,sCAGd;AACA,aAAO;AAAA,IACL,sCAAsC;AAAA,IACtC,sCAAsC;AAAA,EACxC;AACF;AA+BA,eAAsB,gCAWpB,OAUA,QAaA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IAC1D,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,IACvE,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,wBAAwB;AAAA,MACtB,OAAO,MAAM,0BAA0B;AAAA,MACvC,YAAY;AAAA,IACd;AAAA,EACF;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QAAQ,UAAM,uCAAyB;AAAA,MAC3D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,UAC1D,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAChE;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UACjB,CAAC;AAAA,QACH;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,QAAQ,KAAK,CAAC;AAAA,YAChE,4BAAc,EAAE,OAAO,WAAW,KAAK,WAAW,CAAC;AAAA,MACrD;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,eAAe,OAAO;AAClC,aAAS,eAAe,QAAQ,UAAM,uCAAyB;AAAA,MAC7D,gBACE;AAAA,MACF,OAAO;AAAA,YACL,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,gCAAkB,EAAE,OAAO,cAAc,SAAS,aAAa,KAAK,CAAC;AAAA,YACrE,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,uBAAuB,OAAO;AAC1C,aAAS,uBAAuB,QAC9B;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,sBAAsB;AAAA,IAChD;AAAA,IACA,MAAM,sCAAsC,EAAE;AAAA,MAC5C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAUC;AACH;AA+BO,SAAS,2BAWd,OAUA,QAWA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IAC1D,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,IACvE,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,wBAAwB;AAAA,MACtB,OAAO,MAAM,0BAA0B;AAAA,MACvC,YAAY;AAAA,IACd;AAAA,EACF;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,uBAAuB,OAAO;AAC1C,aAAS,uBAAuB,QAC9B;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,sBAAsB;AAAA,IAChD;AAAA,IACA,MAAM,sCAAsC,EAAE;AAAA,MAC5C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAUC;AACH;AAqBO,SAAS,6BAId,aAGwD;AACxD,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,SAAS,eAAe;AAAA,MACxB,WAAW,eAAe;AAAA,MAC1B,cAAc,eAAe;AAAA,MAC7B,QAAQ,eAAe;AAAA,MACvB,gBAAgB,eAAe;AAAA,MAC/B,eAAe,eAAe;AAAA,MAC9B,cAAc,eAAe;AAAA,MAC7B,wBAAwB,eAAe;AAAA,IACzC;AAAA,IACA,MAAM,sCAAsC,EAAE,OAAO,YAAY,IAAI;AAAA,EACvE;AACF;;;AChgBA,IAAAC,eA4BO;AASA,IAAM,iCAAiC,IAAI,WAAW;AAAA,EAC3D;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AACnC,CAAC;AAEM,SAAS,sCAAsC;AACpD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AA0DO,SAAS,0CAA+F;AAC7G,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,sBAAkB,4BAAc,CAAC;AAAA,MAClC,CAAC,yBAAqB,gCAAkB,CAAC;AAAA,IAC3C,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,+BAA+B;AAAA,EACxE;AACF;AAEO,SAAS,0CAA2F;AACzG,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,sBAAkB,4BAAc,CAAC;AAAA,IAClC,CAAC,yBAAqB,gCAAkB,CAAC;AAAA,EAC3C,CAAC;AACH;AAEO,SAAS,wCAGd;AACA,aAAO;AAAA,IACL,wCAAwC;AAAA,IACxC,wCAAwC;AAAA,EAC1C;AACF;AA0BA,eAAsB,kCAWpB,OAUA,QAaA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,mBAAmB;AAAA,MACjB,OAAO,MAAM,qBAAqB;AAAA,MAClC,YAAY;AAAA,IACd;AAAA,IACA,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QAAQ,UAAM,uCAAyB;AAAA,MAC3D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAI;AAAA,YAAI;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UACzD,CAAC;AAAA,QACH;AAAA,YACA,gCAAkB,EAAE,OAAO,WAAW,KAAK,iBAAiB,CAAC;AAAA,YAC7D,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,4BAAc,EAAE,OAAO,WAAW,KAAK,cAAc,CAAC;AAAA,MACxD;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,eAAe,OAAO;AAClC,aAAS,eAAe,QAAQ,UAAM,uCAAyB;AAAA,MAC7D,gBACE;AAAA,MACF,OAAO;AAAA,YACL,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,gCAAkB,EAAE,OAAO,cAAc,SAAS,aAAa,KAAK,CAAC;AAAA,YACrE,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,iBAAiB;AAAA,MACzC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,wCAAwC,EAAE;AAAA,MAC9C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAUC;AACH;AA0BO,SAAS,6BAWd,OAUA,QAWA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,mBAAmB;AAAA,MACjB,OAAO,MAAM,qBAAqB;AAAA,MAClC,YAAY;AAAA,IACd;AAAA,IACA,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,iBAAiB;AAAA,MACzC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,wCAAwC,EAAE;AAAA,MAC9C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAUC;AACH;AAsBO,SAAS,+BAId,aAG0D;AAC1D,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,QAAQ,eAAe;AAAA,MACvB,QAAQ,eAAe;AAAA,MACvB,cAAc,eAAe;AAAA,MAC7B,WAAW,eAAe;AAAA,MAC1B,gBAAgB,eAAe;AAAA,MAC/B,mBAAmB,eAAe;AAAA,MAClC,cAAc,eAAe;AAAA,MAC7B,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,wCAAwC,EAAE,OAAO,YAAY,IAAI;AAAA,EACzE;AACF;;;AChcA,IAAAC,eAsBO;AAIA,IAAM,kCAAkC,IAAI,WAAW;AAAA,EAC5D;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AACjC,CAAC;AAEM,SAAS,uCAAuC;AACrD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AA4BO,SAAS,2CAAiG;AAC/G,aAAO;AAAA,QACL,+BAAiB,CAAC,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC,CAAC,CAAC;AAAA,IAC1E,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,gCAAgC;AAAA,EACzE;AACF;AAEO,SAAS,2CAA6F;AAC3G,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,EACxD,CAAC;AACH;AAEO,SAAS,yCAGd;AACA,aAAO;AAAA,IACL,yCAAyC;AAAA,IACzC,yCAAyC;AAAA,EAC3C;AACF;AAUO,SAAS,8BAKd,OACA,QAKA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,EAC1D;AACA,QAAM,WAAW;AAKjB,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,MAAM;AAAA,IAChC;AAAA,IACA,MAAM,yCAAyC,EAAE,OAAO,CAAC,CAAC;AAAA,IAC1D;AAAA,EACF,CAIC;AACH;AAcO,SAAS,gCAId,aAG2D;AAC3D,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU,EAAE,WAAW,eAAe,GAAG,QAAQ,eAAe,EAAE;AAAA,IAClE,MAAM,yCAAyC,EAAE,OAAO,YAAY,IAAI;AAAA,EAC1E;AACF;;;ACzKA,IAAAC,eA6BO;AASA,IAAM,uCAAuC,IAAI,WAAW;AAAA,EACjE;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAClC,CAAC;AAEM,SAAS,4CAA4C;AAC1D,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAkDO,SAAS,gDAA2G;AACzH,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,gBAAY,4BAAc,CAAC;AAAA,MAC5B,CAAC,sBAAkB,4BAAc,CAAC;AAAA,IACpC,CAAC;AAAA,IACD,CAAC,WAAW;AAAA,MACV,GAAG;AAAA,MACH,eAAe;AAAA,IACjB;AAAA,EACF;AACF;AAEO,SAAS,gDAAuG;AACrH,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,gBAAY,4BAAc,CAAC;AAAA,IAC5B,CAAC,sBAAkB,4BAAc,CAAC;AAAA,EACpC,CAAC;AACH;AAEO,SAAS,8CAGd;AACA,aAAO;AAAA,IACL,8CAA8C;AAAA,IAC9C,8CAA8C;AAAA,EAChD;AACF;AAoBA,eAAsB,wCASpB,OAQA,QAWA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,OAAO,EAAE,OAAO,MAAM,SAAS,MAAM,YAAY,MAAM;AAAA,IACvD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QAAQ,UAAM,uCAAyB;AAAA,MAC3D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAI;AAAA,YAAI;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UACzD,CAAC;AAAA,QACH;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,MAAM,KAAK,CAAC;AAAA,YAC9D,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,4BAAc,EAAE,OAAO,WAAW,KAAK,cAAc,CAAC;AAAA,MACxD;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,QAC/C;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,4BAAc,EAAE,OAAO,WAAW,KAAK,QAAQ,CAAC;AAAA,MAClD;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,KAAK;AAAA,MAC7B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,8CAA8C,EAAE;AAAA,MACpD;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAQC;AACH;AAoBO,SAAS,mCASd,OAQA,QASA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,OAAO,EAAE,OAAO,MAAM,SAAS,MAAM,YAAY,MAAM;AAAA,IACvD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,KAAK;AAAA,MAC7B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,8CAA8C,EAAE;AAAA,MACpD;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAQC;AACH;AAkBO,SAAS,qCAId,aAGgE;AAChE,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,QAAQ,eAAe;AAAA,MACvB,OAAO,eAAe;AAAA,MACtB,QAAQ,eAAe;AAAA,MACvB,cAAc,eAAe;AAAA,MAC7B,QAAQ,eAAe;AAAA,MACvB,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,8CAA8C,EAAE;AAAA,MACpD,YAAY;AAAA,IACd;AAAA,EACF;AACF;;;AC/YA,IAAAC,eA8BO;AAIA,IAAM,mCAAmC,IAAI,WAAW;AAAA,EAC7D;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AACpC,CAAC;AAEM,SAAS,wCAAwC;AACtD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AA4CO,SAAS,4CAAmG;AACjH,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,8BAA0B,4BAAc,CAAC;AAAA,MAC1C,CAAC,wBAAoB,4BAAc,CAAC;AAAA,MACpC,CAAC,qBAAiB,4BAAc,CAAC;AAAA,MACjC,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,MACpC,CAAC,kCAA8B,4BAAc,CAAC;AAAA,IAChD,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,iCAAiC;AAAA,EAC1E;AACF;AAEO,SAAS,4CAA+F;AAC7G,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,8BAA0B,4BAAc,CAAC;AAAA,IAC1C,CAAC,wBAAoB,4BAAc,CAAC;AAAA,IACpC,CAAC,qBAAiB,4BAAc,CAAC;AAAA,IACjC,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,kCAA8B,4BAAc,CAAC;AAAA,EAChD,CAAC;AACH;AAEO,SAAS,0CAGd;AACA,aAAO;AAAA,IACL,0CAA0C;AAAA,IAC1C,0CAA0C;AAAA,EAC5C;AACF;AAiBA,eAAsB,oCAMpB,OAKA,QAQA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,OAAO,EAAE,OAAO,MAAM,SAAS,MAAM,YAAY,KAAK;AAAA,IACtD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QAAQ,UAAM,uCAAyB;AAAA,MAC3D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,UAC1D,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,KAAK;AAAA,MAC7B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,0CAA0C,EAAE;AAAA,MAChD;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAKC;AACH;AAiBO,SAAS,+BAMd,OAKA,QAMA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,OAAO,EAAE,OAAO,MAAM,SAAS,MAAM,YAAY,KAAK;AAAA,IACtD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,KAAK;AAAA,MAC7B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,0CAA0C,EAAE;AAAA,MAChD;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAKC;AACH;AAeO,SAAS,iCAId,aAG4D;AAC5D,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,OAAO,eAAe;AAAA,MACtB,cAAc,eAAe;AAAA,MAC7B,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,0CAA0C,EAAE,OAAO,YAAY,IAAI;AAAA,EAC3E;AACF;;;ACvUA,IAAAC,eA6BO;AASA,IAAM,mCAAmC,IAAI,WAAW;AAAA,EAC7D;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AACpC,CAAC;AAEM,SAAS,wCAAwC;AACtD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AA0CO,SAAS,4CAAmG;AACjH,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,kBAAc,6BAAe,CAAC;AAAA,MAC/B,CAAC,sBAAkB,4BAAc,CAAC;AAAA,IACpC,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,iCAAiC;AAAA,EAC1E;AACF;AAEO,SAAS,4CAA+F;AAC7G,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,kBAAc,6BAAe,CAAC;AAAA,IAC/B,CAAC,sBAAkB,4BAAc,CAAC;AAAA,EACpC,CAAC;AACH;AAEO,SAAS,0CAGd;AACA,aAAO;AAAA,IACL,0CAA0C;AAAA,IAC1C,0CAA0C;AAAA,EAC5C;AACF;AAgBA,eAAsB,oCAOpB,OAMA,QASA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QAAQ,UAAM,uCAAyB;AAAA,MAC3D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAI;AAAA,YAAI;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UACzD,CAAC;AAAA,QACH;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,4BAAc,EAAE,OAAO,WAAW,KAAK,cAAc,CAAC;AAAA,MACxD;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,0CAA0C,EAAE;AAAA,MAChD;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAMC;AACH;AAgBO,SAAS,+BAOd,OAMA,QAOA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,0CAA0C,EAAE;AAAA,MAChD;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAMC;AACH;AAgBO,SAAS,iCAId,aAG4D;AAC5D,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,QAAQ,eAAe;AAAA,MACvB,QAAQ,eAAe;AAAA,MACvB,cAAc,eAAe;AAAA,MAC7B,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,0CAA0C,EAAE,OAAO,YAAY,IAAI;AAAA,EAC3E;AACF;;;AClVA,IAAAC,eAyBO;AAQA,IAAM,iCAAiC,IAAI,WAAW;AAAA,EAC3D;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AACpC,CAAC;AAEM,SAAS,sCAAsC;AACpD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAyCO,SAAS,0CAA+F;AAC7G,aAAO;AAAA,QACL,+BAAiB,CAAC,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC,CAAC,CAAC;AAAA,IAC1E,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,+BAA+B;AAAA,EACxE;AACF;AAEO,SAAS,0CAA2F;AACzG,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,EACxD,CAAC;AACH;AAEO,SAAS,wCAGd;AACA,aAAO;AAAA,IACL,wCAAwC;AAAA,IACxC,wCAAwC;AAAA,EAC1C;AACF;AAgBA,eAAsB,kCAQpB,OAOA,QAUA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,OAAO,EAAE,OAAO,MAAM,SAAS,MAAM,YAAY,KAAK;AAAA,IACtD,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA,IAChE,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,MAAI,CAAC,SAAS,WAAW,OAAO;AAC9B,aAAS,WAAW,QAAQ,UAAM,uCAAyB;AAAA,MACzD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC;AAAA,QACtE;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QAAQ,UAAM,uCAAyB;AAAA,MAC3D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,UAC1D,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,KAAK;AAAA,MAC7B,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,UAAU;AAAA,MAClC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,wCAAwC,EAAE,OAAO,CAAC,CAAC;AAAA,IACzD;AAAA,EACF,CAOC;AACH;AAgBO,SAAS,6BAQd,OAOA,QAQA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,OAAO,EAAE,OAAO,MAAM,SAAS,MAAM,YAAY,KAAK;AAAA,IACtD,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA,IAChE,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,KAAK;AAAA,MAC7B,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,UAAU;AAAA,MAClC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,wCAAwC,EAAE,OAAO,CAAC,CAAC;AAAA,IACzD;AAAA,EACF,CAOC;AACH;AAiBO,SAAS,+BAId,aAG0D;AAC1D,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,OAAO,eAAe;AAAA,MACtB,WAAW,eAAe;AAAA,MAC1B,YAAY,eAAe;AAAA,MAC3B,cAAc,eAAe;AAAA,MAC7B,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,wCAAwC,EAAE,OAAO,YAAY,IAAI;AAAA,EACzE;AACF;;;AClVA,IAAAC,eAwBO;AAIA,IAAM,4BAA4B,IAAI,WAAW;AAAA,EACtD;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAClC,CAAC;AAEM,SAAS,kCAAkC;AAChD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE,OAAO,yBAAyB;AAC9E;AA6BO,SAAS,sCAAuF;AACrG,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,qBAAiB,4BAAc,CAAC;AAAA,IACnC,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,0BAA0B;AAAA,EACnE;AACF;AAEO,SAAS,sCAAmF;AACjG,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,qBAAiB,4BAAc,CAAC;AAAA,EACnC,CAAC;AACH;AAEO,SAAS,oCAGd;AACA,aAAO;AAAA,IACL,oCAAoC;AAAA,IACpC,oCAAoC;AAAA,EACtC;AACF;AAWO,SAAS,yBAKd,OACA,QACyE;AAEzE,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,MAAM;AAAA,IAC3D,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,EAC1D;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAExB,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,MAAM;AAAA,IAChC;AAAA,IACA,MAAM,oCAAoC,EAAE;AAAA,MAC1C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAA4E;AAC9E;AAcO,SAAS,2BAId,aAGsD;AACtD,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU,EAAE,SAAS,eAAe,GAAG,QAAQ,eAAe,EAAE;AAAA,IAChE,MAAM,oCAAoC,EAAE,OAAO,YAAY,IAAI;AAAA,EACrE;AACF;;;AC5KA,IAAAC,eA2BO;AASA,IAAM,8BAA8B,IAAI,WAAW;AAAA,EACxD;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAClC,CAAC;AAEM,SAAS,oCAAoC;AAClD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AA0DO,SAAS,wCAA2F;AACzG,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,sBAAkB,4BAAc,CAAC;AAAA,IACpC,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,4BAA4B;AAAA,EACrE;AACF;AAEO,SAAS,wCAAuF;AACrG,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,sBAAkB,4BAAc,CAAC;AAAA,EACpC,CAAC;AACH;AAEO,SAAS,sCAGd;AACA,aAAO;AAAA,IACL,sCAAsC;AAAA,IACtC,sCAAsC;AAAA,EACxC;AACF;AA2BA,eAAsB,gCAYpB,OAWA,QAcA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,OAAO,EAAE,OAAO,MAAM,SAAS,MAAM,YAAY,MAAM;AAAA,IACvD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,mBAAmB;AAAA,MACjB,OAAO,MAAM,qBAAqB;AAAA,MAClC,YAAY;AAAA,IACd;AAAA,IACA,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QAAQ,UAAM,uCAAyB;AAAA,MAC3D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAI;AAAA,YAAI;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UACzD,CAAC;AAAA,QACH;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,MAAM,KAAK,CAAC;AAAA,YAC9D,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,4BAAc,EAAE,OAAO,WAAW,KAAK,cAAc,CAAC;AAAA,MACxD;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,eAAe,OAAO;AAClC,aAAS,eAAe,QAAQ,UAAM,uCAAyB;AAAA,MAC7D,gBACE;AAAA,MACF,OAAO;AAAA,YACL,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,gCAAkB,EAAE,OAAO,cAAc,SAAS,aAAa,KAAK,CAAC;AAAA,YACrE,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,KAAK;AAAA,MAC7B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,iBAAiB;AAAA,MACzC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,sCAAsC,EAAE;AAAA,MAC5C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAWC;AACH;AA2BO,SAAS,2BAYd,OAWA,QAYA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,OAAO,EAAE,OAAO,MAAM,SAAS,MAAM,YAAY,MAAM;AAAA,IACvD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,mBAAmB;AAAA,MACjB,OAAO,MAAM,qBAAqB;AAAA,MAClC,YAAY;AAAA,IACd;AAAA,IACA,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,KAAK;AAAA,MAC7B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,iBAAiB;AAAA,MACzC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,sCAAsC,EAAE;AAAA,MAC5C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAWC;AACH;AAuBO,SAAS,6BAId,aAGwD;AACxD,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,QAAQ,eAAe;AAAA,MACvB,OAAO,eAAe;AAAA,MACtB,QAAQ,eAAe;AAAA,MACvB,cAAc,eAAe;AAAA,MAC7B,WAAW,eAAe;AAAA,MAC1B,gBAAgB,eAAe;AAAA,MAC/B,mBAAmB,eAAe;AAAA,MAClC,cAAc,eAAe;AAAA,MAC7B,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,sCAAsC,EAAE,OAAO,YAAY,IAAI;AAAA,EACvE;AACF;;;AC7cA,IAAAC,eA6BO;AASA,IAAM,6BAA6B,IAAI,WAAW;AAAA,EACvD;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AACpC,CAAC;AAEM,SAAS,mCAAmC;AACjD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAyFO,SAAS,uCAAyF;AACvG,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,yBAAqB,4BAAc,CAAC;AAAA,MACrC,CAAC,sBAAkB,4BAAc,CAAC;AAAA,IACpC,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,2BAA2B;AAAA,EACpE;AACF;AAEO,SAAS,uCAAqF;AACnG,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,yBAAqB,4BAAc,CAAC;AAAA,IACrC,CAAC,sBAAkB,4BAAc,CAAC;AAAA,EACpC,CAAC;AACH;AAEO,SAAS,qCAGd;AACA,aAAO;AAAA,IACL,qCAAqC;AAAA,IACrC,qCAAqC;AAAA,EACvC;AACF;AAsCA,eAAsB,+BAkBpB,OAiBA,QAoBA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,OAAO,EAAE,OAAO,MAAM,SAAS,MAAM,YAAY,MAAM;AAAA,IACvD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,MAAM;AAAA,IACjE,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,MAAM;AAAA,IACzE,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,aAAa,EAAE,OAAO,MAAM,eAAe,MAAM,YAAY,KAAK;AAAA,IAClE,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,IACvE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QAAQ,UAAM,uCAAyB;AAAA,MAC3D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAI;AAAA,YAAI;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UACzD,CAAC;AAAA,QACH;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,MAAM,KAAK,CAAC;AAAA,YAC9D,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,4BAAc,EAAE,OAAO,WAAW,KAAK,cAAc,CAAC;AAAA,MACxD;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,eAAe,OAAO;AAClC,aAAS,eAAe,QAAQ,UAAM,uCAAyB;AAAA,MAC7D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAI;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAI;AAAA,YACjE;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UACjB,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,YAAY,OAAO;AAC/B,aAAS,YAAY,QACnB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QACpB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,KAAK;AAAA,MAC7B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,UAAU;AAAA,MAClC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,WAAW;AAAA,MACnC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,qCAAqC,EAAE;AAAA,MAC3C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAiBC;AACH;AAsCO,SAAS,0BAkBd,OAiBA,QAkBA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,OAAO,EAAE,OAAO,MAAM,SAAS,MAAM,YAAY,MAAM;AAAA,IACvD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,MAAM;AAAA,IACjE,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,MAAM;AAAA,IACzE,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,aAAa,EAAE,OAAO,MAAM,eAAe,MAAM,YAAY,KAAK;AAAA,IAClE,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,IACvE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,YAAY,OAAO;AAC/B,aAAS,YAAY,QACnB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QACpB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,KAAK;AAAA,MAC7B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,UAAU;AAAA,MAClC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,WAAW;AAAA,MACnC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,qCAAqC,EAAE;AAAA,MAC3C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAiBC;AACH;AA2BO,SAAS,4BAId,aAGuD;AACvD,MAAI,YAAY,SAAS,SAAS,IAAI;AAEpC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,QAAQ,eAAe;AAAA,MACvB,OAAO,eAAe;AAAA,MACtB,QAAQ,eAAe;AAAA,MACvB,cAAc,eAAe;AAAA,MAC7B,gBAAgB,eAAe;AAAA,MAC/B,YAAY,eAAe;AAAA,MAC3B,gBAAgB,eAAe;AAAA,MAC/B,eAAe,eAAe;AAAA,MAC9B,oBAAoB,eAAe;AAAA,MACnC,gBAAgB,eAAe;AAAA,MAC/B,gBAAgB,eAAe;AAAA,MAC/B,aAAa,eAAe;AAAA,MAC5B,cAAc,eAAe;AAAA,MAC7B,eAAe,eAAe;AAAA,MAC9B,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,qCAAqC,EAAE,OAAO,YAAY,IAAI;AAAA,EACtE;AACF;;;AClnBA,IAAAC,eA8BO;AAUA,IAAM,sCAAsC,IAAI,WAAW;AAAA,EAChE;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAClC,CAAC;AAEM,SAAS,2CAA2C;AACzD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAmEO,SAAS,+CAAgG;AAC9G,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD;AAAA,QACE;AAAA,YACA,2CAA6B;AAAA,UAC3B;AAAA,YACE;AAAA,gBACA,+BAAiB;AAAA,cACf;AAAA,gBACE;AAAA,oBACA,8BAAgB;AAAA,kBACd,4BAA4B;AAAA,sBAC5B,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC;AAAA,gBAC9C,CAAC;AAAA,cACH;AAAA,YACF,CAAC;AAAA,UACH;AAAA,UACA,CAAC,eAAW,6BAAe,CAAC;AAAA,UAC5B;AAAA,YACE;AAAA,gBACA,+BAAiB;AAAA,cACf,CAAC,cAAU,8BAAgB,CAAC,4BAA4B,CAAC,CAAC,CAAC;AAAA,YAC7D,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,IACD,CAAC,WAAW;AAAA,MACV,GAAG;AAAA,MACH,eAAe;AAAA,IACjB;AAAA,EACF;AACF;AAEO,SAAS,+CAA4F;AAC1G,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD;AAAA,MACE;AAAA,UACA,2CAA6B;AAAA,QAC3B;AAAA,UACE;AAAA,cACA,+BAAiB;AAAA,YACf;AAAA,cACE;AAAA,kBACA,8BAAgB;AAAA,gBACd,4BAA4B;AAAA,oBAC5B,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC;AAAA,cAC9C,CAAC;AAAA,YACH;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA,CAAC,eAAW,6BAAe,CAAC;AAAA,QAC5B;AAAA,UACE;AAAA,cACA,+BAAiB;AAAA,YACf,CAAC,cAAU,8BAAgB,CAAC,4BAA4B,CAAC,CAAC,CAAC;AAAA,UAC7D,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAEO,SAAS,6CAGd;AACA,aAAO;AAAA,IACL,6CAA6C;AAAA,IAC7C,6CAA6C;AAAA,EAC/C;AACF;AAqBO,SAAS,kCAUd,OASA,QAUA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,IACvE,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,MAAM;AAAA,IACzE,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,MAAM;AAAA,IACjE,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,MAAM;AAAA,IACzE,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,EACtE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,mBAAmB,OAAO;AACtC,aAAS,mBAAmB,QAC1B;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,UAAU;AAAA,MAClC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,YAAY;AAAA,IACtC;AAAA,IACA,MAAM,6CAA6C,EAAE;AAAA,MACnD;AAAA,IACF;AAAA,IACA;AAAA,EACF,CASC;AACH;AAmBO,SAAS,oCAId,aAG+D;AAC/D,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,eAAe,eAAe;AAAA,MAC9B,gBAAgB,eAAe;AAAA,MAC/B,YAAY,eAAe;AAAA,MAC3B,oBAAoB,eAAe;AAAA,MACnC,gBAAgB,eAAe;AAAA,MAC/B,oBAAoB,eAAe;AAAA,MACnC,cAAc,eAAe;AAAA,IAC/B;AAAA,IACA,MAAM,6CAA6C,EAAE;AAAA,MACnD,YAAY;AAAA,IACd;AAAA,EACF;AACF;;;ACnWA,IAAAC,eAuBO;AAIA,IAAM,sCAAsC,IAAI,WAAW;AAAA,EAChE;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AACjC,CAAC;AAEM,SAAS,0CAA0C;AACxD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAmDO,SAAS,8CAAuG;AACrH,aAAO;AAAA,QACL,+BAAiB,CAAC,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC,CAAC,CAAC;AAAA,IAC1E,CAAC,WAAW;AAAA,MACV,GAAG;AAAA,MACH,eAAe;AAAA,IACjB;AAAA,EACF;AACF;AAEO,SAAS,8CAAmG;AACjH,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,EACxD,CAAC;AACH;AAEO,SAAS,4CAGd;AACA,aAAO;AAAA,IACL,4CAA4C;AAAA,IAC5C,4CAA4C;AAAA,EAC9C;AACF;AAoBO,SAAS,iCAUd,OASA,QAUA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,OAAO,EAAE,OAAO,MAAM,SAAS,MAAM,YAAY,KAAK;AAAA,IACtD,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA,IAChE,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,MAAM;AAAA,IACjE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,IACvE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,MAAI,CAAC,SAAS,WAAW,OAAO;AAC9B,aAAS,WAAW,QAClB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,KAAK;AAAA,MAC7B,eAAe,SAAS,UAAU;AAAA,MAClC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,UAAU;AAAA,MAClC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,4CAA4C,EAAE,OAAO,CAAC,CAAC;AAAA,IAC7D;AAAA,EACF,CASC;AACH;AAmBO,SAAS,mCAId,aAG8D;AAC9D,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,OAAO,eAAe;AAAA,MACtB,YAAY,eAAe;AAAA,MAC3B,gBAAgB,eAAe;AAAA,MAC/B,oBAAoB,eAAe;AAAA,MACnC,YAAY,eAAe;AAAA,MAC3B,eAAe,eAAe;AAAA,MAC9B,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,4CAA4C,EAAE;AAAA,MAClD,YAAY;AAAA,IACd;AAAA,EACF;AACF;;;AC/QA,IAAAC,eAwBO;AAUA,IAAM,uCAAuC,IAAI,WAAW;AAAA,EACjE;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AACnC,CAAC;AAEM,SAAS,4CAA4C;AAC1D,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AA+BO,SAAS,gDAAkG;AAChH,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,kBAAc,8BAAgB,wBAAwB,CAAC,CAAC;AAAA,IAC3D,CAAC;AAAA,IACD,CAAC,WAAW;AAAA,MACV,GAAG;AAAA,MACH,eAAe;AAAA,IACjB;AAAA,EACF;AACF;AAEO,SAAS,gDAA8F;AAC5G,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,kBAAc,8BAAgB,wBAAwB,CAAC,CAAC;AAAA,EAC3D,CAAC;AACH;AAEO,SAAS,8CAGd;AACA,aAAO;AAAA,IACL,8CAA8C;AAAA,IAC9C,8CAA8C;AAAA,EAChD;AACF;AAWO,SAAS,mCAKd,OACA,QAKA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,EAC1D;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAExB,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,MAAM;AAAA,IAChC;AAAA,IACA,MAAM,8CAA8C,EAAE;AAAA,MACpD;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAIC;AACH;AAcO,SAAS,qCAId,aAGgE;AAChE,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU,EAAE,WAAW,eAAe,GAAG,QAAQ,eAAe,EAAE;AAAA,IAClE,MAAM,8CAA8C,EAAE;AAAA,MACpD,YAAY;AAAA,IACd;AAAA,EACF;AACF;;;ACnMA,IAAAC,eAoCO;AASA,IAAM,sBAAsB,IAAI,WAAW;AAAA,EAChD;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AACpC,CAAC;AAEM,SAAS,6BAA6B;AAC3C,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE,OAAO,mBAAmB;AACxE;AA4HO,SAAS,iCAA6E;AAC3F,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,yBAAqB,4BAAc,CAAC;AAAA,MACrC,CAAC,sBAAkB,4BAAc,CAAC;AAAA,MAClC,CAAC,cAAU,4BAAc,CAAC;AAAA,MAC1B;AAAA,QACE;AAAA,YACA,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC;AAAA,MAC9C;AAAA,MACA,CAAC,kBAAc,6BAAe,CAAC;AAAA,MAC/B,CAAC,6BAAyB,6BAAe,CAAC;AAAA,MAC1C,CAAC,kBAAc,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAC9D,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,oBAAoB;AAAA,EAC7D;AACF;AAEO,SAAS,iCAAyE;AACvF,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,yBAAqB,4BAAc,CAAC;AAAA,IACrC,CAAC,sBAAkB,4BAAc,CAAC;AAAA,IAClC,CAAC,cAAU,4BAAc,CAAC;AAAA,IAC1B,CAAC,gCAA4B,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAC1E,CAAC,kBAAc,6BAAe,CAAC;AAAA,IAC/B,CAAC,6BAAyB,6BAAe,CAAC;AAAA,IAC1C,CAAC,kBAAc,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,EAC9D,CAAC;AACH;AAEO,SAAS,+BAGd;AACA,aAAO;AAAA,IACL,+BAA+B;AAAA,IAC/B,+BAA+B;AAAA,EACjC;AACF;AA0DA,eAAsB,yBAwBpB,OAuBA,QA0BA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,OAAO,EAAE,OAAO,MAAM,SAAS,MAAM,YAAY,KAAK;AAAA,IACtD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA,IAChE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,MAAM;AAAA,IACjE,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,MAAM;AAAA,IACzE,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,aAAa,EAAE,OAAO,MAAM,eAAe,MAAM,YAAY,KAAK;AAAA,IAClE,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,IACvE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QAAQ,UAAM,uCAAyB;AAAA,MAC3D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAI;AAAA,YAAI;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UACzD,CAAC;AAAA,QACH;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,4BAAc,EAAE,OAAO,WAAW,KAAK,cAAc,CAAC;AAAA,MACxD;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,eAAe,OAAO;AAClC,aAAS,eAAe,QAAQ,UAAM,uCAAyB;AAAA,MAC7D,gBACE;AAAA,MACF,OAAO;AAAA,YACL,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,gCAAkB,EAAE,OAAO,cAAc,SAAS,aAAa,KAAK,CAAC;AAAA,YACrE,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,WAAW,OAAO;AAC9B,aAAS,WAAW,QAAQ,UAAM,uCAAyB;AAAA,MACzD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC;AAAA,QACtE;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QAAQ,UAAM,uCAAyB;AAAA,MAC5D,gBACE;AAAA,MACF,OAAO;AAAA,YACL,gCAAkB,EAAE,OAAO,cAAc,SAAS,WAAW,KAAK,CAAC;AAAA,YACnE,gCAAkB,EAAE,OAAO,cAAc,SAAS,aAAa,KAAK,CAAC;AAAA,YACrE,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,eAAe,OAAO;AAClC,aAAS,eAAe,QAAQ,UAAM,uCAAyB;AAAA,MAC7D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAI;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAI;AAAA,YACjE;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UACjB,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,YAAY,OAAO;AAC/B,aAAS,YAAY,QACnB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QACpB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,KAAK;AAAA,MAC7B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,UAAU;AAAA,MAClC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,UAAU;AAAA,MAClC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,WAAW;AAAA,MACnC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,+BAA+B,EAAE;AAAA,MACrC;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAuBC;AACH;AA0DO,SAAS,oBAwBd,OAuBA,QAwBA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,OAAO,EAAE,OAAO,MAAM,SAAS,MAAM,YAAY,KAAK;AAAA,IACtD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA,IAChE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,MAAM;AAAA,IACjE,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,MAAM;AAAA,IACzE,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,aAAa,EAAE,OAAO,MAAM,eAAe,MAAM,YAAY,KAAK;AAAA,IAClE,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,IACvE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,YAAY,OAAO;AAC/B,aAAS,YAAY,QACnB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QACpB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,KAAK;AAAA,MAC7B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,UAAU;AAAA,MAClC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,UAAU;AAAA,MAClC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,WAAW;AAAA,MACnC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,+BAA+B,EAAE;AAAA,MACrC;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAuBC;AACH;AAoCO,SAAS,sBAId,aAGiD;AACjD,MAAI,YAAY,SAAS,SAAS,IAAI;AAEpC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,QAAQ,eAAe;AAAA,MACvB,OAAO,eAAe;AAAA,MACtB,QAAQ,eAAe;AAAA,MACvB,cAAc,eAAe;AAAA,MAC7B,WAAW,eAAe;AAAA,MAC1B,oBAAoB,eAAe;AAAA,MACnC,gBAAgB,eAAe;AAAA,MAC/B,YAAY,eAAe;AAAA,MAC3B,eAAe,eAAe;AAAA,MAC9B,cAAc,eAAe;AAAA,MAC7B,gBAAgB,eAAe;AAAA,MAC/B,YAAY,eAAe;AAAA,MAC3B,gBAAgB,eAAe;AAAA,MAC/B,eAAe,eAAe;AAAA,MAC9B,oBAAoB,eAAe;AAAA,MACnC,gBAAgB,eAAe;AAAA,MAC/B,gBAAgB,eAAe;AAAA,MAC/B,aAAa,eAAe;AAAA,MAC5B,cAAc,eAAe;AAAA,MAC7B,eAAe,eAAe;AAAA,MAC9B,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,+BAA+B,EAAE,OAAO,YAAY,IAAI;AAAA,EAChE;AACF;;;AC70BA,IAAAC,eA8BO;AAUA,IAAM,+BAA+B,IAAI,WAAW;AAAA,EACzD;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AAAA,EAAK;AAChC,CAAC;AAEM,SAAS,qCAAqC;AACnD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAwEO,SAAS,yCAAoF;AAClG,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD;AAAA,QACE;AAAA,YACA,2CAA6B;AAAA,UAC3B;AAAA,YACE;AAAA,gBACA,+BAAiB;AAAA,cACf;AAAA,gBACE;AAAA,oBACA,8BAAgB;AAAA,kBACd,sBAAsB;AAAA,sBACtB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC;AAAA,gBAC9C,CAAC;AAAA,cACH;AAAA,YACF,CAAC;AAAA,UACH;AAAA,UACA,CAAC,eAAW,6BAAe,CAAC;AAAA,UAC5B;AAAA,YACE;AAAA,gBACA,+BAAiB;AAAA,cACf,CAAC,cAAU,8BAAgB,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAAA,YACvD,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,6BAA6B;AAAA,EACtE;AACF;AAEO,SAAS,yCAAgF;AAC9F,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD;AAAA,MACE;AAAA,UACA,2CAA6B;AAAA,QAC3B;AAAA,UACE;AAAA,cACA,+BAAiB;AAAA,YACf;AAAA,cACE;AAAA,kBACA,8BAAgB;AAAA,gBACd,sBAAsB;AAAA,oBACtB,kCAAgB,2BAAa,GAAG,EAAE,MAAM,GAAG,CAAC;AAAA,cAC9C,CAAC;AAAA,YACH;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA,CAAC,eAAW,6BAAe,CAAC;AAAA,QAC5B;AAAA,UACE;AAAA,cACA,+BAAiB;AAAA,YACf,CAAC,cAAU,8BAAgB,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAAA,UACvD,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAEO,SAAS,uCAGd;AACA,aAAO;AAAA,IACL,uCAAuC;AAAA,IACvC,uCAAuC;AAAA,EACzC;AACF;AAyBO,SAAS,4BAYd,OAWA,QAYA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,IACvE,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,MAAM;AAAA,IACzE,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,MAAM;AAAA,IACjE,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,MAAM;AAAA,IACzE,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IACpE,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA,EAClE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,mBAAmB,OAAO;AACtC,aAAS,mBAAmB,QAC1B;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,UAAU;AAAA,MAClC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,UAAU;AAAA,IACpC;AAAA,IACA,MAAM,uCAAuC,EAAE;AAAA,MAC7C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAWC;AACH;AAqBO,SAAS,8BAId,aAGyD;AACzD,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,eAAe,eAAe;AAAA,MAC9B,gBAAgB,eAAe;AAAA,MAC/B,YAAY,eAAe;AAAA,MAC3B,oBAAoB,eAAe;AAAA,MACnC,gBAAgB,eAAe;AAAA,MAC/B,oBAAoB,eAAe;AAAA,MACnC,QAAQ,eAAe;AAAA,MACvB,cAAc,eAAe;AAAA,MAC7B,YAAY,eAAe;AAAA,IAC7B;AAAA,IACA,MAAM,uCAAuC,EAAE,OAAO,YAAY,IAAI;AAAA,EACxE;AACF;;;ACvXA,IAAAC,eAuBO;AAIA,IAAM,+BAA+B,IAAI,WAAW;AAAA,EACzD;AAAA,EAAK;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAChC,CAAC;AAEM,SAAS,oCAAoC;AAClD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAiDO,SAAS,wCAA2F;AACzG,aAAO;AAAA,QACL,+BAAiB,CAAC,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC,CAAC,CAAC;AAAA,IAC1E,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,6BAA6B;AAAA,EACtE;AACF;AAEO,SAAS,wCAAuF;AACrG,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,EACxD,CAAC;AACH;AAEO,SAAS,sCAGd;AACA,aAAO;AAAA,IACL,sCAAsC;AAAA,IACtC,sCAAsC;AAAA,EACxC;AACF;AAoBO,SAAS,2BAUd,OASA,QAUA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,OAAO,EAAE,OAAO,MAAM,SAAS,MAAM,YAAY,KAAK;AAAA,IACtD,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,KAAK;AAAA,IAChE,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,YAAY,EAAE,OAAO,MAAM,cAAc,MAAM,YAAY,MAAM;AAAA,IACjE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,IACvE,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,MAAI,CAAC,SAAS,WAAW,OAAO;AAC9B,aAAS,WAAW,QAClB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,KAAK;AAAA,MAC7B,eAAe,SAAS,UAAU;AAAA,MAClC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,UAAU;AAAA,MAClC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,sCAAsC,EAAE,OAAO,CAAC,CAAC;AAAA,IACvD;AAAA,EACF,CASC;AACH;AAmBO,SAAS,6BAId,aAGwD;AACxD,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,OAAO,eAAe;AAAA,MACtB,YAAY,eAAe;AAAA,MAC3B,gBAAgB,eAAe;AAAA,MAC/B,oBAAoB,eAAe;AAAA,MACnC,YAAY,eAAe;AAAA,MAC3B,eAAe,eAAe;AAAA,MAC9B,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,sCAAsC,EAAE,OAAO,YAAY,IAAI;AAAA,EACvE;AACF;;;ACxQA,IAAAC,eAyBO;AAIA,IAAM,iDAAiD,IAAI,WAAW;AAAA,EAC3E;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AACnC,CAAC;AAEM,SAAS,qDAAqD;AACnE,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AA+BO,SAAS,yDAA6H;AAC3I,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACtC,CAAC;AAAA,IACD,CAAC,WAAW;AAAA,MACV,GAAG;AAAA,MACH,eAAe;AAAA,IACjB;AAAA,EACF;AACF;AAEO,SAAS,yDAAyH;AACvI,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,EACtC,CAAC;AACH;AAEO,SAAS,uDAGd;AACA,aAAO;AAAA,IACL,uDAAuD;AAAA,IACvD,uDAAuD;AAAA,EACzD;AACF;AAWA,eAAsB,iDAKpB,OAIA,QAOA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,EACtE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QAAQ,UAAM,uCAAyB;AAAA,MAC3D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,UAC1D,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,YAAY;AAAA,IACtC;AAAA,IACA,MAAM,uDAAuD,EAAE;AAAA,MAC7D;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAIC;AACH;AAWO,SAAS,4CAKd,OAIA,QAKA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,EACtE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAExB,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,YAAY;AAAA,IACtC;AAAA,IACA,MAAM,uDAAuD,EAAE;AAAA,MAC7D;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAIC;AACH;AAcO,SAAS,8CAId,aAGyE;AACzE,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU,EAAE,WAAW,eAAe,GAAG,cAAc,eAAe,EAAE;AAAA,IACxE,MAAM,uDAAuD,EAAE;AAAA,MAC7D,YAAY;AAAA,IACd;AAAA,EACF;AACF;;;AC3QA,IAAAC,eA2BO;AASA,IAAM,8BAA8B,IAAI,WAAW;AAAA,EACxD;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAG;AAAA,EAAK;AACjC,CAAC;AAEM,SAAS,oCAAoC;AAClD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAiCO,SAAS,wCAA2F;AACzG,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,sBAAkB,4BAAc,CAAC;AAAA,IACpC,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,4BAA4B;AAAA,EACrE;AACF;AAEO,SAAS,wCAAuF;AACrG,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,sBAAkB,4BAAc,CAAC;AAAA,EACpC,CAAC;AACH;AAEO,SAAS,sCAGd;AACA,aAAO;AAAA,IACL,sCAAsC;AAAA,IACtC,sCAAsC;AAAA,EACxC;AACF;AAaA,eAAsB,gCAMpB,OAKA,QAQA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,EACtE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QAAQ,UAAM,uCAAyB;AAAA,MAC3D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAI;AAAA,YAAI;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UACzD,CAAC;AAAA,QACH;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,4BAAc,EAAE,OAAO,WAAW,KAAK,cAAc,CAAC;AAAA,MACxD;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,IACtC;AAAA,IACA,MAAM,sCAAsC,EAAE;AAAA,MAC5C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAKC;AACH;AAaO,SAAS,2BAMd,OAKA,QAMA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,EACtE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAExB,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,YAAY;AAAA,IACtC;AAAA,IACA,MAAM,sCAAsC,EAAE;AAAA,MAC5C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAKC;AACH;AAeO,SAAS,6BAId,aAGwD;AACxD,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,QAAQ,eAAe;AAAA,MACvB,QAAQ,eAAe;AAAA,MACvB,cAAc,eAAe;AAAA,IAC/B;AAAA,IACA,MAAM,sCAAsC,EAAE,OAAO,YAAY,IAAI;AAAA,EACvE;AACF;;;ACvSA,IAAAC,eA6BO;AAIA,IAAM,qCAAqC,IAAI,WAAW;AAAA,EAC/D;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AACnC,CAAC;AAEM,SAAS,0CAA0C;AACxD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAuCO,SAAS,8CAAuG;AACrH,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,8BAA0B,4BAAc,CAAC;AAAA,MAC1C,CAAC,wBAAoB,4BAAc,CAAC;AAAA,MACpC,CAAC,qBAAiB,4BAAc,CAAC;AAAA,MACjC,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,MACpC,CAAC,kCAA8B,4BAAc,CAAC;AAAA,IAChD,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,mCAAmC;AAAA,EAC5E;AACF;AAEO,SAAS,8CAAmG;AACjH,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,8BAA0B,4BAAc,CAAC;AAAA,IAC1C,CAAC,wBAAoB,4BAAc,CAAC;AAAA,IACpC,CAAC,qBAAiB,4BAAc,CAAC;AAAA,IACjC,CAAC,oBAAgB,gCAAkB,CAAC;AAAA,IACpC,CAAC,kCAA8B,4BAAc,CAAC;AAAA,EAChD,CAAC;AACH;AAEO,SAAS,4CAGd;AACA,aAAO;AAAA,IACL,4CAA4C;AAAA,IAC5C,4CAA4C;AAAA,EAC9C;AACF;AAeA,eAAsB,sCAKpB,OACA,QAOA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,EACtE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QAAQ,UAAM,uCAAyB;AAAA,MAC3D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,UAC1D,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,YAAY;AAAA,IACtC;AAAA,IACA,MAAM,4CAA4C,EAAE;AAAA,MAClD;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAIC;AACH;AAeO,SAAS,iCAKd,OACA,QAKA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,EACtE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAExB,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,YAAY;AAAA,IACtC;AAAA,IACA,MAAM,4CAA4C,EAAE;AAAA,MAClD;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAIC;AACH;AAcO,SAAS,mCAId,aAG8D;AAC9D,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU,EAAE,WAAW,eAAe,GAAG,cAAc,eAAe,EAAE;AAAA,IACxE,MAAM,4CAA4C,EAAE;AAAA,MAClD,YAAY;AAAA,IACd;AAAA,EACF;AACF;;;AC9RA,IAAAC,eAyBO;AAQA,IAAM,gCAAgC,IAAI,WAAW;AAAA,EAC1D;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAClC,CAAC;AAEM,SAAS,sCAAsC;AACpD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAgDO,SAAS,0CAA+F;AAC7G,aAAO;AAAA,QACL,+BAAiB,CAAC,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC,CAAC,CAAC;AAAA,IAC1E,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,8BAA8B;AAAA,EACvE;AACF;AAEO,SAAS,0CAA2F;AACzG,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,EACxD,CAAC;AACH;AAEO,SAAS,wCAGd;AACA,aAAO;AAAA,IACL,wCAAwC;AAAA,IACxC,wCAAwC;AAAA,EAC1C;AACF;AAsBA,eAAsB,kCAUpB,OASA,QAYA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IAC1D,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,EACvE;AACA,QAAM,WAAW;AAMjB,MAAI,CAAC,SAAS,eAAe,OAAO;AAClC,aAAS,eAAe,QAAQ,UAAM,uCAAyB;AAAA,MAC7D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,QACpD;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,QAAQ,KAAK,CAAC;AAAA,YAChE,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,MACjE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,eAAe,OAAO;AAClC,aAAS,eAAe,QAAQ,UAAM,uCAAyB;AAAA,MAC7D,gBACE;AAAA,MACF,OAAO;AAAA,YACL,gCAAkB,EAAE,OAAO,cAAc,SAAS,OAAO,KAAK,CAAC;AAAA,YAC/D,gCAAkB,EAAE,OAAO,cAAc,SAAS,aAAa,KAAK,CAAC;AAAA,YACrE,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,YAAY;AAAA,IACtC;AAAA,IACA,MAAM,wCAAwC,EAAE,OAAO,CAAC,CAAC;AAAA,IACzD;AAAA,EACF,CASC;AACH;AAsBO,SAAS,6BAUd,OASA,QAUA;AAEA,QAAM,iBACJ,QAAQ,kBAAkB;AAG5B,QAAM,mBAAmB;AAAA,IACvB,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IAC1D,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,gBAAgB,EAAE,OAAO,MAAM,kBAAkB,MAAM,YAAY,KAAK;AAAA,IACxE,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,EACvE;AACA,QAAM,WAAW;AAKjB,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,cAAc;AAAA,MACtC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,YAAY;AAAA,IACtC;AAAA,IACA,MAAM,wCAAwC,EAAE,OAAO,CAAC,CAAC;AAAA,IACzD;AAAA,EACF,CASC;AACH;AAqBO,SAAS,+BAId,aAG0D;AAC1D,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,SAAS,eAAe;AAAA,MACxB,QAAQ,eAAe;AAAA,MACvB,gBAAgB,eAAe;AAAA,MAC/B,WAAW,eAAe;AAAA,MAC1B,gBAAgB,eAAe;AAAA,MAC/B,oBAAoB,eAAe;AAAA,MACnC,cAAc,eAAe;AAAA,IAC/B;AAAA,IACA,MAAM,wCAAwC,EAAE,OAAO,YAAY,IAAI;AAAA,EACzE;AACF;;;AC3XA,eAAsB,eACpB,OAC4C;AAC5C,QAAM,EAAE,gBAAgB,OAAO,UAAU,IAAI;AAE7C,SAAO;AAAA,IACL;AAAA,MACE;AAAA,MACA;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,eAAe,IAAI;AAAA,EACxC;AACF;;;ACxBA,oBAA4B;AAMrB,SAAS,0BAAkC;AAChD,SAAO,OAAO,WAAO,2BAAY,CAAC,EAAE,SAAS,KAAK,CAAC;AACrD;AAMO,SAAS,mBAA2B;AACzC,SAAO,OAAO,WAAO,2BAAY,EAAE,EAAE,SAAS,KAAK,CAAC;AACtD;AAYO,SAAS,cAAc,OAA4B;AACxD,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO;AAAA,EACT;AACA,SAAO,MAAM,KAAK,KAAK;AACzB;;;ACXA,eAAsB,aACpB,OAC0C;AAC1C,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,SAAO;AAAA,IACL;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,wBAAwB,cAAc,sBAAsB;AAAA,MAC5D;AAAA,MACA;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,eAAe,IAAI;AAAA,EACxC;AACF;;;ACxDA,IAAAC,eAOO;AACP,oBAKO;AACP,kBAA0B;AAO1B,gBAAmB;AAOZ,IAAM,wBAA8C;AAAA,EACzD;AAAA,EACA;AACF;AAGA,SAAS,UAAU,QAAyC;AAC1D,aAAO,sBAAQ,OAAO,SAAS,CAAC;AAClC;AAIA,eAAsB,cAAc,KAAwB,YAAqB,oCAAoC;AACnH,QAAM,kBAAkB,IAAI,sBAAU,SAAS;AAC/C,QAAM,aAAa,cAAU,gCAAiB,eAAe,CAAC;AAC9D,SAAO,gBAAgB,KAAK,UAAU;AACxC;AAEO,SAAS,kBACd,aACA,YAAqB,oCACZ;AACT,QAAM,kBAAkB,IAAI,sBAAU,SAAS;AAC/C,QAAM,aAAS,mCAAoB,WAAW;AAC9C,SAAO;AAAA,QACL,oCAAqB,iBAAiB,OAAO,KAAK,MAAM,EAAE,aAAa,CAAC;AAAA,EAC1E;AACF;AAGO,SAAS,uBAAuB,aAAyC;AAC9E,QAAM,aAAS,mCAAoB,WAAW;AAC9C,SAAO,OAAO,KAAK,MAAM,EAAE,aAAa;AAC1C;AAGA,eAAsB,0BACpB,KACA,OACA,aACA,SAA4B,CAAC,GACP;AACtB,QAAM,YAAY,OAAO,kBAAkB;AAC3C,QAAM,aAAa,MAAM,cAAc,KAAK,SAAS;AACrD,QAAM,iBAAiB,kBAAkB,aAAa,SAAS;AAC/D,QAAM,iBAAa;AAAA,IACjB,IAAI,sBAAU,UAAU,SAAS,CAAC;AAAA,IAClC,IAAI,aAAG,WAAW,KAAK,aAAa;AAAA,EACtC;AAEA,QAAM,YAAY;AAAA,IAChB;AAAA,IACA,YAAY,WAAW;AAAA,IACvB;AAAA,IACA,oBAAoB,UAAU,UAAU;AAAA,EAE1C;AAEA,UAAQ,aAAa;AAAA,IACnB,KAAK;AACH,aAAO,2BAA2B,WAAW,EAAE,gBAAgB,UAAU,CAAC;AAAA,IAE5E,KAAK;AACH,aAAO,iCAAiC,WAAW,EAAE,gBAAgB,UAAU,CAAC;AAAA,IAElF;AACE,YAAM,IAAI,MAAM,oBAAoB,WAAW,EAAE;AAAA,EACrD;AACF;;;AChGA,IAAAC,eAAiC;AACjC,IAAAC,iBAQO;AACP,IAAAC,eAA0B;AAC1B,IAAAC,aAAe;AAKf,SAASC,WAAU,QAAyC;AAC1D,aAAO,sBAAQ,OAAO,SAAS,CAAC;AAClC;AAOO,SAAS,mBAAmB,QAAgB,QAAsB;AACvE,QAAM,YAAY,OAAO,aAAa;AACtC,QAAM,kBAAkB,IAAI,uBAAU,SAAS;AAC/C,QAAM,EAAE,eAAe,kBAAkB,IAAI;AAC7C,QAAM,aAAaA,eAAU,iCAAiB,eAAe,CAAC;AAC9D,QAAM,iBAAiBA,eAAU,qCAAqB,aAAa,CAAC;AACpE,QAAM,iBAAiBA,eAAU,qCAAqB,aAAa,CAAC;AACpE,QAAM,gBAAgBA,eAAU,2CAA2B,aAAa,CAAC;AAGzE,QAAM,sBAAsB,IAAI,WAAAC,QAAG,kBAAkB,SAAS,CAAC;AAE/D,QAAM,qBAAqBD;AAAA,QACzB,yCAAyB,eAAe,mBAAmB;AAAA,EAC7D;AACA,QAAM,iBAAiBA;AAAA,QACrB;AAAA,MACE;AAAA,MACA,OAAO,SAAK,oCAAoB,MAAM,CAAC,EAAE,aAAa;AAAA,IACxD;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AC7BA,eAAsB,MACpB,OACA,QACmC;AACnC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,SAAO;AAAA,IACL;AAAA,MACE,GAAG,mBAAmB,SAAS,MAAM;AAAA,MACrC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,0BAA0B,cAAc,wBAAwB;AAAA,MAChE;AAAA,MACA;AAAA,MACA,YAAY,cAAc,UAAU;AAAA,IACtC;AAAA,IACA,iBAAiB,EAAE,eAAe,IAAI;AAAA,EACxC;AACF;;;ACxDA,eAAsB,YACpB,OACA,QACyC;AACzC,QAAM,EAAE,gBAAgB,QAAQ,OAAO,QAAQ,eAAe,IAAI;AAElE,SAAO;AAAA,IACL;AAAA,MACE,GAAG,mBAAmB,gBAAgB,MAAM;AAAA,MAC5C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,eAAe,IAAI;AAAA,EACxC;AACF;;;AClBA,eAAsB,gBACpB,OAC6C;AAC7C,QAAM,EAAE,gBAAgB,GAAG,OAAO,IAAI;AACtC,SAAO;AAAA,IACL;AAAA,IACA,iBAAiB,EAAE,eAAe,IAAI;AAAA,EACxC;AACF;;;ACRO,SAAS,WACd,OAC+B;AAC/B,QAAM,EAAE,gBAAgB,GAAG,OAAO,IAAI;AACtC,SAAO;AAAA,IACL;AAAA,IACA,iBAAiB,EAAE,eAAe,IAAI;AAAA,EACxC;AACF;;;ACPO,SAAS,qBACd,OACyC;AACzC,QAAM,EAAE,gBAAgB,GAAG,OAAO,IAAI;AACtC,SAAO;AAAA,IACL;AAAA,IACA,iBAAiB,EAAE,eAAe,IAAI;AAAA,EACxC;AACF;;;ACVO,SAAS,gBACd,OACoC;AACpC,QAAM,EAAE,gBAAgB,GAAG,OAAO,IAAI;AACtC,SAAO;AAAA,IACL;AAAA,IACA,iBAAiB,EAAE,eAAe,IAAI;AAAA,EACxC;AACF;;;ACHA,eAAsB,UACpB,OACuC;AACvC,QAAM,EAAE,gBAAgB,GAAG,OAAO,IAAI;AACtC,SAAO;AAAA,IACL;AAAA,IACA,iBAAiB,EAAE,eAAe,IAAI;AAAA,EACxC;AACF;;;ACXA,eAAsB,iBACpB,OAC8C;AAC9C,QAAM,EAAE,gBAAgB,GAAG,OAAO,IAAI;AACtC,SAAO;AAAA,IACL;AAAA,IACA,iBAAiB,EAAE,eAAe,IAAI;AAAA,EACxC;AACF;;;ACLA,eAAsB,kBACpB,OAC+C;AAC/C,QAAM,EAAE,gBAAgB,GAAG,OAAO,IAAI;AACtC,SAAO;AAAA,IACL;AAAA,IACA,iBAAiB,EAAE,eAAe,IAAI;AAAA,EACxC;AACF;;;ACTA,eAAsB,uBACpB,OACoD;AACpD,QAAM,EAAE,gBAAgB,GAAG,OAAO,IAAI;AACtC,SAAO;AAAA,IACL;AAAA,IACA,iBAAiB,EAAE,eAAe,IAAI;AAAA,EACxC;AACF;;;ACNA,eAAsB,aACpB,OAC0C;AAC1C,QAAM,EAAE,gBAAgB,GAAG,OAAO,IAAI;AAEtC,SAAO;AAAA,IACL;AAAA,IACA,iBAAiB,EAAE,eAAe,IAAI;AAAA,EACxC;AACF;;;ACZA,eAAsB,qBACpB,OACkD;AAClD,QAAM,EAAE,gBAAgB,GAAG,OAAO,IAAI;AACtC,SAAO;AAAA,IACL;AAAA,IACA,iBAAiB,EAAE,eAAe,IAAI;AAAA,EACxC;AACF;;;ACVA,eAAsB,aACpB,OAC0C;AAC1C,QAAM,EAAE,gBAAgB,GAAG,OAAO,IAAI;AACtC,SAAO;AAAA,IACL;AAAA,IACA,iBAAiB,EAAE,eAAe,IAAI;AAAA,EACxC;AACF;;;ACHA,eAAsB,eACpB,OAC4C;AAC5C,QAAM,EAAE,gBAAgB,GAAG,OAAO,IAAI;AAEtC,SAAO;AAAA,IACL;AAAA,IACA,iBAAiB,EAAE,eAAe,IAAI;AAAA,EACxC;AACF;;;AC3BA,IAAAE,eAIO;AAGA,IAAM,qBAAqB;AAElC,eAAsB,uBACpB,YAAqB,oCACW;AAChC,aAAO,uCAAyB;AAAA,IAC9B,gBAAgB;AAAA,IAChB,OAAO,CAAC,kBAAkB;AAAA,EAC5B,CAAC;AACH;;;ACEA,eAAsB,mBACpB,KACA,QAC6B;AAC7B,QAAM,EAAE,gBAAgB,QAAQ,GAAG,KAAK,IAAI;AAC5C,QAAM,SAAS,iBAAiB,EAAE,eAAe,IAAI;AAErD,QAAM,CAAC,mBAAmB,IAAI,MAAM,uBAAuB,cAAc;AACzE,QAAM,WAAW,MAAM,uBAAuB,KAAK,mBAAmB;AAEtE,MAAI,SAAS,QAAQ;AACnB,UAAM,IAAI,SAAS;AACnB,QACE,EAAE,2BAA2B,OAAO,KAAK,sBAAsB,KAC/D,EAAE,qBAAqB,OAAO,KAAK,gBAAgB,KACnD,EAAE,kBAAkB,KAAK,iBACzB,EAAE,iBAAiB,KAAK,gBACxB,EAAE,+BAA+B,OAAO,KAAK,0BAA0B,GACvE;AACA,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,MACL,EAAE,WAAW,QAAQ,GAAG,KAAK;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,EAAE,OAAO,QAAQ,GAAG,KAAK;AAAA,IACzB;AAAA,EACF;AACF;;;ACnCA,eAAsB,eACpB,OAC4C;AAC5C,QAAM,EAAE,gBAAgB,GAAG,OAAO,IAAI;AACtC,SAAO;AAAA,IACL;AAAA,IACA,iBAAiB,EAAE,eAAe,IAAI;AAAA,EACxC;AACF;;;ACvBA,IAAAC,eAMO;AAGA,IAAM,0BAA0B;AAEvC,eAAsB,4BACpB,SACA,aACA,YAAqB,oCACW;AAChC,aAAO,uCAAyB;AAAA,IAC9B,gBAAgB;AAAA,IAChB,OAAO;AAAA,MACL;AAAA,UACA,gCAAkB,EAAE,OAAO,OAAO;AAAA,UAClC,4BAAc,EAAE,OAAO,OAAO,WAAW,CAAC;AAAA,IAC5C;AAAA,EACF,CAAC;AACH;;;ACxBA,IAAAC,eAMO;AAGA,IAAM,iCAAiC;AAE9C,eAAsB,kCACpB,QACA,UACA,YAAqB,oCACW;AAChC,aAAO,uCAAyB;AAAA,IAC9B,gBAAgB;AAAA,IAChB,OAAO;AAAA,MACL;AAAA,UACA,gCAAkB,EAAE,OAAO,MAAM;AAAA,UACjC,4BAAc,EAAE,OAAO,QAAQ;AAAA,IACjC;AAAA,EACF,CAAC;AACH;;;ACxBA,IAAAC,eAKO;AAGA,IAAM,eAAe;AAE5B,eAAsB,mCACpB,SACA,QACA,YAAqB,oCACW;AAChC,QAAM,qBAAiB,gCAAkB;AACzC,aAAO,uCAAyB;AAAA,IAC9B,gBAAgB;AAAA,IAChB,OAAO;AAAA,MACL;AAAA,MACA,eAAe,OAAO,OAAO;AAAA,MAC7B,eAAe,OAAO,MAAM;AAAA,IAC9B;AAAA,EACF,CAAC;AACH;;;ACxBA,IAAAC,eAKO;AAGA,IAAM,qBAAqB;AAElC,eAAsB,uBACpB,OACA,QACA,gBACA,YAAqB,oCACW;AAChC,QAAM,qBAAiB,gCAAkB;AACzC,QAAM,UAAU,IAAI,WAAW,CAAC;AAChC,MAAI,SAAS,QAAQ,MAAM,EAAE,UAAU,GAAG,gBAAgB,IAAI;AAC9D,aAAO,uCAAyB;AAAA,IAC9B,gBAAgB;AAAA,IAChB,OAAO;AAAA,MACL;AAAA,MACA,eAAe,OAAO,KAAK;AAAA,MAC3B,eAAe,OAAO,MAAM;AAAA,MAC5B;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AC5BA,IAAAC,eAKO;AAGA,IAAM,mBAAmB;AAEhC,eAAsB,qBACpB,MACA,YAAqB,oCACW;AAChC,aAAO,uCAAyB;AAAA,IAC9B,gBAAgB;AAAA,IAChB,OAAO,CAAC,sBAAkB,gCAAkB,EAAE,OAAO,IAAI,CAAC;AAAA,EAC5D,CAAC;AACH;;;ACfA,IAAAC,eAA4E;;;ACDrE,IAAM,oBAAoB;;;ADUjC,IAAM,2CAA2C,IAAI,WAAW,CAAC,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAKtG,SAAS,YAAY,KAAa,eAAmC;AACnE,QAAM,SAAS,IAAI,WAAW,aAAa;AAC3C,MAAI,UAAU;AACd,WAAS,IAAI,GAAG,IAAI,eAAe,KAAK;AACtC,WAAO,CAAC,IAAI,OAAO,UAAU,OAAO,GAAG,CAAC;AACxC,gBAAY,OAAO,CAAC;AAAA,EACtB;AACA,SAAO;AACT;AAEA,SAAS,WAAW,GAAsB,GAA+B;AACvE,MAAI,EAAE,WAAW,EAAE,OAAQ,QAAO;AAClC,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,QAAI,EAAE,CAAC,MAAM,EAAE,CAAC,EAAG,QAAO;AAAA,EAC5B;AACA,SAAO;AACT;AAqBO,IAAM,oCAAoC,OAC/C,KACA,oBACA,YAC4C;AAC5C,MAAI,mBAAmB,WAAW,GAAG;AACnC,WAAO,oBAAI,IAAI;AAAA,EACjB;AAEA,QAAM,eAAe,SAAS,gBAAgB;AAC9C,QAAM,aAAa,SAAS,cAAc;AAC1C,QAAM,wBAAoB,gCAAkB,EAAE,OAAO,YAAY;AAEjE,QAAM,wBAAwB,SAAS,yBAAyB;AAChE,QAAM,eAAe,SAAS,gBAAgB;AAC9C,QAAM,cAAc,SAAS,eAAe;AAG5C,QAAM,iBAAiB,oBAAI,IAAwB;AACnD,aAAW,UAAU,oBAAoB;AACvC,mBAAe,IAAI,QAAQ,YAAY,QAAQ,CAAC,CAAC;AAAA,EACnD;AAGA,QAAM,eAAe,oBAAI,IAA+B;AACxD,QAAM,mBAAmB,IAAI,IAAI,kBAAkB;AAEnD,WAAS,UAAU,GAAG,UAAU,aAAa,WAAW;AACtD,QAAI;AACF,YAAM,aAAa,MAAM,IAAI;AAAA,QAC3B;AAAA,QACA,EAAE,OAAO,sBAAsB;AAAA,MACjC,EAAE,KAAK;AAEP,iBAAW,WAAW,YAAY;AAChC,cAAM,KAAK,MAAM,IAAI,eAAe,QAAQ,WAAW;AAAA,UACrD;AAAA,UACA,UAAU;AAAA,UACV,gCAAgC;AAAA,QAClC,CAAC,EAAE,KAAK;AAER,YAAI,CAAC,GAAI;AAET,cAAM,OAAO,GAAG,MAAM,eAAe,CAAC;AAEtC,mBAAW,OAAO,MAAM;AACtB,cAAI,IAAI,SAAS,eAAe,GAAG;AACjC,kBAAM,aAAa,IAAI,MAAM,gBAAgB,EAAE,CAAC;AAChD,gBAAI,CAAC,WAAY;AAEjB,gBAAI;AACF,oBAAM,YAAY,WAAW,KAAK,KAAK,UAAU,GAAG,OAAK,EAAE,WAAW,CAAC,CAAC;AAExE,kBAAI,UAAU,UAAU,MACpB,WAAW,UAAU,SAAS,GAAG,CAAC,GAAG,wCAAwC,GAAG;AAElF,sBAAM,mBAAmB,UAAU,SAAS,GAAG,EAAE;AACjD,sBAAM,oBAAoB,UAAU,SAAS,IAAI,EAAE;AAEnD,oBAAI,CAAC,WAAW,mBAAmB,iBAAiB,EAAG;AAGvD,2BAAW,UAAU,kBAAkB;AACrC,wBAAM,gBAAgB,eAAe,IAAI,MAAM;AAC/C,sBAAI,WAAW,kBAAkB,aAAa,GAAG;AAE/C,0BAAM,UAAU,GAAG,MAAM;AACzB,wBAAI;AAEJ,wBAAI,SAAS;AAEX,4BAAM,WAAW,KAAK,KAAK,OAAK,EAAE,SAAS,OAAO,KAAK,EAAE,SAAS,QAAQ,CAAC;AAC3E,qCAAe,YAAY,KAAK,UAAU,OAAO;AAAA,oBACnD;AAEA,iCAAa,IAAI,QAAQ;AAAA,sBACvB,WAAW,QAAQ;AAAA,sBACnB,OAAO;AAAA,oBACT,CAAC;AACD,qCAAiB,OAAO,MAAM;AAC9B;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF,QAAQ;AACN;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAGA,YAAI,iBAAiB,SAAS,GAAG;AAC/B,iBAAO;AAAA,QACT;AAAA,MACF;AAGA,UAAI,iBAAiB,SAAS,GAAG;AAC/B,eAAO;AAAA,MACT;AAEA,YAAM,IAAI,QAAQ,aAAW,WAAW,SAAS,YAAY,CAAC;AAAA,IAChE,SAAS,OAAO;AACd,YAAM,IAAI,QAAQ,aAAW,WAAW,SAAS,YAAY,CAAC;AAAA,IAChE;AAAA,EACF;AAEA,QAAM,iBAAiB,MAAM,KAAK,gBAAgB,EAAE,KAAK,IAAI;AAC7D,QAAM,IAAI;AAAA,IACR,4CAA4C,WAAW,+BAA+B,cAAc;AAAA,EACtG;AACF;AAMO,IAAM,+BAA+B,OAC1C,KACA,mBACA,YAC+B;AAC/B,QAAM,UAAU,MAAM,kCAAkC,KAAK,CAAC,iBAAiB,GAAG,OAAO;AACzF,SAAO,QAAQ,IAAI,iBAAiB;AACtC;;;AElLA,IAAAC,iBAAqC;AACrC,IAAAC,aAAmB;AACnB,IAAAC,iBAA2B;AAWpB,SAAS,wBAAuC;AACrD,QAAM,YAAY,sBAAO,MAAM,gBAAgB;AAC/C,QAAM,YAAY,sBAAO,aAAa,SAAS;AAC/C,SAAO,EAAE,WAAW,UAAU;AAChC;AAKO,SAAS,iCAAiC,WAAsC;AACrF,QAAM,YAAY,IAAI,eAAW,2BAAW,QAAQ,EAAE,OAAO,SAAS,EAAE,OAAO,CAAC;AAChF,QAAM,YAAY,sBAAO,aAAa,SAAS;AAC/C,SAAO,EAAE,WAAW,UAAU;AAChC;AAMO,SAAS,mBAAmB,eAA2B,cAAsC;AAClG,SAAO,sBAAO,gBAAgB,eAAe,YAAY;AAC3D;AAMO,SAAS,aAAa,eAA2B,cAAwC;AAC9F,QAAM,eAAe,mBAAmB,eAAe,YAAY;AACnE,SAAO,IAAI,4BAAa,YAAY;AACtC;AAEO,SAAS,aAAa,OAA2B;AACtD,SAAO,WAAW,KAAK,IAAI,cAAG,MAAM,SAAS,CAAC,EAAE,QAAQ,MAAM,EAAE,CAAC;AACnE;","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","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_client","import_web3","import_bn","toAddress","BN","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/rewardAddedEvent.ts","../src/generated/types/rewardClaimedEvent.ts","../src/generated/types/rewardWithdrawnEvent.ts","../src/generated/types/stakeAccountInitializedEvent.ts","../src/generated/types/stakedEvent.ts","../src/generated/types/stakeOutput.ts","../src/generated/types/stakeOutputStruct0.ts","../src/generated/types/stakeReclaimedEvent.ts","../src/generated/types/stakeRevealedEvent.ts","../src/generated/types/stuckStakeClosedEvent.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/opportunityMarketSponsor.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/addReward.ts","../src/generated/instructions/claimFees.ts","../src/generated/instructions/closeStakeAccount.ts","../src/generated/instructions/closeStuckStakeAccount.ts","../src/generated/instructions/createMarket.ts","../src/generated/instructions/doUnstakeEarly.ts","../src/generated/instructions/endRevealPeriod.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/endRevealPeriod.ts","../src/instructions/addReward.ts","../src/instructions/initStakeAccount.ts","../src/instructions/closeStakeAccount.ts","../src/instructions/closeStuckStakeAccount.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/opportunityMarketSponsor.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 getArrayDecoder,\n getArrayEncoder,\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 minimumInitialRevealPeriod: bigint;\n /** Reserved for future use */\n reserved: Array<number>;\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 minimumInitialRevealPeriod: number | bigint;\n /** Reserved for future use */\n reserved: Array<number>;\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 ['minimumInitialRevealPeriod', getU64Encoder()],\n ['reserved', getArrayEncoder(getU8Encoder(), { size: 128 })],\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 ['minimumInitialRevealPeriod', getU64Decoder()],\n ['reserved', getArrayDecoder(getU8Decoder(), { size: 128 })],\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 timeToStake: bigint;\n timeToReveal: bigint;\n earlinessCutoffSeconds: 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 timeToStake: number | bigint;\n timeToReveal: number | bigint;\n earlinessCutoffSeconds: 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 ['timeToStake', getU64Encoder()],\n ['timeToReveal', getU64Encoder()],\n ['earlinessCutoffSeconds', 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 ['timeToStake', getU64Decoder()],\n ['timeToReveal', getU64Decoder()],\n ['earlinessCutoffSeconds', 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 getBooleanDecoder,\n getBooleanEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RewardAddedEvent = {\n market: Address;\n sponsor: Address;\n amount: bigint;\n totalRewardAmount: bigint;\n locked: boolean;\n timestamp: bigint;\n};\n\nexport type RewardAddedEventArgs = {\n market: Address;\n sponsor: Address;\n amount: number | bigint;\n totalRewardAmount: number | bigint;\n locked: boolean;\n timestamp: number | bigint;\n};\n\nexport function getRewardAddedEventEncoder(): FixedSizeEncoder<RewardAddedEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['sponsor', getAddressEncoder()],\n ['amount', getU64Encoder()],\n ['totalRewardAmount', getU64Encoder()],\n ['locked', getBooleanEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRewardAddedEventDecoder(): FixedSizeDecoder<RewardAddedEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['sponsor', getAddressDecoder()],\n ['amount', getU64Decoder()],\n ['totalRewardAmount', getU64Decoder()],\n ['locked', getBooleanDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRewardAddedEventCodec(): FixedSizeCodec<\n RewardAddedEventArgs,\n RewardAddedEvent\n> {\n return combineCodec(\n getRewardAddedEventEncoder(),\n getRewardAddedEventDecoder()\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RewardClaimedEvent = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\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 stakeAccountId: number;\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 ['stakeAccountId', getU32Encoder()],\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 ['stakeAccountId', getU32Decoder()],\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 RewardWithdrawnEvent = {\n market: Address;\n sponsor: Address;\n rewardAmount: bigint;\n refundTokenAccount: Address;\n timestamp: bigint;\n};\n\nexport type RewardWithdrawnEventArgs = {\n market: Address;\n sponsor: Address;\n rewardAmount: number | bigint;\n refundTokenAccount: Address;\n timestamp: number | bigint;\n};\n\nexport function getRewardWithdrawnEventEncoder(): FixedSizeEncoder<RewardWithdrawnEventArgs> {\n return getStructEncoder([\n ['market', getAddressEncoder()],\n ['sponsor', getAddressEncoder()],\n ['rewardAmount', getU64Encoder()],\n ['refundTokenAccount', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getRewardWithdrawnEventDecoder(): FixedSizeDecoder<RewardWithdrawnEvent> {\n return getStructDecoder([\n ['market', getAddressDecoder()],\n ['sponsor', getAddressDecoder()],\n ['rewardAmount', getU64Decoder()],\n ['refundTokenAccount', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getRewardWithdrawnEventCodec(): FixedSizeCodec<\n RewardWithdrawnEventArgs,\n RewardWithdrawnEvent\n> {\n return combineCodec(\n getRewardWithdrawnEventEncoder(),\n getRewardWithdrawnEventDecoder()\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StakeAccountInitializedEvent = {\n stakeAccount: Address;\n owner: Address;\n market: Address;\n accountId: number;\n timestamp: bigint;\n};\n\nexport type StakeAccountInitializedEventArgs = {\n stakeAccount: Address;\n owner: Address;\n market: Address;\n accountId: number;\n timestamp: number | bigint;\n};\n\nexport function getStakeAccountInitializedEventEncoder(): FixedSizeEncoder<StakeAccountInitializedEventArgs> {\n return getStructEncoder([\n ['stakeAccount', getAddressEncoder()],\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['accountId', getU32Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakeAccountInitializedEventDecoder(): FixedSizeDecoder<StakeAccountInitializedEvent> {\n return getStructDecoder([\n ['stakeAccount', getAddressDecoder()],\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['accountId', getU32Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakeAccountInitializedEventCodec(): FixedSizeCodec<\n StakeAccountInitializedEventArgs,\n StakeAccountInitializedEvent\n> {\n return combineCodec(\n getStakeAccountInitializedEventEncoder(),\n getStakeAccountInitializedEventDecoder()\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StakedEvent = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n stakeEncryptedOption: Array<number>;\n stakeStateNonce: bigint;\n stakeEncryptedOptionDisclosure: Array<number>;\n stakeStateDisclosureNonce: bigint;\n amount: bigint;\n timestamp: bigint;\n};\n\nexport type StakedEventArgs = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n stakeEncryptedOption: Array<number>;\n stakeStateNonce: number | bigint;\n stakeEncryptedOptionDisclosure: Array<number>;\n stakeStateDisclosureNonce: number | bigint;\n amount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getStakedEventEncoder(): FixedSizeEncoder<StakedEventArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['stakeEncryptedOption', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['stakeStateNonce', getU128Encoder()],\n [\n 'stakeEncryptedOptionDisclosure',\n getArrayEncoder(getU8Encoder(), { size: 32 }),\n ],\n ['stakeStateDisclosureNonce', getU128Encoder()],\n ['amount', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakedEventDecoder(): FixedSizeDecoder<StakedEvent> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['stakeAccountId', getU32Decoder()],\n ['stakeEncryptedOption', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['stakeStateNonce', getU128Decoder()],\n [\n 'stakeEncryptedOptionDisclosure',\n getArrayDecoder(getU8Decoder(), { size: 32 }),\n ],\n ['stakeStateDisclosureNonce', getU128Decoder()],\n ['amount', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakedEventCodec(): FixedSizeCodec<\n StakedEventArgs,\n StakedEvent\n> {\n return combineCodec(getStakedEventEncoder(), getStakedEventDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\nimport {\n getStakeOutputStruct0Decoder,\n getStakeOutputStruct0Encoder,\n type StakeOutputStruct0,\n type StakeOutputStruct0Args,\n} from '.';\n\n/**\n * The output of the callback instruction. Provided as a struct with ordered fields\n * as anchor does not support tuples and tuple structs yet.\n */\nexport type StakeOutput = { field0: StakeOutputStruct0 };\n\nexport type StakeOutputArgs = { field0: StakeOutputStruct0Args };\n\nexport function getStakeOutputEncoder(): FixedSizeEncoder<StakeOutputArgs> {\n return getStructEncoder([['field0', getStakeOutputStruct0Encoder()]]);\n}\n\nexport function getStakeOutputDecoder(): FixedSizeDecoder<StakeOutput> {\n return getStructDecoder([['field0', getStakeOutputStruct0Decoder()]]);\n}\n\nexport function getStakeOutputCodec(): FixedSizeCodec<\n StakeOutputArgs,\n StakeOutput\n> {\n return combineCodec(getStakeOutputEncoder(), getStakeOutputDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getArrayDecoder,\n getArrayEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU8Decoder,\n getU8Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StakeOutputStruct0 = {\n field0: {\n encryptionKey: Array<number>;\n nonce: bigint;\n ciphertexts: Array<Array<number>>;\n };\n field1: {\n encryptionKey: Array<number>;\n nonce: bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport type StakeOutputStruct0Args = {\n field0: {\n encryptionKey: Array<number>;\n nonce: number | bigint;\n ciphertexts: Array<Array<number>>;\n };\n field1: {\n encryptionKey: Array<number>;\n nonce: number | bigint;\n ciphertexts: Array<Array<number>>;\n };\n};\n\nexport function getStakeOutputStruct0Encoder(): FixedSizeEncoder<StakeOutputStruct0Args> {\n return getStructEncoder([\n [\n 'field0',\n getStructEncoder([\n ['encryptionKey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['nonce', getU128Encoder()],\n [\n 'ciphertexts',\n getArrayEncoder(getArrayEncoder(getU8Encoder(), { size: 32 }), {\n size: 1,\n }),\n ],\n ]),\n ],\n [\n 'field1',\n getStructEncoder([\n ['encryptionKey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['nonce', getU128Encoder()],\n [\n 'ciphertexts',\n getArrayEncoder(getArrayEncoder(getU8Encoder(), { size: 32 }), {\n size: 1,\n }),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getStakeOutputStruct0Decoder(): FixedSizeDecoder<StakeOutputStruct0> {\n return getStructDecoder([\n [\n 'field0',\n getStructDecoder([\n ['encryptionKey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['nonce', getU128Decoder()],\n [\n 'ciphertexts',\n getArrayDecoder(getArrayDecoder(getU8Decoder(), { size: 32 }), {\n size: 1,\n }),\n ],\n ]),\n ],\n [\n 'field1',\n getStructDecoder([\n ['encryptionKey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['nonce', getU128Decoder()],\n [\n 'ciphertexts',\n getArrayDecoder(getArrayDecoder(getU8Decoder(), { size: 32 }), {\n size: 1,\n }),\n ],\n ]),\n ],\n ]);\n}\n\nexport function getStakeOutputStruct0Codec(): FixedSizeCodec<\n StakeOutputStruct0Args,\n StakeOutputStruct0\n> {\n return combineCodec(\n getStakeOutputStruct0Encoder(),\n getStakeOutputStruct0Decoder()\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StakeReclaimedEvent = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n amount: bigint;\n timestamp: bigint;\n};\n\nexport type StakeReclaimedEventArgs = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\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 ['stakeAccountId', getU32Encoder()],\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 ['stakeAccountId', getU32Decoder()],\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 getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StakeRevealedEvent = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n stakeAmount: bigint;\n selectedOption: bigint;\n timestamp: bigint;\n};\n\nexport type StakeRevealedEventArgs = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n stakeAmount: number | bigint;\n selectedOption: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getStakeRevealedEventEncoder(): FixedSizeEncoder<StakeRevealedEventArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['stakeAmount', getU64Encoder()],\n ['selectedOption', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStakeRevealedEventDecoder(): FixedSizeDecoder<StakeRevealedEvent> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['stakeAccountId', getU32Decoder()],\n ['stakeAmount', getU64Decoder()],\n ['selectedOption', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStakeRevealedEventCodec(): FixedSizeCodec<\n StakeRevealedEventArgs,\n StakeRevealedEvent\n> {\n return combineCodec(\n getStakeRevealedEventEncoder(),\n getStakeRevealedEventDecoder()\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type StuckStakeClosedEvent = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n refundedAmount: bigint;\n refundedFee: bigint;\n timestamp: bigint;\n};\n\nexport type StuckStakeClosedEventArgs = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n refundedAmount: number | bigint;\n refundedFee: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getStuckStakeClosedEventEncoder(): FixedSizeEncoder<StuckStakeClosedEventArgs> {\n return getStructEncoder([\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['refundedAmount', getU64Encoder()],\n ['refundedFee', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getStuckStakeClosedEventDecoder(): FixedSizeDecoder<StuckStakeClosedEvent> {\n return getStructDecoder([\n ['owner', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['stakeAccountId', getU32Decoder()],\n ['refundedAmount', getU64Decoder()],\n ['refundedFee', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getStuckStakeClosedEventCodec(): FixedSizeCodec<\n StuckStakeClosedEventArgs,\n StuckStakeClosedEvent\n> {\n return combineCodec(\n getStuckStakeClosedEventEncoder(),\n getStuckStakeClosedEventDecoder()\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type TallyIncrementedEvent = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n optionId: bigint;\n userStake: bigint;\n userScore: bigint;\n totalScore: bigint;\n totalStake: bigint;\n timestamp: bigint;\n};\n\nexport type TallyIncrementedEventArgs = {\n owner: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n optionId: number | bigint;\n userStake: number | bigint;\n userScore: number | bigint;\n totalScore: number | bigint;\n totalStake: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getTallyIncrementedEventEncoder(): FixedSizeEncoder<TallyIncrementedEventArgs> {\n return getStructEncoder([\n ['owner', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['optionId', getU64Encoder()],\n ['userStake', getU64Encoder()],\n ['userScore', getU64Encoder()],\n ['totalScore', getU64Encoder()],\n ['totalStake', 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 ['stakeAccountId', getU32Decoder()],\n ['optionId', getU64Decoder()],\n ['userStake', getU64Decoder()],\n ['userScore', getU64Decoder()],\n ['totalScore', getU64Decoder()],\n ['totalStake', 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 getU32Decoder,\n getU32Encoder,\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 stakeAccountId: number;\n timestamp: bigint;\n};\n\nexport type UnstakedEventArgs = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n timestamp: number | bigint;\n};\n\nexport function getUnstakedEventEncoder(): FixedSizeEncoder<UnstakedEventArgs> {\n return getStructEncoder([\n ['user', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['stakeAccount', getAddressEncoder()],\n ['stakeAccountId', getU32Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getUnstakedEventDecoder(): FixedSizeDecoder<UnstakedEvent> {\n return getStructDecoder([\n ['user', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['stakeAccount', getAddressDecoder()],\n ['stakeAccountId', getU32Decoder()],\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 getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type UnstakeInitiatedEvent = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\n unstakeableAtTimestamp: bigint;\n timestamp: bigint;\n};\n\nexport type UnstakeInitiatedEventArgs = {\n user: Address;\n market: Address;\n stakeAccount: Address;\n stakeAccountId: number;\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 ['stakeAccountId', getU32Encoder()],\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 ['stakeAccountId', getU32Decoder()],\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: Address;\n revealPeriodAuthority: 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 | 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: Address;\n revealPeriodAuthority: 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', getU64Encoder()],\n ['openTimestamp', getOptionEncoder(getU64Encoder())],\n ['timeToStake', getU64Encoder()],\n ['timeToReveal', getU64Encoder()],\n [\n 'selectedOptions',\n getOptionEncoder(getArrayEncoder(getWinningOptionEncoder())),\n ],\n ['rewardAmount', getU64Encoder()],\n ['marketAuthority', getAddressEncoder()],\n ['revealPeriodAuthority', 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', getU64Decoder()],\n ['openTimestamp', getOptionDecoder(getU64Decoder())],\n ['timeToStake', getU64Decoder()],\n ['timeToReveal', getU64Decoder()],\n [\n 'selectedOptions',\n getOptionDecoder(getArrayDecoder(getWinningOptionDecoder())),\n ],\n ['rewardAmount', getU64Decoder()],\n ['marketAuthority', getAddressDecoder()],\n ['revealPeriodAuthority', 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 assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type EncodedAccount,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const OPPORTUNITY_MARKET_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 totalStaked: bigint;\n totalScore: bigint;\n};\n\nexport type OpportunityMarketOptionArgs = {\n bump: number;\n id: number | bigint;\n totalStaked: number | bigint;\n totalScore: number | bigint;\n};\n\nexport function getOpportunityMarketOptionEncoder(): FixedSizeEncoder<OpportunityMarketOptionArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['id', getU64Encoder()],\n ['totalStaked', getU64Encoder()],\n ['totalScore', getU64Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: OPPORTUNITY_MARKET_OPTION_DISCRIMINATOR,\n })\n );\n}\n\nexport function getOpportunityMarketOptionDecoder(): FixedSizeDecoder<OpportunityMarketOption> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ['id', getU64Decoder()],\n ['totalStaked', getU64Decoder()],\n ['totalScore', getU64Decoder()],\n ]);\n}\n\nexport function getOpportunityMarketOptionCodec(): FixedSizeCodec<\n OpportunityMarketOptionArgs,\n OpportunityMarketOption\n> {\n return combineCodec(\n getOpportunityMarketOptionEncoder(),\n getOpportunityMarketOptionDecoder()\n );\n}\n\nexport function decodeOpportunityMarketOption<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<OpportunityMarketOption, TAddress>;\nexport function decodeOpportunityMarketOption<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<OpportunityMarketOption, TAddress>;\nexport function decodeOpportunityMarketOption<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n | Account<OpportunityMarketOption, TAddress>\n | MaybeAccount<OpportunityMarketOption, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getOpportunityMarketOptionDecoder()\n );\n}\n\nexport async function fetchOpportunityMarketOption<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<OpportunityMarketOption, TAddress>> {\n const maybeAccount = await fetchMaybeOpportunityMarketOption(\n rpc,\n address,\n config\n );\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeOpportunityMarketOption<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<OpportunityMarketOption, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeOpportunityMarketOption(maybeAccount);\n}\n\nexport async function fetchAllOpportunityMarketOption(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<OpportunityMarketOption>[]> {\n const maybeAccounts = await fetchAllMaybeOpportunityMarketOption(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeOpportunityMarketOption(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<OpportunityMarketOption>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeOpportunityMarketOption(maybeAccount)\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type EncodedAccount,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const OPPORTUNITY_MARKET_SPONSOR_DISCRIMINATOR = new Uint8Array([\n 207, 139, 192, 91, 37, 190, 2, 192,\n]);\n\nexport function getOpportunityMarketSponsorDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n OPPORTUNITY_MARKET_SPONSOR_DISCRIMINATOR\n );\n}\n\nexport type OpportunityMarketSponsor = {\n discriminator: ReadonlyUint8Array;\n bump: number;\n sponsor: Address;\n market: Address;\n rewardDeposited: bigint;\n rewardLocked: boolean;\n};\n\nexport type OpportunityMarketSponsorArgs = {\n bump: number;\n sponsor: Address;\n market: Address;\n rewardDeposited: number | bigint;\n rewardLocked: boolean;\n};\n\nexport function getOpportunityMarketSponsorEncoder(): FixedSizeEncoder<OpportunityMarketSponsorArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['sponsor', getAddressEncoder()],\n ['market', getAddressEncoder()],\n ['rewardDeposited', getU64Encoder()],\n ['rewardLocked', getBooleanEncoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: OPPORTUNITY_MARKET_SPONSOR_DISCRIMINATOR,\n })\n );\n}\n\nexport function getOpportunityMarketSponsorDecoder(): FixedSizeDecoder<OpportunityMarketSponsor> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['bump', getU8Decoder()],\n ['sponsor', getAddressDecoder()],\n ['market', getAddressDecoder()],\n ['rewardDeposited', getU64Decoder()],\n ['rewardLocked', getBooleanDecoder()],\n ]);\n}\n\nexport function getOpportunityMarketSponsorCodec(): FixedSizeCodec<\n OpportunityMarketSponsorArgs,\n OpportunityMarketSponsor\n> {\n return combineCodec(\n getOpportunityMarketSponsorEncoder(),\n getOpportunityMarketSponsorDecoder()\n );\n}\n\nexport function decodeOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<OpportunityMarketSponsor, TAddress>;\nexport function decodeOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<OpportunityMarketSponsor, TAddress>;\nexport function decodeOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n | Account<OpportunityMarketSponsor, TAddress>\n | MaybeAccount<OpportunityMarketSponsor, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getOpportunityMarketSponsorDecoder()\n );\n}\n\nexport async function fetchOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<OpportunityMarketSponsor, TAddress>> {\n const maybeAccount = await fetchMaybeOpportunityMarketSponsor(\n rpc,\n address,\n config\n );\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeOpportunityMarketSponsor<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<OpportunityMarketSponsor, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeOpportunityMarketSponsor(maybeAccount);\n}\n\nexport async function fetchAllOpportunityMarketSponsor(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<OpportunityMarketSponsor>[]> {\n const maybeAccounts = await fetchAllMaybeOpportunityMarketSponsor(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeOpportunityMarketSponsor(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<OpportunityMarketSponsor>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeOpportunityMarketSponsor(maybeAccount)\n );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type Option,\n type OptionOrNullable,\n type ReadonlyUint8Array,\n} from '@solana/kit';\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 fee: bigint;\n revealedOption: Option<bigint>;\n score: Option<bigint>;\n totalIncremented: boolean;\n unstakeableAtTimestamp: Option<bigint>;\n locked: boolean;\n stakeReclaimed: boolean;\n pendingStake: boolean;\n pendingReveal: boolean;\n id: number;\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 fee: 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 pendingStake: boolean;\n pendingReveal: boolean;\n id: number;\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 ['fee', getU64Encoder()],\n ['revealedOption', getOptionEncoder(getU64Encoder())],\n ['score', getOptionEncoder(getU64Encoder())],\n ['totalIncremented', getBooleanEncoder()],\n ['unstakeableAtTimestamp', getOptionEncoder(getU64Encoder())],\n ['locked', getBooleanEncoder()],\n ['stakeReclaimed', getBooleanEncoder()],\n ['pendingStake', getBooleanEncoder()],\n ['pendingReveal', getBooleanEncoder()],\n ['id', getU32Encoder()],\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 ['fee', getU64Decoder()],\n ['revealedOption', getOptionDecoder(getU64Decoder())],\n ['score', getOptionDecoder(getU64Decoder())],\n ['totalIncremented', getBooleanDecoder()],\n ['unstakeableAtTimestamp', getOptionDecoder(getU64Decoder())],\n ['locked', getBooleanDecoder()],\n ['stakeReclaimed', getBooleanDecoder()],\n ['pendingStake', getBooleanDecoder()],\n ['pendingReveal', getBooleanDecoder()],\n ['id', getU32Decoder()],\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 getArrayDecoder,\n getArrayEncoder,\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 mint: Address;\n collectedFees: bigint;\n protocolFeeBp: number;\n /** Reserved for future use */\n reserved: Array<number>;\n};\n\nexport type TokenVaultArgs = {\n bump: number;\n mint: Address;\n collectedFees: number | bigint;\n protocolFeeBp: number;\n /** Reserved for future use */\n reserved: Array<number>;\n};\n\nexport function getTokenVaultEncoder(): FixedSizeEncoder<TokenVaultArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['bump', getU8Encoder()],\n ['mint', getAddressEncoder()],\n ['collectedFees', getU64Encoder()],\n ['protocolFeeBp', getU16Encoder()],\n ['reserved', getArrayEncoder(getU8Encoder(), { size: 128 })],\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 ['mint', getAddressDecoder()],\n ['collectedFees', getU64Decoder()],\n ['protocolFeeBp', getU16Decoder()],\n ['reserved', getArrayDecoder(getU8Decoder(), { size: 128 })],\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/** AlreadyStaked: Already staked for this stake account */\nexport const OPPORTUNITY_MARKET_ERROR__ALREADY_STAKED = 0x1783; // 6019\n/** DepositBelowMinimum: Deposit amount below minimum required for option creation */\nexport const OPPORTUNITY_MARKET_ERROR__DEPOSIT_BELOW_MINIMUM = 0x1784; // 6020\n/** AddOptionStakeFailed: Add option stake failed: insufficient balance or below minimum deposit */\nexport const OPPORTUNITY_MARKET_ERROR__ADD_OPTION_STAKE_FAILED = 0x1785; // 6021\n/** Locked: Account is locked */\nexport const OPPORTUNITY_MARKET_ERROR__LOCKED = 0x1786; // 6022\n/** InvalidAccountState: Invalid account state */\nexport const OPPORTUNITY_MARKET_ERROR__INVALID_ACCOUNT_STATE = 0x1787; // 6023\n/** 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/** StakeNotStuck: Stake account is not in a stuck or failed state */\nexport const OPPORTUNITY_MARKET_ERROR__STAKE_NOT_STUCK = 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_REVEALED\n | typeof OPPORTUNITY_MARKET_ERROR__ALREADY_STAKED\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__STAKE_NOT_STUCK\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_REVEALED]: `Stake already revealed`,\n [OPPORTUNITY_MARKET_ERROR__ALREADY_STAKED]: `Already staked for this stake account`,\n [OPPORTUNITY_MARKET_ERROR__ALREADY_UNSTAKED]: `Already unstaked`,\n [OPPORTUNITY_MARKET_ERROR__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__STAKE_NOT_STUCK]: `Stake account is not in a stuck or failed state`,\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 ParsedAddRewardInstruction,\n type ParsedClaimFeesInstruction,\n type ParsedCloseStakeAccountInstruction,\n type ParsedCloseStuckStakeAccountInstruction,\n type ParsedCreateMarketInstruction,\n type ParsedDoUnstakeEarlyInstruction,\n type ParsedEndRevealPeriodInstruction,\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 OpportunityMarketSponsor,\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([207, 139, 192, 91, 37, 190, 2, 192])\n ),\n 0\n )\n ) {\n return OpportunityMarketAccount.OpportunityMarketSponsor;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([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 AddReward,\n ClaimFees,\n CloseStakeAccount,\n CloseStuckStakeAccount,\n CreateMarket,\n DoUnstakeEarly,\n EndRevealPeriod,\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([4, 114, 188, 164, 149, 249, 198, 237])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.AddReward;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([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([41, 239, 108, 203, 185, 230, 165, 181])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.CloseStuckStakeAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([103, 226, 97, 235, 200, 188, 251, 254])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.CreateMarket;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([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([144, 81, 42, 65, 127, 60, 134, 92])\n ),\n 0\n )\n ) {\n return OpportunityMarketInstruction.EndRevealPeriod;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([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.AddReward;\n } & ParsedAddRewardInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.ClaimFees;\n } & ParsedClaimFeesInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CloseStakeAccount;\n } & ParsedCloseStakeAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CloseStuckStakeAccount;\n } & ParsedCloseStuckStakeAccountInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.CreateMarket;\n } & ParsedCreateMarketInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.DoUnstakeEarly;\n } & ParsedDoUnstakeEarlyInstruction<TProgram>)\n | ({\n instructionType: OpportunityMarketInstruction.EndRevealPeriod;\n } & ParsedEndRevealPeriodInstruction<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 getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const ADD_REWARD_DISCRIMINATOR = new Uint8Array([\n 4, 114, 188, 164, 149, 249, 198, 237,\n]);\n\nexport function getAddRewardDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(ADD_REWARD_DISCRIMINATOR);\n}\n\nexport type AddRewardInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSponsor extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountSponsorAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountSponsorTokenAccount extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TAccountSystemProgram extends string | AccountMeta<string> =\n '11111111111111111111111111111111',\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSponsor extends string\n ? WritableSignerAccount<TAccountSponsor> &\n AccountSignerMeta<TAccountSponsor>\n : TAccountSponsor,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountSponsorAccount extends string\n ? WritableAccount<TAccountSponsorAccount>\n : TAccountSponsorAccount,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountSponsorTokenAccount extends string\n ? WritableAccount<TAccountSponsorTokenAccount>\n : TAccountSponsorTokenAccount,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type AddRewardInstructionData = {\n discriminator: ReadonlyUint8Array;\n amount: bigint;\n lock: boolean;\n};\n\nexport type AddRewardInstructionDataArgs = {\n amount: number | bigint;\n lock: boolean;\n};\n\nexport function getAddRewardInstructionDataEncoder(): FixedSizeEncoder<AddRewardInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['amount', getU64Encoder()],\n ['lock', getBooleanEncoder()],\n ]),\n (value) => ({ ...value, discriminator: ADD_REWARD_DISCRIMINATOR })\n );\n}\n\nexport function getAddRewardInstructionDataDecoder(): FixedSizeDecoder<AddRewardInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['amount', getU64Decoder()],\n ['lock', getBooleanDecoder()],\n ]);\n}\n\nexport function getAddRewardInstructionDataCodec(): FixedSizeCodec<\n AddRewardInstructionDataArgs,\n AddRewardInstructionData\n> {\n return combineCodec(\n getAddRewardInstructionDataEncoder(),\n getAddRewardInstructionDataDecoder()\n );\n}\n\nexport type AddRewardAsyncInput<\n TAccountSponsor extends string = string,\n TAccountMarket extends string = string,\n TAccountSponsorAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSponsorTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n sponsor: TransactionSigner<TAccountSponsor>;\n market: Address<TAccountMarket>;\n sponsorAccount?: Address<TAccountSponsorAccount>;\n tokenMint: Address<TAccountTokenMint>;\n sponsorTokenAccount: Address<TAccountSponsorTokenAccount>;\n /** Market's ATA holding reward tokens */\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n amount: AddRewardInstructionDataArgs['amount'];\n lock: AddRewardInstructionDataArgs['lock'];\n};\n\nexport async function getAddRewardInstructionAsync<\n TAccountSponsor extends string,\n TAccountMarket extends string,\n TAccountSponsorAccount extends string,\n TAccountTokenMint extends string,\n TAccountSponsorTokenAccount extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: AddRewardAsyncInput<\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n AddRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sponsor: { value: input.sponsor ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n sponsorAccount: { value: input.sponsorAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n sponsorTokenAccount: {\n value: input.sponsorTokenAccount ?? null,\n isWritable: true,\n },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.sponsorAccount.value) {\n accounts.sponsorAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([115, 112, 111, 110, 115, 111, 114])\n ),\n getAddressEncoder().encode(expectAddress(accounts.sponsor.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n ],\n });\n }\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.sponsor),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.sponsorAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.sponsorTokenAccount),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getAddRewardInstructionDataEncoder().encode(\n args as AddRewardInstructionDataArgs\n ),\n programAddress,\n } as AddRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type AddRewardInput<\n TAccountSponsor extends string = string,\n TAccountMarket extends string = string,\n TAccountSponsorAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSponsorTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n sponsor: TransactionSigner<TAccountSponsor>;\n market: Address<TAccountMarket>;\n sponsorAccount: Address<TAccountSponsorAccount>;\n tokenMint: Address<TAccountTokenMint>;\n sponsorTokenAccount: Address<TAccountSponsorTokenAccount>;\n /** Market's ATA holding reward tokens */\n marketTokenAta: Address<TAccountMarketTokenAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n amount: AddRewardInstructionDataArgs['amount'];\n lock: AddRewardInstructionDataArgs['lock'];\n};\n\nexport function getAddRewardInstruction<\n TAccountSponsor extends string,\n TAccountMarket extends string,\n TAccountSponsorAccount extends string,\n TAccountTokenMint extends string,\n TAccountSponsorTokenAccount extends string,\n TAccountMarketTokenAta extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: AddRewardInput<\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): AddRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sponsor: { value: input.sponsor ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n sponsorAccount: { value: input.sponsorAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n sponsorTokenAccount: {\n value: input.sponsorTokenAccount ?? null,\n isWritable: true,\n },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.sponsor),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.sponsorAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.sponsorTokenAccount),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getAddRewardInstructionDataEncoder().encode(\n args as AddRewardInstructionDataArgs\n ),\n programAddress,\n } as AddRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountSponsorTokenAccount,\n TAccountMarketTokenAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedAddRewardInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n sponsor: TAccountMetas[0];\n market: TAccountMetas[1];\n sponsorAccount: TAccountMetas[2];\n tokenMint: TAccountMetas[3];\n sponsorTokenAccount: TAccountMetas[4];\n /** Market's ATA holding reward tokens */\n marketTokenAta: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n systemProgram: TAccountMetas[7];\n };\n data: AddRewardInstructionData;\n};\n\nexport function parseAddRewardInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedAddRewardInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 8) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n sponsor: getNextAccount(),\n market: getNextAccount(),\n sponsorAccount: getNextAccount(),\n tokenMint: getNextAccount(),\n sponsorTokenAccount: getNextAccount(),\n marketTokenAta: getNextAccount(),\n tokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getAddRewardInstructionDataDecoder().decode(instruction.data),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CLAIM_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 getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const CLOSE_STUCK_STAKE_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 41, 239, 108, 203, 185, 230, 165, 181,\n]);\n\nexport function getCloseStuckStakeAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLOSE_STUCK_STAKE_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type CloseStuckStakeAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSigner extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta 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 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 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 TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CloseStuckStakeAccountInstructionData = {\n discriminator: ReadonlyUint8Array;\n stakeAccountId: number;\n};\n\nexport type CloseStuckStakeAccountInstructionDataArgs = {\n stakeAccountId: number;\n};\n\nexport function getCloseStuckStakeAccountInstructionDataEncoder(): FixedSizeEncoder<CloseStuckStakeAccountInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['stakeAccountId', getU32Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: CLOSE_STUCK_STAKE_ACCOUNT_DISCRIMINATOR,\n })\n );\n}\n\nexport function getCloseStuckStakeAccountInstructionDataDecoder(): FixedSizeDecoder<CloseStuckStakeAccountInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['stakeAccountId', getU32Decoder()],\n ]);\n}\n\nexport function getCloseStuckStakeAccountInstructionDataCodec(): FixedSizeCodec<\n CloseStuckStakeAccountInstructionDataArgs,\n CloseStuckStakeAccountInstructionData\n> {\n return combineCodec(\n getCloseStuckStakeAccountInstructionDataEncoder(),\n getCloseStuckStakeAccountInstructionDataDecoder()\n );\n}\n\nexport type CloseStuckStakeAccountAsyncInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountTokenVault extends string = string,\n TAccountTokenVaultAta 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 /** Signer's token account to receive refund */\n signerTokenAccount: Address<TAccountSignerTokenAccount>;\n tokenVault?: Address<TAccountTokenVault>;\n /** Token vault ATA holding fee tokens */\n tokenVaultAta?: Address<TAccountTokenVaultAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n stakeAccountId: CloseStuckStakeAccountInstructionDataArgs['stakeAccountId'];\n};\n\nexport async function getCloseStuckStakeAccountInstructionAsync<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountSignerTokenAccount extends string,\n TAccountTokenVault extends string,\n TAccountTokenVaultAta extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseStuckStakeAccountAsyncInput<\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountSignerTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CloseStuckStakeAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountSignerTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\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 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 tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.stakeAccount.value) {\n accounts.stakeAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 115, 116, 97, 107, 101, 95, 97, 99, 99, 111, 117, 110, 116,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.signer.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getU32Encoder().encode(expectSome(args.stakeAccountId)),\n ],\n });\n }\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n if (!accounts.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.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.signerTokenAccount),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.tokenVaultAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCloseStuckStakeAccountInstructionDataEncoder().encode(\n args as CloseStuckStakeAccountInstructionDataArgs\n ),\n programAddress,\n } as CloseStuckStakeAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountSignerTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type CloseStuckStakeAccountInput<\n TAccountSigner extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountTokenVault extends string = string,\n TAccountTokenVaultAta 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 /** Signer's token account to receive refund */\n signerTokenAccount: Address<TAccountSignerTokenAccount>;\n tokenVault: Address<TAccountTokenVault>;\n /** Token vault ATA holding fee tokens */\n tokenVaultAta: Address<TAccountTokenVaultAta>;\n tokenProgram: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n stakeAccountId: CloseStuckStakeAccountInstructionDataArgs['stakeAccountId'];\n};\n\nexport function getCloseStuckStakeAccountInstruction<\n TAccountSigner extends string,\n TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountSignerTokenAccount extends string,\n TAccountTokenVault extends string,\n TAccountTokenVaultAta extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: CloseStuckStakeAccountInput<\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountSignerTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CloseStuckStakeAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountSignerTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\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 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 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.signerTokenAccount),\n getAccountMeta(accounts.tokenVault),\n getAccountMeta(accounts.tokenVaultAta),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCloseStuckStakeAccountInstructionDataEncoder().encode(\n args as CloseStuckStakeAccountInstructionDataArgs\n ),\n programAddress,\n } as CloseStuckStakeAccountInstruction<\n TProgramAddress,\n TAccountSigner,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountSignerTokenAccount,\n TAccountTokenVault,\n TAccountTokenVaultAta,\n TAccountTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCloseStuckStakeAccountInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n signer: TAccountMetas[0];\n market: TAccountMetas[1];\n stakeAccount: TAccountMetas[2];\n tokenMint: TAccountMetas[3];\n /** Market's ATA holding staked tokens */\n marketTokenAta: TAccountMetas[4];\n /** Signer's token account to receive refund */\n signerTokenAccount: TAccountMetas[5];\n tokenVault: TAccountMetas[6];\n /** Token vault ATA holding fee tokens */\n tokenVaultAta: TAccountMetas[7];\n tokenProgram: TAccountMetas[8];\n systemProgram: TAccountMetas[9];\n };\n data: CloseStuckStakeAccountInstructionData;\n};\n\nexport function parseCloseStuckStakeAccountInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedCloseStuckStakeAccountInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 10) {\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 signerTokenAccount: getNextAccount(),\n tokenVault: getNextAccount(),\n tokenVaultAta: getNextAccount(),\n tokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCloseStuckStakeAccountInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getBytesDecoder,\n getBytesEncoder,\n 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 timeToStake: bigint;\n timeToReveal: bigint;\n marketAuthority: Option<Address>;\n unstakeDelaySeconds: bigint;\n authorizedReaderPubkey: Array<number>;\n allowClosingEarly: boolean;\n revealPeriodAuthority: Address;\n};\n\nexport type CreateMarketInstructionDataArgs = {\n marketIndex: 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 revealPeriodAuthority: Address;\n};\n\nexport function getCreateMarketInstructionDataEncoder(): Encoder<CreateMarketInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['marketIndex', getU64Encoder()],\n ['timeToStake', getU64Encoder()],\n ['timeToReveal', getU64Encoder()],\n ['marketAuthority', getOptionEncoder(getAddressEncoder())],\n ['unstakeDelaySeconds', getU64Encoder()],\n ['authorizedReaderPubkey', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['allowClosingEarly', getBooleanEncoder()],\n ['revealPeriodAuthority', getAddressEncoder()],\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 ['timeToStake', getU64Decoder()],\n ['timeToReveal', getU64Decoder()],\n ['marketAuthority', getOptionDecoder(getAddressDecoder())],\n ['unstakeDelaySeconds', getU64Decoder()],\n ['authorizedReaderPubkey', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['allowClosingEarly', getBooleanDecoder()],\n ['revealPeriodAuthority', getAddressDecoder()],\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 timeToStake: CreateMarketInstructionDataArgs['timeToStake'];\n timeToReveal: CreateMarketInstructionDataArgs['timeToReveal'];\n marketAuthority: CreateMarketInstructionDataArgs['marketAuthority'];\n unstakeDelaySeconds: CreateMarketInstructionDataArgs['unstakeDelaySeconds'];\n authorizedReaderPubkey: CreateMarketInstructionDataArgs['authorizedReaderPubkey'];\n allowClosingEarly: CreateMarketInstructionDataArgs['allowClosingEarly'];\n revealPeriodAuthority: CreateMarketInstructionDataArgs['revealPeriodAuthority'];\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 timeToStake: CreateMarketInstructionDataArgs['timeToStake'];\n timeToReveal: CreateMarketInstructionDataArgs['timeToReveal'];\n marketAuthority: CreateMarketInstructionDataArgs['marketAuthority'];\n unstakeDelaySeconds: CreateMarketInstructionDataArgs['unstakeDelaySeconds'];\n authorizedReaderPubkey: CreateMarketInstructionDataArgs['authorizedReaderPubkey'];\n allowClosingEarly: CreateMarketInstructionDataArgs['allowClosingEarly'];\n revealPeriodAuthority: CreateMarketInstructionDataArgs['revealPeriodAuthority'];\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 transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const END_REVEAL_PERIOD_DISCRIMINATOR = new Uint8Array([\n 144, 81, 42, 65, 127, 60, 134, 92,\n]);\n\nexport function getEndRevealPeriodDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n END_REVEAL_PERIOD_DISCRIMINATOR\n );\n}\n\nexport type EndRevealPeriodInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n 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 EndRevealPeriodInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type EndRevealPeriodInstructionDataArgs = {};\n\nexport function getEndRevealPeriodInstructionDataEncoder(): FixedSizeEncoder<EndRevealPeriodInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: END_REVEAL_PERIOD_DISCRIMINATOR })\n );\n}\n\nexport function getEndRevealPeriodInstructionDataDecoder(): FixedSizeDecoder<EndRevealPeriodInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getEndRevealPeriodInstructionDataCodec(): FixedSizeCodec<\n EndRevealPeriodInstructionDataArgs,\n EndRevealPeriodInstructionData\n> {\n return combineCodec(\n getEndRevealPeriodInstructionDataEncoder(),\n getEndRevealPeriodInstructionDataDecoder()\n );\n}\n\nexport type EndRevealPeriodInput<\n TAccountAuthority extends string = string,\n TAccountMarket extends string = string,\n> = {\n authority: TransactionSigner<TAccountAuthority>;\n market: Address<TAccountMarket>;\n};\n\nexport function getEndRevealPeriodInstruction<\n TAccountAuthority extends string,\n TAccountMarket extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: EndRevealPeriodInput<TAccountAuthority, TAccountMarket>,\n config?: { programAddress?: TProgramAddress }\n): EndRevealPeriodInstruction<\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 const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.market),\n ],\n data: getEndRevealPeriodInstructionDataEncoder().encode({}),\n programAddress,\n } as EndRevealPeriodInstruction<\n TProgramAddress,\n TAccountAuthority,\n TAccountMarket\n >);\n}\n\nexport type ParsedEndRevealPeriodInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n authority: TAccountMetas[0];\n market: TAccountMetas[1];\n };\n data: EndRevealPeriodInstructionData;\n};\n\nexport function parseEndRevealPeriodInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedEndRevealPeriodInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 2) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: { authority: getNextAccount(), market: getNextAccount() },\n data: getEndRevealPeriodInstructionDataDecoder().decode(instruction.data),\n };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU32Decoder,\n getU32Encoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n type Instruction,\n type InstructionWithAccounts,\n type InstructionWithData,\n type ReadonlyAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const 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 minimumInitialRevealPeriod: bigint;\n};\n\nexport type InitCentralStateInstructionDataArgs = {\n earlinessCutoffSeconds: number | bigint;\n minOptionDeposit: number | bigint;\n protocolFeeBp: number;\n feeRecipient: Address;\n minimumInitialRevealPeriod: number | bigint;\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 ['minimumInitialRevealPeriod', getU64Encoder()],\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 ['minimumInitialRevealPeriod', getU64Decoder()],\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 minimumInitialRevealPeriod: InitCentralStateInstructionDataArgs['minimumInitialRevealPeriod'];\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 minimumInitialRevealPeriod: InitCentralStateInstructionDataArgs['minimumInitialRevealPeriod'];\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 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};\n\nexport type InitTokenVaultInstructionDataArgs = {};\n\nexport function getInitTokenVaultInstructionDataEncoder(): FixedSizeEncoder<InitTokenVaultInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\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 ]);\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};\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 // 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 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};\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 // 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 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 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 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 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 ...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 OpenMarketInput<\n TAccountCreator extends string = string,\n TAccountMarket extends string = string,\n> = {\n creator: TransactionSigner<TAccountCreator>;\n market: Address<TAccountMarket>;\n openTimestamp: OpenMarketInstructionDataArgs['openTimestamp'];\n};\n\nexport function getOpenMarketInstruction<\n TAccountCreator extends string,\n TAccountMarket extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: OpenMarketInput<TAccountCreator, TAccountMarket>,\n config?: { programAddress?: TProgramAddress }\n): OpenMarketInstruction<TProgramAddress, TAccountCreator, TAccountMarket> {\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 };\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 ],\n data: getOpenMarketInstructionDataEncoder().encode(\n args as OpenMarketInstructionDataArgs\n ),\n programAddress,\n } as OpenMarketInstruction<TProgramAddress, TAccountCreator, TAccountMarket>);\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 };\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 < 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: { creator: getNextAccount(), market: getNextAccount() },\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 ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n 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 TAccountPayer extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountSignerTokenAccount extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n 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 ? ReadonlySignerAccount<TAccountSigner> &\n AccountSignerMeta<TAccountSigner>\n : TAccountSigner,\n TAccountPayer extends string\n ? WritableSignerAccount<TAccountPayer> &\n AccountSignerMeta<TAccountPayer>\n : TAccountPayer,\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 TAccountPayer extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n 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 payer: TransactionSigner<TAccountPayer>;\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 TAccountPayer 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 TAccountPayer,\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 TAccountPayer,\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: false },\n payer: { value: input.payer ?? 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.payer),\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 TAccountPayer,\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 TAccountPayer extends string = string,\n TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountSignerTokenAccount extends string = string,\n TAccountMarketTokenAta extends string = string,\n 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 payer: TransactionSigner<TAccountPayer>;\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 TAccountPayer 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 TAccountPayer,\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 TAccountPayer,\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: false },\n payer: { value: input.payer ?? 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.payer),\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 TAccountPayer,\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 payer: TAccountMetas[1];\n market: TAccountMetas[2];\n stakeAccount: TAccountMetas[3];\n tokenMint: TAccountMetas[4];\n signerTokenAccount: TAccountMetas[5];\n /** Market's ATA for holding staked tokens */\n marketTokenAta: TAccountMetas[6];\n /** Token vault for fee collection */\n tokenVault: TAccountMetas[7];\n /** Token vault ATA for fee tokens */\n tokenVaultAta: TAccountMetas[8];\n tokenProgram: TAccountMetas[9];\n signPdaAccount: TAccountMetas[10];\n mxeAccount: TAccountMetas[11];\n mempoolAccount: TAccountMetas[12];\n executingPool: TAccountMetas[13];\n computationAccount: TAccountMetas[14];\n compDefAccount: TAccountMetas[15];\n clusterAccount: TAccountMetas[16];\n poolAccount: TAccountMetas[17];\n clockAccount: TAccountMetas[18];\n systemProgram: TAccountMetas[19];\n arciumProgram: TAccountMetas[20];\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 < 21) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n signer: getNextAccount(),\n payer: getNextAccount(),\n market: getNextAccount(),\n stakeAccount: getNextAccount(),\n tokenMint: getNextAccount(),\n signerTokenAccount: getNextAccount(),\n marketTokenAta: getNextAccount(),\n 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 TAccountMarket extends string | AccountMeta<string> = string,\n TAccountStakeAccount extends string | AccountMeta<string> = string,\n TAccountTokenVault 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 TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountStakeAccount extends string\n ? WritableAccount<TAccountStakeAccount>\n : TAccountStakeAccount,\n TAccountTokenVault extends string\n ? WritableAccount<TAccountTokenVault>\n : TAccountTokenVault,\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 TAccountMarket extends string = string,\n TAccountStakeAccount extends string = string,\n TAccountTokenVault 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 market: Address<TAccountMarket>;\n stakeAccount: Address<TAccountStakeAccount>;\n tokenVault: Address<TAccountTokenVault>;\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 TAccountMarket extends string,\n TAccountStakeAccount extends string,\n TAccountTokenVault 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 TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenVault\n >,\n config?: { programAddress?: TProgramAddress }\n): StakeCallbackInstruction<\n TProgramAddress,\n TAccountArciumProgram,\n TAccountCompDefAccount,\n TAccountMxeAccount,\n TAccountComputationAccount,\n TAccountClusterAccount,\n TAccountInstructionsSysvar,\n TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenVault\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 market: { value: input.market ?? null, isWritable: true },\n stakeAccount: { value: input.stakeAccount ?? null, isWritable: true },\n tokenVault: { value: input.tokenVault ?? 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.market),\n getAccountMeta(accounts.stakeAccount),\n getAccountMeta(accounts.tokenVault),\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 TAccountMarket,\n TAccountStakeAccount,\n TAccountTokenVault\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 market: TAccountMetas[6];\n stakeAccount: TAccountMetas[7];\n tokenVault: TAccountMetas[8];\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 < 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 market: getNextAccount(),\n stakeAccount: getNextAccount(),\n tokenVault: 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 minimumInitialRevealPeriod: bigint;\n};\n\nexport type UpdateCentralStateInstructionDataArgs = {\n earlinessCutoffSeconds: number | bigint;\n minOptionDeposit: number | bigint;\n protocolFeeBp: number;\n feeRecipient: Address;\n minimumInitialRevealPeriod: number | bigint;\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 ['minimumInitialRevealPeriod', getU64Encoder()],\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 ['minimumInitialRevealPeriod', getU64Decoder()],\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 minimumInitialRevealPeriod: UpdateCentralStateInstructionDataArgs['minimumInitialRevealPeriod'];\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 minimumInitialRevealPeriod: UpdateCentralStateInstructionDataArgs['minimumInitialRevealPeriod'];\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 ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n type WritableSignerAccount,\n} from '@solana/kit';\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from '../programs';\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from '../shared';\n\nexport const WITHDRAW_REWARD_DISCRIMINATOR = new Uint8Array([\n 191, 187, 176, 137, 9, 25, 187, 244,\n]);\n\nexport function getWithdrawRewardDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n WITHDRAW_REWARD_DISCRIMINATOR\n );\n}\n\nexport type WithdrawRewardInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountSponsor extends string | AccountMeta<string> = string,\n TAccountMarket extends string | AccountMeta<string> = string,\n TAccountSponsorAccount extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountMarketTokenAta extends string | AccountMeta<string> = string,\n TAccountRefundTokenAccount extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> = string,\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountSponsor extends string\n ? WritableSignerAccount<TAccountSponsor> &\n AccountSignerMeta<TAccountSponsor>\n : TAccountSponsor,\n TAccountMarket extends string\n ? WritableAccount<TAccountMarket>\n : TAccountMarket,\n TAccountSponsorAccount extends string\n ? WritableAccount<TAccountSponsorAccount>\n : TAccountSponsorAccount,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountMarketTokenAta extends string\n ? WritableAccount<TAccountMarketTokenAta>\n : TAccountMarketTokenAta,\n TAccountRefundTokenAccount extends string\n ? WritableAccount<TAccountRefundTokenAccount>\n : TAccountRefundTokenAccount,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type WithdrawRewardInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type WithdrawRewardInstructionDataArgs = {};\n\nexport function getWithdrawRewardInstructionDataEncoder(): FixedSizeEncoder<WithdrawRewardInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: WITHDRAW_REWARD_DISCRIMINATOR })\n );\n}\n\nexport function getWithdrawRewardInstructionDataDecoder(): FixedSizeDecoder<WithdrawRewardInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getWithdrawRewardInstructionDataCodec(): FixedSizeCodec<\n WithdrawRewardInstructionDataArgs,\n WithdrawRewardInstructionData\n> {\n return combineCodec(\n getWithdrawRewardInstructionDataEncoder(),\n getWithdrawRewardInstructionDataDecoder()\n );\n}\n\nexport type WithdrawRewardAsyncInput<\n TAccountSponsor extends string = string,\n TAccountMarket extends string = string,\n TAccountSponsorAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountRefundTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n sponsor: TransactionSigner<TAccountSponsor>;\n market: Address<TAccountMarket>;\n sponsorAccount?: Address<TAccountSponsorAccount>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market's ATA holding reward tokens */\n marketTokenAta?: Address<TAccountMarketTokenAta>;\n /** Sponsor's destination for refunded reward tokens */\n refundTokenAccount: Address<TAccountRefundTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport async function getWithdrawRewardInstructionAsync<\n TAccountSponsor extends string,\n TAccountMarket extends string,\n TAccountSponsorAccount extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountRefundTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: WithdrawRewardAsyncInput<\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n WithdrawRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sponsor: { value: input.sponsor ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n sponsorAccount: { value: input.sponsorAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n refundTokenAccount: {\n value: input.refundTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.sponsorAccount.value) {\n accounts.sponsorAccount.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([115, 112, 111, 110, 115, 111, 114])\n ),\n getAddressEncoder().encode(expectAddress(accounts.sponsor.value)),\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n ],\n });\n }\n if (!accounts.marketTokenAta.value) {\n accounts.marketTokenAta.value = await getProgramDerivedAddress({\n programAddress:\n 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.market.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n ],\n });\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.sponsor),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.sponsorAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.refundTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getWithdrawRewardInstructionDataEncoder().encode({}),\n programAddress,\n } as WithdrawRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type WithdrawRewardInput<\n TAccountSponsor extends string = string,\n TAccountMarket extends string = string,\n TAccountSponsorAccount extends string = string,\n TAccountTokenMint extends string = string,\n TAccountMarketTokenAta extends string = string,\n TAccountRefundTokenAccount extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n sponsor: TransactionSigner<TAccountSponsor>;\n market: Address<TAccountMarket>;\n sponsorAccount: Address<TAccountSponsorAccount>;\n tokenMint: Address<TAccountTokenMint>;\n /** Market's ATA holding reward tokens */\n marketTokenAta: Address<TAccountMarketTokenAta>;\n /** Sponsor's destination for refunded reward tokens */\n refundTokenAccount: Address<TAccountRefundTokenAccount>;\n tokenProgram: Address<TAccountTokenProgram>;\n};\n\nexport function getWithdrawRewardInstruction<\n TAccountSponsor extends string,\n TAccountMarket extends string,\n TAccountSponsorAccount extends string,\n TAccountTokenMint extends string,\n TAccountMarketTokenAta extends string,\n TAccountRefundTokenAccount extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n>(\n input: WithdrawRewardInput<\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): WithdrawRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n> {\n // Program address.\n const programAddress =\n config?.programAddress ?? OPPORTUNITY_MARKET_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sponsor: { value: input.sponsor ?? null, isWritable: true },\n market: { value: input.market ?? null, isWritable: true },\n sponsorAccount: { value: input.sponsorAccount ?? null, isWritable: true },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n marketTokenAta: { value: input.marketTokenAta ?? null, isWritable: true },\n refundTokenAccount: {\n value: input.refundTokenAccount ?? null,\n isWritable: true,\n },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n return Object.freeze({\n accounts: [\n getAccountMeta(accounts.sponsor),\n getAccountMeta(accounts.market),\n getAccountMeta(accounts.sponsorAccount),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.marketTokenAta),\n getAccountMeta(accounts.refundTokenAccount),\n getAccountMeta(accounts.tokenProgram),\n ],\n data: getWithdrawRewardInstructionDataEncoder().encode({}),\n programAddress,\n } as WithdrawRewardInstruction<\n TProgramAddress,\n TAccountSponsor,\n TAccountMarket,\n TAccountSponsorAccount,\n TAccountTokenMint,\n TAccountMarketTokenAta,\n TAccountRefundTokenAccount,\n TAccountTokenProgram\n >);\n}\n\nexport type ParsedWithdrawRewardInstruction<\n TProgram extends string = typeof OPPORTUNITY_MARKET_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n sponsor: TAccountMetas[0];\n market: TAccountMetas[1];\n sponsorAccount: TAccountMetas[2];\n tokenMint: TAccountMetas[3];\n /** Market's ATA holding reward tokens */\n marketTokenAta: TAccountMetas[4];\n /** Sponsor's destination for refunded reward tokens */\n refundTokenAccount: TAccountMetas[5];\n tokenProgram: TAccountMetas[6];\n };\n data: WithdrawRewardInstructionData;\n};\n\nexport function parseWithdrawRewardInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>\n): ParsedWithdrawRewardInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n sponsor: getNextAccount(),\n market: getNextAccount(),\n sponsorAccount: getNextAccount(),\n tokenMint: getNextAccount(),\n marketTokenAta: getNextAccount(),\n refundTokenAccount: getNextAccount(),\n tokenProgram: getNextAccount(),\n },\n data: getWithdrawRewardInstructionDataDecoder().decode(instruction.data),\n };\n}\n","import { 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 payer: TransactionSigner;\n tokenMint: Address;\n}\n\nexport async function initTokenVault(\n input: InitTokenVaultParams\n): Promise<InitTokenVaultInstruction<string>> {\n const { programAddress, payer, tokenMint } = input;\n\n return getInitTokenVaultInstructionAsync(\n {\n payer,\n tokenMint,\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 timeToStake: bigint;\n timeToReveal: bigint;\n marketAuthority: Address | null;\n unstakeDelaySeconds: bigint;\n authorizedReaderPubkey: ByteArray;\n allowClosingEarly: boolean;\n revealPeriodAuthority: Address;\n}\n\nexport async function createMarket(\n input: CreateMarketParams\n): Promise<CreateMarketInstruction<string>> {\n const {\n creator,\n tokenMint,\n tokenProgram,\n marketIndex,\n timeToReveal,\n timeToStake,\n marketAuthority,\n unstakeDelaySeconds,\n authorizedReaderPubkey,\n allowClosingEarly,\n revealPeriodAuthority,\n programAddress,\n } = input;\n\n return getCreateMarketInstructionAsync(\n {\n creator,\n tokenMint,\n tokenProgram,\n marketIndex,\n timeToStake,\n timeToReveal,\n marketAuthority,\n unstakeDelaySeconds,\n authorizedReaderPubkey: toNumberArray(authorizedReaderPubkey),\n allowClosingEarly,\n revealPeriodAuthority,\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 payer: 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 payer,\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 payer,\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 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 getEndRevealPeriodInstruction,\n type EndRevealPeriodInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface EndRevealPeriodParams extends BaseInstructionParams {\n authority: TransactionSigner;\n market: Address;\n}\n\nexport function endRevealPeriod(\n input: EndRevealPeriodParams\n): EndRevealPeriodInstruction<string> {\n const { programAddress, ...params } = input;\n return getEndRevealPeriodInstruction(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getAddRewardInstructionAsync,\n type AddRewardInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface AddRewardParams extends BaseInstructionParams {\n sponsor: TransactionSigner;\n market: Address;\n tokenMint: Address;\n sponsorTokenAccount: Address;\n tokenProgram: Address;\n amount: bigint;\n lock: boolean;\n}\n\nexport async function addReward(\n input: AddRewardParams\n): Promise<AddRewardInstruction<string>> {\n const { programAddress, ...params } = input;\n return getAddRewardInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n getInitStakeAccountInstructionAsync,\n type InitStakeAccountInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface InitStakeAccountParams extends BaseInstructionParams {\n 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 getCloseStuckStakeAccountInstructionAsync,\n type CloseStuckStakeAccountInstruction,\n} from \"../generated\";\nimport { type BaseInstructionParams } from \"./instructionParams\";\n\nexport interface CloseStuckStakeAccountParams extends BaseInstructionParams {\n signer: TransactionSigner;\n market: Address;\n tokenMint: Address;\n signerTokenAccount: Address;\n tokenProgram: Address;\n stakeAccountId: number;\n}\n\nexport async function closeStuckStakeAccount(\n input: CloseStuckStakeAccountParams\n): Promise<CloseStuckStakeAccountInstruction<string>> {\n const { programAddress, ...params } = input;\n return getCloseStuckStakeAccountInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import { type TransactionSigner, type Address } from \"@solana/kit\";\nimport {\n 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 minimumInitialRevealPeriod: bigint | number;\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 s.minimumInitialRevealPeriod === BigInt(args.minimumInitialRevealPeriod)\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 sponsor: TransactionSigner;\n market: Address;\n tokenMint: Address;\n refundTokenAccount: Address;\n tokenProgram: Address;\n}\n\nexport async function withdrawReward(\n input: WithdrawRewardParams\n): Promise<WithdrawRewardInstruction<string>> {\n const { programAddress, ...params } = input;\n return getWithdrawRewardInstructionAsync(\n params,\n programAddress ? { programAddress } : undefined\n );\n}\n","import {\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 SPONSOR_SEED = \"sponsor\";\n\nexport async function getOpportunityMarketSponsorAddress(\n sponsor: Address,\n market: Address,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n const addressEncoder = getAddressEncoder();\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n SPONSOR_SEED,\n addressEncoder.encode(sponsor),\n addressEncoder.encode(market),\n ],\n });\n}\n","import {\n type Address,\n getAddressEncoder,\n getProgramDerivedAddress,\n type ProgramDerivedAddress,\n} from \"@solana/kit\";\nimport { OPPORTUNITY_MARKET_PROGRAM_ADDRESS } from \"../generated\";\n\nexport const STAKE_ACCOUNT_SEED = \"stake_account\";\n\nexport async function getStakeAccountAddress(\n owner: Address,\n market: Address,\n stakeAccountId: number,\n programId: Address = OPPORTUNITY_MARKET_PROGRAM_ADDRESS\n): Promise<ProgramDerivedAddress> {\n const addressEncoder = getAddressEncoder();\n const idBytes = new Uint8Array(4);\n new DataView(idBytes.buffer).setUint32(0, stakeAccountId, true);\n return getProgramDerivedAddress({\n programAddress: programId,\n seeds: [\n STAKE_ACCOUNT_SEED,\n addressEncoder.encode(owner),\n addressEncoder.encode(market),\n idBytes,\n ],\n });\n}\n","import {\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","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_client","import_web3","import_bn","toAddress","BN","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_client","import_bn","import_crypto"]}
|