/** * This code was AUTOGENERATED using the Codama library. * Please DO NOT EDIT THIS FILE, instead use visitors * to add features, then rerun Codama to update it. * * @see https://github.com/codama-idl/codama */ import { assertAccountExists, assertAccountsExist, combineCodec, decodeAccount, fetchEncodedAccount, fetchEncodedAccounts, fixDecoderSize, fixEncoderSize, getAddressDecoder, getAddressEncoder, getArrayDecoder, getArrayEncoder, getBytesDecoder, getBytesEncoder, getStructDecoder, getStructEncoder, getU128Decoder, getU128Encoder, getU32Decoder, getU32Encoder, getU64Decoder, getU64Encoder, getU8Decoder, getU8Encoder, transformEncoder, type Account, type Address, type EncodedAccount, type FetchAccountConfig, type FetchAccountsConfig, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type MaybeAccount, type MaybeEncodedAccount, type ReadonlyUint8Array, } from "@solana/kit"; import { getKaminoRewardInfoDecoder, getKaminoRewardInfoEncoder, getPriceDecoder, getPriceEncoder, getRebalanceRawDecoder, getRebalanceRawEncoder, getWithdrawalCapsDecoder, getWithdrawalCapsEncoder, type KaminoRewardInfo, type KaminoRewardInfoArgs, type Price, type PriceArgs, type RebalanceRaw, type RebalanceRawArgs, type WithdrawalCaps, type WithdrawalCapsArgs, } from "../types"; export const WHIRLPOOL_STRATEGY_DISCRIMINATOR = new Uint8Array([ 190, 178, 231, 184, 49, 186, 103, 13, ]); export function getWhirlpoolStrategyDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode( WHIRLPOOL_STRATEGY_DISCRIMINATOR, ); } export type WhirlpoolStrategy = { discriminator: ReadonlyUint8Array; adminAuthority: Address; globalConfig: Address; baseVaultAuthority: Address; baseVaultAuthorityBump: bigint; pool: Address; poolTokenVaultA: Address; poolTokenVaultB: Address; tickArrayLower: Address; tickArrayUpper: Address; position: Address; positionMint: Address; positionMetadata: Address; positionTokenAccount: Address; tokenAVault: Address; tokenBVault: Address; deprecated0: Array
; deprecated1: Array; tokenAMint: Address; tokenBMint: Address; tokenAMintDecimals: bigint; tokenBMintDecimals: bigint; tokenAAmounts: bigint; tokenBAmounts: bigint; tokenACollateralId: bigint; tokenBCollateralId: bigint; scopePrices: Address; deprecated2: Address; sharesMint: Address; sharesMintDecimals: bigint; sharesMintAuthority: Address; sharesMintAuthorityBump: bigint; sharesIssued: bigint; status: bigint; reward0Amount: bigint; reward0Vault: Address; reward0CollateralId: bigint; reward0Decimals: bigint; reward1Amount: bigint; reward1Vault: Address; reward1CollateralId: bigint; reward1Decimals: bigint; reward2Amount: bigint; reward2Vault: Address; reward2CollateralId: bigint; reward2Decimals: bigint; depositCapUsd: bigint; feesACumulative: bigint; feesBCumulative: bigint; reward0AmountCumulative: bigint; reward1AmountCumulative: bigint; reward2AmountCumulative: bigint; depositCapUsdPerIxn: bigint; withdrawalCapA: WithdrawalCaps; withdrawalCapB: WithdrawalCaps; maxPriceDeviationBps: bigint; swapVaultMaxSlippageBps: number; swapVaultMaxSlippageFromReferenceBps: number; strategyType: bigint; padding0: bigint; withdrawFee: bigint; feesFee: bigint; reward0Fee: bigint; reward1Fee: bigint; reward2Fee: bigint; positionTimestamp: bigint; kaminoRewards: Array; strategyDex: bigint; raydiumProtocolPositionOrBaseVaultAuthority: Address; allowDepositWithoutInvest: bigint; raydiumPoolConfigOrBaseVaultAuthority: Address; depositBlocked: number; creationStatus: number; investBlocked: number; /** share_calculation_method can be either DOLAR_BASED=0 or PROPORTION_BASED=1 */ shareCalculationMethod: number; withdrawBlocked: number; reservedFlag2: number; localAdminBlocked: number; flashVaultSwapAllowed: number; referenceSwapPriceA: Price; referenceSwapPriceB: Price; isCommunity: number; rebalanceType: number; padding1: ReadonlyUint8Array; rebalanceRaw: RebalanceRaw; padding2: ReadonlyUint8Array; tokenAFeesFromRewardsCumulative: bigint; tokenBFeesFromRewardsCumulative: bigint; strategyLookupTable: Address; lastSwapUnevenStepTimestamp: bigint; farm: Address; rebalancesCap: WithdrawalCaps; swapUnevenAuthority: Address; tokenATokenProgram: Address; tokenBTokenProgram: Address; pendingAdmin: Address; padding3: bigint; padding4: Array; padding5: Array; padding6: Array; padding7: Array; }; export type WhirlpoolStrategyArgs = { adminAuthority: Address; globalConfig: Address; baseVaultAuthority: Address; baseVaultAuthorityBump: number | bigint; pool: Address; poolTokenVaultA: Address; poolTokenVaultB: Address; tickArrayLower: Address; tickArrayUpper: Address; position: Address; positionMint: Address; positionMetadata: Address; positionTokenAccount: Address; tokenAVault: Address; tokenBVault: Address; deprecated0: Array
; deprecated1: Array; tokenAMint: Address; tokenBMint: Address; tokenAMintDecimals: number | bigint; tokenBMintDecimals: number | bigint; tokenAAmounts: number | bigint; tokenBAmounts: number | bigint; tokenACollateralId: number | bigint; tokenBCollateralId: number | bigint; scopePrices: Address; deprecated2: Address; sharesMint: Address; sharesMintDecimals: number | bigint; sharesMintAuthority: Address; sharesMintAuthorityBump: number | bigint; sharesIssued: number | bigint; status: number | bigint; reward0Amount: number | bigint; reward0Vault: Address; reward0CollateralId: number | bigint; reward0Decimals: number | bigint; reward1Amount: number | bigint; reward1Vault: Address; reward1CollateralId: number | bigint; reward1Decimals: number | bigint; reward2Amount: number | bigint; reward2Vault: Address; reward2CollateralId: number | bigint; reward2Decimals: number | bigint; depositCapUsd: number | bigint; feesACumulative: number | bigint; feesBCumulative: number | bigint; reward0AmountCumulative: number | bigint; reward1AmountCumulative: number | bigint; reward2AmountCumulative: number | bigint; depositCapUsdPerIxn: number | bigint; withdrawalCapA: WithdrawalCapsArgs; withdrawalCapB: WithdrawalCapsArgs; maxPriceDeviationBps: number | bigint; swapVaultMaxSlippageBps: number; swapVaultMaxSlippageFromReferenceBps: number; strategyType: number | bigint; padding0: number | bigint; withdrawFee: number | bigint; feesFee: number | bigint; reward0Fee: number | bigint; reward1Fee: number | bigint; reward2Fee: number | bigint; positionTimestamp: number | bigint; kaminoRewards: Array; strategyDex: number | bigint; raydiumProtocolPositionOrBaseVaultAuthority: Address; allowDepositWithoutInvest: number | bigint; raydiumPoolConfigOrBaseVaultAuthority: Address; depositBlocked: number; creationStatus: number; investBlocked: number; /** share_calculation_method can be either DOLAR_BASED=0 or PROPORTION_BASED=1 */ shareCalculationMethod: number; withdrawBlocked: number; reservedFlag2: number; localAdminBlocked: number; flashVaultSwapAllowed: number; referenceSwapPriceA: PriceArgs; referenceSwapPriceB: PriceArgs; isCommunity: number; rebalanceType: number; padding1: ReadonlyUint8Array; rebalanceRaw: RebalanceRawArgs; padding2: ReadonlyUint8Array; tokenAFeesFromRewardsCumulative: number | bigint; tokenBFeesFromRewardsCumulative: number | bigint; strategyLookupTable: Address; lastSwapUnevenStepTimestamp: number | bigint; farm: Address; rebalancesCap: WithdrawalCapsArgs; swapUnevenAuthority: Address; tokenATokenProgram: Address; tokenBTokenProgram: Address; pendingAdmin: Address; padding3: number | bigint; padding4: Array; padding5: Array; padding6: Array; padding7: Array; }; /** Gets the encoder for {@link WhirlpoolStrategyArgs} account data. */ export function getWhirlpoolStrategyEncoder(): FixedSizeEncoder { return transformEncoder( getStructEncoder([ ["discriminator", fixEncoderSize(getBytesEncoder(), 8)], ["adminAuthority", getAddressEncoder()], ["globalConfig", getAddressEncoder()], ["baseVaultAuthority", getAddressEncoder()], ["baseVaultAuthorityBump", getU64Encoder()], ["pool", getAddressEncoder()], ["poolTokenVaultA", getAddressEncoder()], ["poolTokenVaultB", getAddressEncoder()], ["tickArrayLower", getAddressEncoder()], ["tickArrayUpper", getAddressEncoder()], ["position", getAddressEncoder()], ["positionMint", getAddressEncoder()], ["positionMetadata", getAddressEncoder()], ["positionTokenAccount", getAddressEncoder()], ["tokenAVault", getAddressEncoder()], ["tokenBVault", getAddressEncoder()], ["deprecated0", getArrayEncoder(getAddressEncoder(), { size: 2 })], ["deprecated1", getArrayEncoder(getU64Encoder(), { size: 2 })], ["tokenAMint", getAddressEncoder()], ["tokenBMint", getAddressEncoder()], ["tokenAMintDecimals", getU64Encoder()], ["tokenBMintDecimals", getU64Encoder()], ["tokenAAmounts", getU64Encoder()], ["tokenBAmounts", getU64Encoder()], ["tokenACollateralId", getU64Encoder()], ["tokenBCollateralId", getU64Encoder()], ["scopePrices", getAddressEncoder()], ["deprecated2", getAddressEncoder()], ["sharesMint", getAddressEncoder()], ["sharesMintDecimals", getU64Encoder()], ["sharesMintAuthority", getAddressEncoder()], ["sharesMintAuthorityBump", getU64Encoder()], ["sharesIssued", getU64Encoder()], ["status", getU64Encoder()], ["reward0Amount", getU64Encoder()], ["reward0Vault", getAddressEncoder()], ["reward0CollateralId", getU64Encoder()], ["reward0Decimals", getU64Encoder()], ["reward1Amount", getU64Encoder()], ["reward1Vault", getAddressEncoder()], ["reward1CollateralId", getU64Encoder()], ["reward1Decimals", getU64Encoder()], ["reward2Amount", getU64Encoder()], ["reward2Vault", getAddressEncoder()], ["reward2CollateralId", getU64Encoder()], ["reward2Decimals", getU64Encoder()], ["depositCapUsd", getU64Encoder()], ["feesACumulative", getU64Encoder()], ["feesBCumulative", getU64Encoder()], ["reward0AmountCumulative", getU64Encoder()], ["reward1AmountCumulative", getU64Encoder()], ["reward2AmountCumulative", getU64Encoder()], ["depositCapUsdPerIxn", getU64Encoder()], ["withdrawalCapA", getWithdrawalCapsEncoder()], ["withdrawalCapB", getWithdrawalCapsEncoder()], ["maxPriceDeviationBps", getU64Encoder()], ["swapVaultMaxSlippageBps", getU32Encoder()], ["swapVaultMaxSlippageFromReferenceBps", getU32Encoder()], ["strategyType", getU64Encoder()], ["padding0", getU64Encoder()], ["withdrawFee", getU64Encoder()], ["feesFee", getU64Encoder()], ["reward0Fee", getU64Encoder()], ["reward1Fee", getU64Encoder()], ["reward2Fee", getU64Encoder()], ["positionTimestamp", getU64Encoder()], [ "kaminoRewards", getArrayEncoder(getKaminoRewardInfoEncoder(), { size: 3 }), ], ["strategyDex", getU64Encoder()], ["raydiumProtocolPositionOrBaseVaultAuthority", getAddressEncoder()], ["allowDepositWithoutInvest", getU64Encoder()], ["raydiumPoolConfigOrBaseVaultAuthority", getAddressEncoder()], ["depositBlocked", getU8Encoder()], ["creationStatus", getU8Encoder()], ["investBlocked", getU8Encoder()], ["shareCalculationMethod", getU8Encoder()], ["withdrawBlocked", getU8Encoder()], ["reservedFlag2", getU8Encoder()], ["localAdminBlocked", getU8Encoder()], ["flashVaultSwapAllowed", getU8Encoder()], ["referenceSwapPriceA", getPriceEncoder()], ["referenceSwapPriceB", getPriceEncoder()], ["isCommunity", getU8Encoder()], ["rebalanceType", getU8Encoder()], ["padding1", fixEncoderSize(getBytesEncoder(), 6)], ["rebalanceRaw", getRebalanceRawEncoder()], ["padding2", fixEncoderSize(getBytesEncoder(), 7)], ["tokenAFeesFromRewardsCumulative", getU64Encoder()], ["tokenBFeesFromRewardsCumulative", getU64Encoder()], ["strategyLookupTable", getAddressEncoder()], ["lastSwapUnevenStepTimestamp", getU64Encoder()], ["farm", getAddressEncoder()], ["rebalancesCap", getWithdrawalCapsEncoder()], ["swapUnevenAuthority", getAddressEncoder()], ["tokenATokenProgram", getAddressEncoder()], ["tokenBTokenProgram", getAddressEncoder()], ["pendingAdmin", getAddressEncoder()], ["padding3", getU64Encoder()], ["padding4", getArrayEncoder(getU128Encoder(), { size: 13 })], ["padding5", getArrayEncoder(getU128Encoder(), { size: 32 })], ["padding6", getArrayEncoder(getU128Encoder(), { size: 32 })], ["padding7", getArrayEncoder(getU128Encoder(), { size: 32 })], ]), (value) => ({ ...value, discriminator: WHIRLPOOL_STRATEGY_DISCRIMINATOR }), ); } /** Gets the decoder for {@link WhirlpoolStrategy} account data. */ export function getWhirlpoolStrategyDecoder(): FixedSizeDecoder { return getStructDecoder([ ["discriminator", fixDecoderSize(getBytesDecoder(), 8)], ["adminAuthority", getAddressDecoder()], ["globalConfig", getAddressDecoder()], ["baseVaultAuthority", getAddressDecoder()], ["baseVaultAuthorityBump", getU64Decoder()], ["pool", getAddressDecoder()], ["poolTokenVaultA", getAddressDecoder()], ["poolTokenVaultB", getAddressDecoder()], ["tickArrayLower", getAddressDecoder()], ["tickArrayUpper", getAddressDecoder()], ["position", getAddressDecoder()], ["positionMint", getAddressDecoder()], ["positionMetadata", getAddressDecoder()], ["positionTokenAccount", getAddressDecoder()], ["tokenAVault", getAddressDecoder()], ["tokenBVault", getAddressDecoder()], ["deprecated0", getArrayDecoder(getAddressDecoder(), { size: 2 })], ["deprecated1", getArrayDecoder(getU64Decoder(), { size: 2 })], ["tokenAMint", getAddressDecoder()], ["tokenBMint", getAddressDecoder()], ["tokenAMintDecimals", getU64Decoder()], ["tokenBMintDecimals", getU64Decoder()], ["tokenAAmounts", getU64Decoder()], ["tokenBAmounts", getU64Decoder()], ["tokenACollateralId", getU64Decoder()], ["tokenBCollateralId", getU64Decoder()], ["scopePrices", getAddressDecoder()], ["deprecated2", getAddressDecoder()], ["sharesMint", getAddressDecoder()], ["sharesMintDecimals", getU64Decoder()], ["sharesMintAuthority", getAddressDecoder()], ["sharesMintAuthorityBump", getU64Decoder()], ["sharesIssued", getU64Decoder()], ["status", getU64Decoder()], ["reward0Amount", getU64Decoder()], ["reward0Vault", getAddressDecoder()], ["reward0CollateralId", getU64Decoder()], ["reward0Decimals", getU64Decoder()], ["reward1Amount", getU64Decoder()], ["reward1Vault", getAddressDecoder()], ["reward1CollateralId", getU64Decoder()], ["reward1Decimals", getU64Decoder()], ["reward2Amount", getU64Decoder()], ["reward2Vault", getAddressDecoder()], ["reward2CollateralId", getU64Decoder()], ["reward2Decimals", getU64Decoder()], ["depositCapUsd", getU64Decoder()], ["feesACumulative", getU64Decoder()], ["feesBCumulative", getU64Decoder()], ["reward0AmountCumulative", getU64Decoder()], ["reward1AmountCumulative", getU64Decoder()], ["reward2AmountCumulative", getU64Decoder()], ["depositCapUsdPerIxn", getU64Decoder()], ["withdrawalCapA", getWithdrawalCapsDecoder()], ["withdrawalCapB", getWithdrawalCapsDecoder()], ["maxPriceDeviationBps", getU64Decoder()], ["swapVaultMaxSlippageBps", getU32Decoder()], ["swapVaultMaxSlippageFromReferenceBps", getU32Decoder()], ["strategyType", getU64Decoder()], ["padding0", getU64Decoder()], ["withdrawFee", getU64Decoder()], ["feesFee", getU64Decoder()], ["reward0Fee", getU64Decoder()], ["reward1Fee", getU64Decoder()], ["reward2Fee", getU64Decoder()], ["positionTimestamp", getU64Decoder()], [ "kaminoRewards", getArrayDecoder(getKaminoRewardInfoDecoder(), { size: 3 }), ], ["strategyDex", getU64Decoder()], ["raydiumProtocolPositionOrBaseVaultAuthority", getAddressDecoder()], ["allowDepositWithoutInvest", getU64Decoder()], ["raydiumPoolConfigOrBaseVaultAuthority", getAddressDecoder()], ["depositBlocked", getU8Decoder()], ["creationStatus", getU8Decoder()], ["investBlocked", getU8Decoder()], ["shareCalculationMethod", getU8Decoder()], ["withdrawBlocked", getU8Decoder()], ["reservedFlag2", getU8Decoder()], ["localAdminBlocked", getU8Decoder()], ["flashVaultSwapAllowed", getU8Decoder()], ["referenceSwapPriceA", getPriceDecoder()], ["referenceSwapPriceB", getPriceDecoder()], ["isCommunity", getU8Decoder()], ["rebalanceType", getU8Decoder()], ["padding1", fixDecoderSize(getBytesDecoder(), 6)], ["rebalanceRaw", getRebalanceRawDecoder()], ["padding2", fixDecoderSize(getBytesDecoder(), 7)], ["tokenAFeesFromRewardsCumulative", getU64Decoder()], ["tokenBFeesFromRewardsCumulative", getU64Decoder()], ["strategyLookupTable", getAddressDecoder()], ["lastSwapUnevenStepTimestamp", getU64Decoder()], ["farm", getAddressDecoder()], ["rebalancesCap", getWithdrawalCapsDecoder()], ["swapUnevenAuthority", getAddressDecoder()], ["tokenATokenProgram", getAddressDecoder()], ["tokenBTokenProgram", getAddressDecoder()], ["pendingAdmin", getAddressDecoder()], ["padding3", getU64Decoder()], ["padding4", getArrayDecoder(getU128Decoder(), { size: 13 })], ["padding5", getArrayDecoder(getU128Decoder(), { size: 32 })], ["padding6", getArrayDecoder(getU128Decoder(), { size: 32 })], ["padding7", getArrayDecoder(getU128Decoder(), { size: 32 })], ]); } /** Gets the codec for {@link WhirlpoolStrategy} account data. */ export function getWhirlpoolStrategyCodec(): FixedSizeCodec< WhirlpoolStrategyArgs, WhirlpoolStrategy > { return combineCodec( getWhirlpoolStrategyEncoder(), getWhirlpoolStrategyDecoder(), ); } export function decodeWhirlpoolStrategy( encodedAccount: EncodedAccount, ): Account; export function decodeWhirlpoolStrategy( encodedAccount: MaybeEncodedAccount, ): MaybeAccount; export function decodeWhirlpoolStrategy( encodedAccount: EncodedAccount | MaybeEncodedAccount, ): | Account | MaybeAccount { return decodeAccount( encodedAccount as MaybeEncodedAccount, getWhirlpoolStrategyDecoder(), ); } export async function fetchWhirlpoolStrategy( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchMaybeWhirlpoolStrategy(rpc, address, config); assertAccountExists(maybeAccount); return maybeAccount; } export async function fetchMaybeWhirlpoolStrategy< TAddress extends string = string, >( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchEncodedAccount(rpc, address, config); return decodeWhirlpoolStrategy(maybeAccount); } export async function fetchAllWhirlpoolStrategy( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchAllMaybeWhirlpoolStrategy( rpc, addresses, config, ); assertAccountsExist(maybeAccounts); return maybeAccounts; } export async function fetchAllMaybeWhirlpoolStrategy( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); return maybeAccounts.map((maybeAccount) => decodeWhirlpoolStrategy(maybeAccount), ); } export function getWhirlpoolStrategySize(): number { return 4064; }