UNPKG

@kamino-finance/kliquidity-sdk

Version:

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

177 lines (163 loc) 11.1 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, getI32Decoder, getI32Encoder, getI64Decoder, getI64Encoder, getStructDecoder, getStructEncoder, getU16Decoder, getU16Encoder, 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 { getProtocolFeeDecoder, getProtocolFeeEncoder, getRewardInfoDecoder, getRewardInfoEncoder, getStaticParametersDecoder, getStaticParametersEncoder, getVariableParametersDecoder, getVariableParametersEncoder, type ProtocolFee, type ProtocolFeeArgs, type RewardInfo, type RewardInfoArgs, type StaticParameters, type StaticParametersArgs, type VariableParameters, type VariableParametersArgs } from '../types'; export const LB_PAIR_DISCRIMINATOR = new Uint8Array([33, 11, 49, 98, 181, 101, 177, 13]); export function getLbPairDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode(LB_PAIR_DISCRIMINATOR); } export type LbPair = { discriminator: ReadonlyUint8Array; parameters: StaticParameters; vParameters: VariableParameters; bumpSeed: ReadonlyUint8Array; /** Bin step signer seed */ binStepSeed: ReadonlyUint8Array; /** Type of the pair */ pairType: number; /** Active bin id */ activeId: number; /** Bin step. Represent the price increment / decrement. */ binStep: number; /** Status of the pair. Check PairStatus enum. */ status: number; requireBaseFactorSeed: number; baseFactorSeed: ReadonlyUint8Array; padding1: ReadonlyUint8Array; /** Token X mint */ tokenXMint: Address; /** Token Y mint */ tokenYMint: Address; /** LB token X vault */ reserveX: Address; /** LB token Y vault */ reserveY: Address; /** Uncollected protocol fee */ protocolFee: ProtocolFee; /** Protocol fee owner, */ feeOwner: Address; /** Farming reward information */ rewardInfos: Array<RewardInfo>; /** Oracle pubkey */ oracle: Address; /** Packed initialized bin array state */ binArrayBitmap: Array<bigint>; /** Last time the pool fee parameter was updated */ lastUpdatedAt: bigint; /** Whitelisted wallet */ whitelistedWallet: Address; /** Address allowed to swap when the current slot is greater than or equal to the pre-activation slot. The pre-activation slot is calculated as `activation_slot - pre_activation_slot_duration`. */ preActivationSwapAddress: Address; /** Base keypair. Only required for permission pair */ baseKey: Address; /** Slot to enable the pair. Only applicable for permission pair. */ activationSlot: bigint; /** Number of slot before activation slot. Used to calculate pre-activation slot for pre_activation_swap_address */ preActivationSlotDuration: bigint; /** _padding2 is reclaimed free space from swap_cap_deactivate_slot and swap_cap_amount before, BE CAREFUL FOR TOMBSTONE WHEN REUSE !! */ padding2: ReadonlyUint8Array; /** Liquidity lock duration for positions which created before activate. Only applicable for permission pair. */ lockDurationsInSlot: bigint; /** Pool creator */ creator: Address; /** Reserved space for future use */ reserved: ReadonlyUint8Array; }; export type LbPairArgs = { parameters: StaticParametersArgs; vParameters: VariableParametersArgs; bumpSeed: ReadonlyUint8Array; /** Bin step signer seed */ binStepSeed: ReadonlyUint8Array; /** Type of the pair */ pairType: number; /** Active bin id */ activeId: number; /** Bin step. Represent the price increment / decrement. */ binStep: number; /** Status of the pair. Check PairStatus enum. */ status: number; requireBaseFactorSeed: number; baseFactorSeed: ReadonlyUint8Array; padding1: ReadonlyUint8Array; /** Token X mint */ tokenXMint: Address; /** Token Y mint */ tokenYMint: Address; /** LB token X vault */ reserveX: Address; /** LB token Y vault */ reserveY: Address; /** Uncollected protocol fee */ protocolFee: ProtocolFeeArgs; /** Protocol fee owner, */ feeOwner: Address; /** Farming reward information */ rewardInfos: Array<RewardInfoArgs>; /** Oracle pubkey */ oracle: Address; /** Packed initialized bin array state */ binArrayBitmap: Array<number | bigint>; /** Last time the pool fee parameter was updated */ lastUpdatedAt: number | bigint; /** Whitelisted wallet */ whitelistedWallet: Address; /** Address allowed to swap when the current slot is greater than or equal to the pre-activation slot. The pre-activation slot is calculated as `activation_slot - pre_activation_slot_duration`. */ preActivationSwapAddress: Address; /** Base keypair. Only required for permission pair */ baseKey: Address; /** Slot to enable the pair. Only applicable for permission pair. */ activationSlot: number | bigint; /** Number of slot before activation slot. Used to calculate pre-activation slot for pre_activation_swap_address */ preActivationSlotDuration: number | bigint; /** _padding2 is reclaimed free space from swap_cap_deactivate_slot and swap_cap_amount before, BE CAREFUL FOR TOMBSTONE WHEN REUSE !! */ padding2: ReadonlyUint8Array; /** Liquidity lock duration for positions which created before activate. Only applicable for permission pair. */ lockDurationsInSlot: number | bigint; /** Pool creator */ creator: Address; /** Reserved space for future use */ reserved: ReadonlyUint8Array; }; /** Gets the encoder for {@link LbPairArgs} account data. */ export function getLbPairEncoder(): FixedSizeEncoder<LbPairArgs> { return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['parameters', getStaticParametersEncoder()], ['vParameters', getVariableParametersEncoder()], ['bumpSeed', fixEncoderSize(getBytesEncoder(), 1)], ['binStepSeed', fixEncoderSize(getBytesEncoder(), 2)], ['pairType', getU8Encoder()], ['activeId', getI32Encoder()], ['binStep', getU16Encoder()], ['status', getU8Encoder()], ['requireBaseFactorSeed', getU8Encoder()], ['baseFactorSeed', fixEncoderSize(getBytesEncoder(), 2)], ['padding1', fixEncoderSize(getBytesEncoder(), 2)], ['tokenXMint', getAddressEncoder()], ['tokenYMint', getAddressEncoder()], ['reserveX', getAddressEncoder()], ['reserveY', getAddressEncoder()], ['protocolFee', getProtocolFeeEncoder()], ['feeOwner', getAddressEncoder()], ['rewardInfos', getArrayEncoder(getRewardInfoEncoder(), { size: 2 })], ['oracle', getAddressEncoder()], ['binArrayBitmap', getArrayEncoder(getU64Encoder(), { size: 16 })], ['lastUpdatedAt', getI64Encoder()], ['whitelistedWallet', getAddressEncoder()], ['preActivationSwapAddress', getAddressEncoder()], ['baseKey', getAddressEncoder()], ['activationSlot', getU64Encoder()], ['preActivationSlotDuration', getU64Encoder()], ['padding2', fixEncoderSize(getBytesEncoder(), 8)], ['lockDurationsInSlot', getU64Encoder()], ['creator', getAddressEncoder()], ['reserved', fixEncoderSize(getBytesEncoder(), 24)]]), (value) => ({ ...value, discriminator: LB_PAIR_DISCRIMINATOR })); } /** Gets the decoder for {@link LbPair} account data. */ export function getLbPairDecoder(): FixedSizeDecoder<LbPair> { return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['parameters', getStaticParametersDecoder()], ['vParameters', getVariableParametersDecoder()], ['bumpSeed', fixDecoderSize(getBytesDecoder(), 1)], ['binStepSeed', fixDecoderSize(getBytesDecoder(), 2)], ['pairType', getU8Decoder()], ['activeId', getI32Decoder()], ['binStep', getU16Decoder()], ['status', getU8Decoder()], ['requireBaseFactorSeed', getU8Decoder()], ['baseFactorSeed', fixDecoderSize(getBytesDecoder(), 2)], ['padding1', fixDecoderSize(getBytesDecoder(), 2)], ['tokenXMint', getAddressDecoder()], ['tokenYMint', getAddressDecoder()], ['reserveX', getAddressDecoder()], ['reserveY', getAddressDecoder()], ['protocolFee', getProtocolFeeDecoder()], ['feeOwner', getAddressDecoder()], ['rewardInfos', getArrayDecoder(getRewardInfoDecoder(), { size: 2 })], ['oracle', getAddressDecoder()], ['binArrayBitmap', getArrayDecoder(getU64Decoder(), { size: 16 })], ['lastUpdatedAt', getI64Decoder()], ['whitelistedWallet', getAddressDecoder()], ['preActivationSwapAddress', getAddressDecoder()], ['baseKey', getAddressDecoder()], ['activationSlot', getU64Decoder()], ['preActivationSlotDuration', getU64Decoder()], ['padding2', fixDecoderSize(getBytesDecoder(), 8)], ['lockDurationsInSlot', getU64Decoder()], ['creator', getAddressDecoder()], ['reserved', fixDecoderSize(getBytesDecoder(), 24)]]); } /** Gets the codec for {@link LbPair} account data. */ export function getLbPairCodec(): FixedSizeCodec<LbPairArgs, LbPair> { return combineCodec(getLbPairEncoder(), getLbPairDecoder()); } export function decodeLbPair<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress>): Account<LbPair, TAddress>; export function decodeLbPair<TAddress extends string = string>(encodedAccount: MaybeEncodedAccount<TAddress>): MaybeAccount<LbPair, TAddress>; export function decodeLbPair<TAddress extends string = string>(encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>): Account<LbPair, TAddress> | MaybeAccount<LbPair, TAddress> { return decodeAccount(encodedAccount as MaybeEncodedAccount<TAddress>, getLbPairDecoder()); } export async function fetchLbPair<TAddress extends string = string>( rpc: Parameters<typeof fetchEncodedAccount>[0], address: Address<TAddress>, config?: FetchAccountConfig, ): Promise<Account<LbPair, TAddress>> { const maybeAccount = await fetchMaybeLbPair(rpc, address, config); assertAccountExists(maybeAccount); return maybeAccount; } export async function fetchMaybeLbPair<TAddress extends string = string>( rpc: Parameters<typeof fetchEncodedAccount>[0], address: Address<TAddress>, config?: FetchAccountConfig, ): Promise<MaybeAccount<LbPair, TAddress>> { const maybeAccount = await fetchEncodedAccount(rpc, address, config); return decodeLbPair(maybeAccount); } export async function fetchAllLbPair( rpc: Parameters<typeof fetchEncodedAccounts>[0], addresses: Array<Address>, config?: FetchAccountsConfig, ): Promise<Account<LbPair>[]> { const maybeAccounts = await fetchAllMaybeLbPair(rpc, addresses, config); assertAccountsExist(maybeAccounts); return maybeAccounts; } export async function fetchAllMaybeLbPair( rpc: Parameters<typeof fetchEncodedAccounts>[0], addresses: Array<Address>, config?: FetchAccountsConfig, ): Promise<MaybeAccount<LbPair>[]> { const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); return maybeAccounts.map((maybeAccount) => decodeLbPair(maybeAccount)); } export function getLbPairSize(): number { return 904; }