@kamino-finance/kliquidity-sdk
Version:
Typescript SDK for interacting with the Kamino Liquidity (kliquidity) protocol
177 lines (163 loc) • 11.1 kB
text/typescript
/**
* 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;
}