UNPKG

@kamino-finance/kliquidity-sdk

Version:

Typescript SDK for interacting with the Kamino Liquidity (kliquidity) protocol

85 lines (71 loc) 19.7 kB
/** * 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<Address>; deprecated1: Array<bigint>; tokenAMint: Address; tokenBMint: Address; tokenAMintDecimals: bigint; tokenBMintDecimals: bigint; tokenAAmounts: bigint; tokenBAmounts: bigint; tokenACollateralId: bigint; tokenBCollateralId: bigint; deprecated2: Address; deprecated3: 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<KaminoRewardInfo>; 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; maxDeviationFromRefPriceOnInvestBps: number; padding3: number; lastInvestSlot: bigint; padding4: bigint; padding5: Array<bigint>; padding6: Array<bigint>; padding7: Array<bigint>; padding8: Array<bigint>; }; 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<Address>; deprecated1: Array<number | bigint>; tokenAMint: Address; tokenBMint: Address; tokenAMintDecimals: number | bigint; tokenBMintDecimals: number | bigint; tokenAAmounts: number | bigint; tokenBAmounts: number | bigint; tokenACollateralId: number | bigint; tokenBCollateralId: number | bigint; deprecated2: Address; deprecated3: 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<KaminoRewardInfoArgs>; 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; maxDeviationFromRefPriceOnInvestBps: number; padding3: number; lastInvestSlot: number | bigint; padding4: number | bigint; padding5: Array<number | bigint>; padding6: Array<number | bigint>; padding7: Array<number | bigint>; padding8: Array<number | bigint>; }; /** Gets the encoder for {@link WhirlpoolStrategyArgs} account data. */ export function getWhirlpoolStrategyEncoder(): FixedSizeEncoder<WhirlpoolStrategyArgs> { 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()], ['deprecated2', getAddressEncoder()], ['deprecated3', 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()], ['maxDeviationFromRefPriceOnInvestBps', getU32Encoder()], ['padding3', getU32Encoder()], ['lastInvestSlot', getU64Encoder()], ['padding4', getU64Encoder()], ['padding5', getArrayEncoder(getU128Encoder(), { size: 12 })], ['padding6', getArrayEncoder(getU128Encoder(), { size: 32 })], ['padding7', getArrayEncoder(getU128Encoder(), { size: 32 })], ['padding8', getArrayEncoder(getU128Encoder(), { size: 32 })]]), (value) => ({ ...value, discriminator: WHIRLPOOL_STRATEGY_DISCRIMINATOR })); } /** Gets the decoder for {@link WhirlpoolStrategy} account data. */ export function getWhirlpoolStrategyDecoder(): FixedSizeDecoder<WhirlpoolStrategy> { 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()], ['deprecated2', getAddressDecoder()], ['deprecated3', 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()], ['maxDeviationFromRefPriceOnInvestBps', getU32Decoder()], ['padding3', getU32Decoder()], ['lastInvestSlot', getU64Decoder()], ['padding4', getU64Decoder()], ['padding5', getArrayDecoder(getU128Decoder(), { size: 12 })], ['padding6', getArrayDecoder(getU128Decoder(), { size: 32 })], ['padding7', getArrayDecoder(getU128Decoder(), { size: 32 })], ['padding8', 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<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress>): Account<WhirlpoolStrategy, TAddress>; export function decodeWhirlpoolStrategy<TAddress extends string = string>(encodedAccount: MaybeEncodedAccount<TAddress>): MaybeAccount<WhirlpoolStrategy, TAddress>; export function decodeWhirlpoolStrategy<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>): Account<WhirlpoolStrategy, TAddress> | MaybeAccount<WhirlpoolStrategy, TAddress> { return decodeAccount(encodedAccount as MaybeEncodedAccount<TAddress>, getWhirlpoolStrategyDecoder()); } export async function fetchWhirlpoolStrategy<TAddress extends string = string>( rpc: Parameters<typeof fetchEncodedAccount>[0], address: Address<TAddress>, config?: FetchAccountConfig, ): Promise<Account<WhirlpoolStrategy, TAddress>> { const maybeAccount = await fetchMaybeWhirlpoolStrategy(rpc, address, config); assertAccountExists(maybeAccount); return maybeAccount; } export async function fetchMaybeWhirlpoolStrategy<TAddress extends string = string>( rpc: Parameters<typeof fetchEncodedAccount>[0], address: Address<TAddress>, config?: FetchAccountConfig, ): Promise<MaybeAccount<WhirlpoolStrategy, TAddress>> { const maybeAccount = await fetchEncodedAccount(rpc, address, config); return decodeWhirlpoolStrategy(maybeAccount); } export async function fetchAllWhirlpoolStrategy( rpc: Parameters<typeof fetchEncodedAccounts>[0], addresses: Array<Address>, config?: FetchAccountsConfig, ): Promise<Account<WhirlpoolStrategy>[]> { const maybeAccounts = await fetchAllMaybeWhirlpoolStrategy(rpc, addresses, config); assertAccountsExist(maybeAccounts); return maybeAccounts; } export async function fetchAllMaybeWhirlpoolStrategy( rpc: Parameters<typeof fetchEncodedAccounts>[0], addresses: Array<Address>, config?: FetchAccountsConfig, ): Promise<MaybeAccount<WhirlpoolStrategy>[]> { const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); return maybeAccounts.map((maybeAccount) => decodeWhirlpoolStrategy(maybeAccount)); } export function getWhirlpoolStrategySize(): number { return 4064; }