@kamino-finance/kliquidity-sdk
Version:
Typescript SDK for interacting with the Kamino Liquidity (kliquidity) protocol
123 lines (104 loc) • 14.7 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 { combineCodec, fixDecoderSize, fixEncoderSize, getBytesDecoder, getBytesEncoder, getStructDecoder, getStructEncoder, getU64Decoder, getU64Encoder, transformEncoder, type AccountMeta, type AccountSignerMeta, type Address, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type Instruction, type InstructionWithAccounts, type InstructionWithData, type ReadonlyAccount, type ReadonlyUint8Array, type TransactionSigner, type WritableAccount, type WritableSignerAccount } from '@solana/kit';
import { YVAULTS_PROGRAM_ADDRESS } from '../programs';
import { getAccountMetaFactory, type ResolvedAccount } from '../shared';
export const INITIALIZE_STRATEGY_DISCRIMINATOR = new Uint8Array([208, 119, 144, 145, 178, 57, 105, 252]);
export function getInitializeStrategyDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode(INITIALIZE_STRATEGY_DISCRIMINATOR); }
export type InitializeStrategyInstruction<TProgram extends string = typeof YVAULTS_PROGRAM_ADDRESS, TAccountAdminAuthority extends string | AccountMeta<string> = string, TAccountGlobalConfig extends string | AccountMeta<string> = string, TAccountPool extends string | AccountMeta<string> = string, TAccountTokenAMint extends string | AccountMeta<string> = string, TAccountTokenBMint extends string | AccountMeta<string> = string, TAccountTokenAVault extends string | AccountMeta<string> = string, TAccountTokenBVault extends string | AccountMeta<string> = string, TAccountBaseVaultAuthority extends string | AccountMeta<string> = string, TAccountSharesMint extends string | AccountMeta<string> = string, TAccountSharesMintAuthority extends string | AccountMeta<string> = string, TAccountTokenInfos extends string | AccountMeta<string> = string, TAccountSystemProgram extends string | AccountMeta<string> = "11111111111111111111111111111111", TAccountRent extends string | AccountMeta<string> = "SysvarRent111111111111111111111111111111111", TAccountTokenProgram extends string | AccountMeta<string> = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", TAccountTokenATokenProgram extends string | AccountMeta<string> = string, TAccountTokenBTokenProgram extends string | AccountMeta<string> = string, TAccountStrategy extends string | AccountMeta<string> = string, TRemainingAccounts extends readonly AccountMeta<string>[] = []> =
Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array> & InstructionWithAccounts<[TAccountAdminAuthority extends string ? WritableSignerAccount<TAccountAdminAuthority> & AccountSignerMeta<TAccountAdminAuthority> : TAccountAdminAuthority, TAccountGlobalConfig extends string ? ReadonlyAccount<TAccountGlobalConfig> : TAccountGlobalConfig, TAccountPool extends string ? ReadonlyAccount<TAccountPool> : TAccountPool, TAccountTokenAMint extends string ? ReadonlyAccount<TAccountTokenAMint> : TAccountTokenAMint, TAccountTokenBMint extends string ? ReadonlyAccount<TAccountTokenBMint> : TAccountTokenBMint, TAccountTokenAVault extends string ? WritableAccount<TAccountTokenAVault> : TAccountTokenAVault, TAccountTokenBVault extends string ? WritableAccount<TAccountTokenBVault> : TAccountTokenBVault, TAccountBaseVaultAuthority extends string ? WritableAccount<TAccountBaseVaultAuthority> : TAccountBaseVaultAuthority, TAccountSharesMint extends string ? WritableAccount<TAccountSharesMint> : TAccountSharesMint, TAccountSharesMintAuthority extends string ? WritableAccount<TAccountSharesMintAuthority> : TAccountSharesMintAuthority, TAccountTokenInfos extends string ? ReadonlyAccount<TAccountTokenInfos> : TAccountTokenInfos, TAccountSystemProgram extends string ? ReadonlyAccount<TAccountSystemProgram> : TAccountSystemProgram, TAccountRent extends string ? ReadonlyAccount<TAccountRent> : TAccountRent, TAccountTokenProgram extends string ? ReadonlyAccount<TAccountTokenProgram> : TAccountTokenProgram, TAccountTokenATokenProgram extends string ? ReadonlyAccount<TAccountTokenATokenProgram> : TAccountTokenATokenProgram, TAccountTokenBTokenProgram extends string ? ReadonlyAccount<TAccountTokenBTokenProgram> : TAccountTokenBTokenProgram, TAccountStrategy extends string ? WritableAccount<TAccountStrategy> : TAccountStrategy, ...TRemainingAccounts]>;
export type InitializeStrategyInstructionData = { discriminator: ReadonlyUint8Array; strategyType: bigint; tokenACollateralId: bigint; tokenBCollateralId: bigint; };
export type InitializeStrategyInstructionDataArgs = { strategyType: number | bigint; tokenACollateralId: number | bigint; tokenBCollateralId: number | bigint; };
export function getInitializeStrategyInstructionDataEncoder(): FixedSizeEncoder<InitializeStrategyInstructionDataArgs> {
return transformEncoder(getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)], ['strategyType', getU64Encoder()], ['tokenACollateralId', getU64Encoder()], ['tokenBCollateralId', getU64Encoder()]]), (value) => ({ ...value, discriminator: INITIALIZE_STRATEGY_DISCRIMINATOR }));
}
export function getInitializeStrategyInstructionDataDecoder(): FixedSizeDecoder<InitializeStrategyInstructionData> {
return getStructDecoder([['discriminator', fixDecoderSize(getBytesDecoder(), 8)], ['strategyType', getU64Decoder()], ['tokenACollateralId', getU64Decoder()], ['tokenBCollateralId', getU64Decoder()]]);
}
export function getInitializeStrategyInstructionDataCodec(): FixedSizeCodec<InitializeStrategyInstructionDataArgs, InitializeStrategyInstructionData> {
return combineCodec(getInitializeStrategyInstructionDataEncoder(), getInitializeStrategyInstructionDataDecoder());
}
export type InitializeStrategyInput<TAccountAdminAuthority extends string = string, TAccountGlobalConfig extends string = string, TAccountPool extends string = string, TAccountTokenAMint extends string = string, TAccountTokenBMint extends string = string, TAccountTokenAVault extends string = string, TAccountTokenBVault extends string = string, TAccountBaseVaultAuthority extends string = string, TAccountSharesMint extends string = string, TAccountSharesMintAuthority extends string = string, TAccountTokenInfos extends string = string, TAccountSystemProgram extends string = string, TAccountRent extends string = string, TAccountTokenProgram extends string = string, TAccountTokenATokenProgram extends string = string, TAccountTokenBTokenProgram extends string = string, TAccountStrategy extends string = string> = {
adminAuthority: TransactionSigner<TAccountAdminAuthority>;
globalConfig: Address<TAccountGlobalConfig>;
/** Program owner also checked. */
pool: Address<TAccountPool>;
tokenAMint: Address<TAccountTokenAMint>;
tokenBMint: Address<TAccountTokenBMint>;
tokenAVault: Address<TAccountTokenAVault>;
tokenBVault: Address<TAccountTokenBVault>;
baseVaultAuthority: Address<TAccountBaseVaultAuthority>;
sharesMint: Address<TAccountSharesMint>;
sharesMintAuthority: Address<TAccountSharesMintAuthority>;
tokenInfos: Address<TAccountTokenInfos>;
systemProgram?: Address<TAccountSystemProgram>;
rent?: Address<TAccountRent>;
tokenProgram?: Address<TAccountTokenProgram>;
tokenATokenProgram: Address<TAccountTokenATokenProgram>;
tokenBTokenProgram: Address<TAccountTokenBTokenProgram>;
strategy: Address<TAccountStrategy>;
strategyType: InitializeStrategyInstructionDataArgs["strategyType"];
tokenACollateralId: InitializeStrategyInstructionDataArgs["tokenACollateralId"];
tokenBCollateralId: InitializeStrategyInstructionDataArgs["tokenBCollateralId"];
}
export function getInitializeStrategyInstruction<TAccountAdminAuthority extends string, TAccountGlobalConfig extends string, TAccountPool extends string, TAccountTokenAMint extends string, TAccountTokenBMint extends string, TAccountTokenAVault extends string, TAccountTokenBVault extends string, TAccountBaseVaultAuthority extends string, TAccountSharesMint extends string, TAccountSharesMintAuthority extends string, TAccountTokenInfos extends string, TAccountSystemProgram extends string, TAccountRent extends string, TAccountTokenProgram extends string, TAccountTokenATokenProgram extends string, TAccountTokenBTokenProgram extends string, TAccountStrategy extends string, TProgramAddress extends Address = typeof YVAULTS_PROGRAM_ADDRESS>(input: InitializeStrategyInput<TAccountAdminAuthority, TAccountGlobalConfig, TAccountPool, TAccountTokenAMint, TAccountTokenBMint, TAccountTokenAVault, TAccountTokenBVault, TAccountBaseVaultAuthority, TAccountSharesMint, TAccountSharesMintAuthority, TAccountTokenInfos, TAccountSystemProgram, TAccountRent, TAccountTokenProgram, TAccountTokenATokenProgram, TAccountTokenBTokenProgram, TAccountStrategy>, config?: { programAddress?: TProgramAddress } ): InitializeStrategyInstruction<TProgramAddress, TAccountAdminAuthority, TAccountGlobalConfig, TAccountPool, TAccountTokenAMint, TAccountTokenBMint, TAccountTokenAVault, TAccountTokenBVault, TAccountBaseVaultAuthority, TAccountSharesMint, TAccountSharesMintAuthority, TAccountTokenInfos, TAccountSystemProgram, TAccountRent, TAccountTokenProgram, TAccountTokenATokenProgram, TAccountTokenBTokenProgram, TAccountStrategy> {
// Program address.
const programAddress = config?.programAddress ?? YVAULTS_PROGRAM_ADDRESS;
// Original accounts.
const originalAccounts = { adminAuthority: { value: input.adminAuthority ?? null, isWritable: true }, globalConfig: { value: input.globalConfig ?? null, isWritable: false }, pool: { value: input.pool ?? null, isWritable: false }, tokenAMint: { value: input.tokenAMint ?? null, isWritable: false }, tokenBMint: { value: input.tokenBMint ?? null, isWritable: false }, tokenAVault: { value: input.tokenAVault ?? null, isWritable: true }, tokenBVault: { value: input.tokenBVault ?? null, isWritable: true }, baseVaultAuthority: { value: input.baseVaultAuthority ?? null, isWritable: true }, sharesMint: { value: input.sharesMint ?? null, isWritable: true }, sharesMintAuthority: { value: input.sharesMintAuthority ?? null, isWritable: true }, tokenInfos: { value: input.tokenInfos ?? null, isWritable: false }, systemProgram: { value: input.systemProgram ?? null, isWritable: false }, rent: { value: input.rent ?? null, isWritable: false }, tokenProgram: { value: input.tokenProgram ?? null, isWritable: false }, tokenATokenProgram: { value: input.tokenATokenProgram ?? null, isWritable: false }, tokenBTokenProgram: { value: input.tokenBTokenProgram ?? null, isWritable: false }, strategy: { value: input.strategy ?? null, isWritable: true } }
const accounts = originalAccounts as Record<keyof typeof originalAccounts, ResolvedAccount>;
// Original args.
const args = { ...input, };
// Resolve default values.
if (!accounts.systemProgram.value) {
accounts.systemProgram.value = '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;
}
if (!accounts.rent.value) {
accounts.rent.value = 'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;
}
if (!accounts.tokenProgram.value) {
accounts.tokenProgram.value = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;
}
const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');
return Object.freeze({ accounts: [getAccountMeta(accounts.adminAuthority), getAccountMeta(accounts.globalConfig), getAccountMeta(accounts.pool), getAccountMeta(accounts.tokenAMint), getAccountMeta(accounts.tokenBMint), getAccountMeta(accounts.tokenAVault), getAccountMeta(accounts.tokenBVault), getAccountMeta(accounts.baseVaultAuthority), getAccountMeta(accounts.sharesMint), getAccountMeta(accounts.sharesMintAuthority), getAccountMeta(accounts.tokenInfos), getAccountMeta(accounts.systemProgram), getAccountMeta(accounts.rent), getAccountMeta(accounts.tokenProgram), getAccountMeta(accounts.tokenATokenProgram), getAccountMeta(accounts.tokenBTokenProgram), getAccountMeta(accounts.strategy)], data: getInitializeStrategyInstructionDataEncoder().encode(args as InitializeStrategyInstructionDataArgs), programAddress } as InitializeStrategyInstruction<TProgramAddress, TAccountAdminAuthority, TAccountGlobalConfig, TAccountPool, TAccountTokenAMint, TAccountTokenBMint, TAccountTokenAVault, TAccountTokenBVault, TAccountBaseVaultAuthority, TAccountSharesMint, TAccountSharesMintAuthority, TAccountTokenInfos, TAccountSystemProgram, TAccountRent, TAccountTokenProgram, TAccountTokenATokenProgram, TAccountTokenBTokenProgram, TAccountStrategy>);
}
export type ParsedInitializeStrategyInstruction<TProgram extends string = typeof YVAULTS_PROGRAM_ADDRESS, TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[]> = { programAddress: Address<TProgram>;
accounts: {
adminAuthority: TAccountMetas[0];
globalConfig: TAccountMetas[1];
/** Program owner also checked. */
pool: TAccountMetas[2];
tokenAMint: TAccountMetas[3];
tokenBMint: TAccountMetas[4];
tokenAVault: TAccountMetas[5];
tokenBVault: TAccountMetas[6];
baseVaultAuthority: TAccountMetas[7];
sharesMint: TAccountMetas[8];
sharesMintAuthority: TAccountMetas[9];
tokenInfos: TAccountMetas[10];
systemProgram: TAccountMetas[11];
rent: TAccountMetas[12];
tokenProgram: TAccountMetas[13];
tokenATokenProgram: TAccountMetas[14];
tokenBTokenProgram: TAccountMetas[15];
strategy: TAccountMetas[16];
};
data: InitializeStrategyInstructionData; };
export function parseInitializeStrategyInstruction<TProgram extends string, TAccountMetas extends readonly AccountMeta[]>(instruction: Instruction<TProgram> & InstructionWithAccounts<TAccountMetas> & InstructionWithData<ReadonlyUint8Array>): ParsedInitializeStrategyInstruction<TProgram, TAccountMetas> {
if (instruction.accounts.length < 17) {
// TODO: Coded error.
throw new Error('Not enough accounts');
}
let accountIndex = 0;
const getNextAccount = () => {
const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;
accountIndex += 1;
return accountMeta;
}
return { programAddress: instruction.programAddress, accounts: { adminAuthority: getNextAccount(), globalConfig: getNextAccount(), pool: getNextAccount(), tokenAMint: getNextAccount(), tokenBMint: getNextAccount(), tokenAVault: getNextAccount(), tokenBVault: getNextAccount(), baseVaultAuthority: getNextAccount(), sharesMint: getNextAccount(), sharesMintAuthority: getNextAccount(), tokenInfos: getNextAccount(), systemProgram: getNextAccount(), rent: getNextAccount(), tokenProgram: getNextAccount(), tokenATokenProgram: getNextAccount(), tokenBTokenProgram: getNextAccount(), strategy: getNextAccount() }, data: getInitializeStrategyInstructionDataDecoder().decode(instruction.data) };
}