@kamino-finance/klend-sdk
Version:
Typescript SDK for interacting with the Kamino Lending (klend) protocol
167 lines • 13 kB
TypeScript
import { Connection, PublicKey, RpcResponseAndContext, SimulatedTransactionResponse, Transaction, TransactionInstruction, TransactionSignature } from '@solana/web3.js';
import BN from 'bn.js';
import { ObligationType, ScopeRefresh } from '../utils';
import { KaminoMarket } from './market';
import { KaminoObligation } from './obligation';
import { KaminoReserve } from './reserve';
export declare const POSITION_LIMIT = 10;
export declare const BORROWS_LIMIT = 5;
export declare const DEPOSITS_LIMIT = 8;
export type ActionType = 'deposit' | 'borrow' | 'withdraw' | 'repay' | 'mint' | 'redeem' | 'depositCollateral' | 'liquidate' | 'depositAndBorrow' | 'repayAndWithdraw' | 'refreshObligation' | 'requestElevationGroup' | 'withdrawReferrerFees';
export type AuxiliaryIx = 'setup' | 'inBetween' | 'cleanup';
export declare class KaminoAction {
kaminoMarket: KaminoMarket;
reserve: KaminoReserve;
outflowReserve: KaminoReserve | undefined;
owner: PublicKey;
payer: PublicKey;
obligation: KaminoObligation | null;
referrer: PublicKey;
userTokenAccountAddress: PublicKey;
userCollateralAccountAddress: PublicKey;
additionalTokenAccountAddress?: PublicKey;
/**
* Null unless the obligation is not passed
*/
obligationType: ObligationType | null;
mint: PublicKey;
secondaryMint?: PublicKey;
positions?: number;
amount: BN;
outflowAmount?: BN;
computeBudgetIxs: Array<TransactionInstruction>;
computeBudgetIxsLabels: Array<string>;
setupIxs: Array<TransactionInstruction>;
setupIxsLabels: Array<string>;
inBetweenIxs: Array<TransactionInstruction>;
inBetweenIxsLabels: Array<string>;
lendingIxs: Array<TransactionInstruction>;
lendingIxsLabels: Array<string>;
cleanupIxs: Array<TransactionInstruction>;
cleanupIxsLabels: Array<string>;
preTxnIxs: Array<TransactionInstruction>;
preTxnIxsLabels: Array<string>;
postTxnIxs: Array<TransactionInstruction>;
postTxnIxsLabels: Array<string>;
refreshFarmsCleanupTxnIxs: Array<TransactionInstruction>;
refreshFarmsCleanupTxnIxsLabels: Array<string>;
depositReserves: Array<PublicKey>;
borrowReserves: Array<PublicKey>;
preLoadedDepositReservesSameTx: Array<PublicKey>;
preLoadedBorrowReservesSameTx: Array<PublicKey>;
currentSlot: number;
private constructor();
static initialize(action: ActionType, amount: string | BN, mint: PublicKey, owner: PublicKey, kaminoMarket: KaminoMarket, obligation: KaminoObligation | ObligationType, referrer?: PublicKey, currentSlot?: number, payer?: PublicKey): Promise<KaminoAction>;
private static getUserAccountAddresses;
private static loadObligation;
static buildRefreshObligationTxns(kaminoMarket: KaminoMarket, payer: PublicKey, obligation: KaminoObligation, extraComputeBudget?: number, // if > 0 then adds the ixn
currentSlot?: number): Promise<KaminoAction>;
static buildRequestElevationGroupTxns(kaminoMarket: KaminoMarket, payer: PublicKey, obligation: KaminoObligation, elevationGroup: number, extraComputeBudget?: number, // if > 0 then adds the ixn
currentSlot?: number): Promise<KaminoAction>;
static buildDepositTxns(kaminoMarket: KaminoMarket, amount: string | BN, mint: PublicKey, owner: PublicKey, obligation: KaminoObligation | ObligationType, extraComputeBudget?: number, // if > 0 then adds the ixn
includeAtaIxns?: boolean, // if true it includes create and close wsol and token atas,
requestElevationGroup?: boolean, includeUserMetadata?: boolean, // if true it includes user metadata
referrer?: PublicKey, currentSlot?: number, scopeRefresh?: ScopeRefresh, overrideElevationGroupRequest?: number | undefined): Promise<KaminoAction>;
getTokenIdsForScopeRefresh(kaminoMarket: KaminoMarket, reserves: PublicKey[]): number[];
addScopeRefreshIxs(tokens: number[], feed?: string): Promise<void>;
static buildBorrowTxns(kaminoMarket: KaminoMarket, amount: string | BN, mint: PublicKey, owner: PublicKey, obligation: KaminoObligation | ObligationType, extraComputeBudget?: number, // if > 0 then adds the ixn
includeAtaIxns?: boolean, // if true it includes create and close wsol and token atas,
requestElevationGroup?: boolean, includeUserMetadata?: boolean, // if true it includes user metadata
referrer?: PublicKey, currentSlot?: number, scopeRefresh?: ScopeRefresh, overrideElevationGroupRequest?: number | undefined): Promise<KaminoAction>;
static buildDepositReserveLiquidityTxns(kaminoMarket: KaminoMarket, amount: string | BN, mint: PublicKey, owner: PublicKey, obligation: KaminoObligation | ObligationType, extraComputeBudget?: number, // if > 0 then adds the ixn
includeAtaIxns?: boolean, // if true it includes create and close wsol and token atas
requestElevationGroup?: boolean, includeUserMetadata?: boolean, // if true it includes user metadata
referrer?: PublicKey, currentSlot?: number, scopeRefresh?: ScopeRefresh): Promise<KaminoAction>;
static buildRedeemReserveCollateralTxns(kaminoMarket: KaminoMarket, amount: string | BN, mint: PublicKey, owner: PublicKey, obligation: KaminoObligation | ObligationType, extraComputeBudget?: number, // if > 0 then adds the ixn
includeAtaIxns?: boolean, // if true it includes create and close wsol and token atas
requestElevationGroup?: boolean, includeUserMetadata?: boolean, // if true it includes user metadata,
referrer?: PublicKey, currentSlot?: number, scopeRefresh?: ScopeRefresh): Promise<KaminoAction>;
static buildDepositObligationCollateralTxns(kaminoMarket: KaminoMarket, amount: string | BN, mint: PublicKey, owner: PublicKey, obligation: KaminoObligation | ObligationType, extraComputeBudget?: number, // if > 0 then adds the ixn
includeAtaIxns?: boolean, // if true it includes create and close wsol and token atas
requestElevationGroup?: boolean, includeUserMetadata?: boolean, // if true it includes user metadata
referrer?: PublicKey, currentSlot?: number, scopeRefresh?: ScopeRefresh): Promise<KaminoAction>;
static buildDepositAndBorrowTxns(kaminoMarket: KaminoMarket, depositAmount: string | BN, depositMint: PublicKey, borrowAmount: string | BN, borrowMint: PublicKey, payer: PublicKey, obligation: KaminoObligation | ObligationType, extraComputeBudget?: number, // if > 0 then adds the ixn
includeAtaIxns?: boolean, // if true it includes create and close wsol and token atas,
requestElevationGroup?: boolean, includeUserMetadata?: boolean, // if true it includes user metadata,
referrer?: PublicKey, currentSlot?: number, scopeRefresh?: ScopeRefresh): Promise<KaminoAction>;
static buildRepayAndWithdrawTxns(kaminoMarket: KaminoMarket, repayAmount: string | BN, repayMint: PublicKey, withdrawAmount: string | BN, withdrawMint: PublicKey, payer: PublicKey, currentSlot: number, obligation: KaminoObligation | ObligationType, extraComputeBudget?: number, // if > 0 then adds the ixn
includeAtaIxns?: boolean, // if true it includes create and close wsol and token atas,
requestElevationGroup?: boolean, includeUserMetadata?: boolean, // if true it includes user metadata,
isClosingPosition?: boolean, referrer?: PublicKey, scopeRefresh?: ScopeRefresh): Promise<KaminoAction>;
static buildWithdrawTxns(kaminoMarket: KaminoMarket, amount: string | BN, mint: PublicKey, owner: PublicKey, obligation: KaminoObligation | ObligationType, extraComputeBudget?: number, // if > 0 then adds the ixn
includeAtaIxns?: boolean, // if true it includes create and close wsol and token atas,
requestElevationGroup?: boolean, includeUserMetadata?: boolean, // if true it includes user metadata
referrer?: PublicKey, currentSlot?: number, scopeRefresh?: ScopeRefresh): Promise<KaminoAction>;
/**
*
* @param kaminoMarket
* @param amount
* @param mint
* @param owner
* @param obligation - obligation to repay or the PDA seeds
* @param currentSlot
* @param payer - if not set then owner is used
* @param extraComputeBudget - if > 0 then adds the ixn
* @param includeAtaIxns - if true it includes create and close wsol and token atas
* @param requestElevationGroup
* @param includeUserMetadata - if true it includes user metadata
* @param referrer
*/
static buildRepayTxns(kaminoMarket: KaminoMarket, amount: string | BN, mint: PublicKey, owner: PublicKey, obligation: KaminoObligation | ObligationType, currentSlot: number, payer?: PublicKey | undefined, extraComputeBudget?: number, includeAtaIxns?: boolean, requestElevationGroup?: boolean, includeUserMetadata?: boolean, referrer?: PublicKey, scopeRefresh?: ScopeRefresh): Promise<KaminoAction>;
static buildLiquidateTxns(kaminoMarket: KaminoMarket, amount: string | BN, minCollateralReceiveAmount: string | BN, repayTokenMint: PublicKey, withdrawTokenMint: PublicKey, liquidator: PublicKey, obligationOwner: PublicKey, obligation: KaminoObligation | ObligationType, extraComputeBudget?: number, // if > 0 then adds the ixn
includeAtaIxns?: boolean, // if true it includes create and close wsol and token atas, and creates all other token atas if they don't exist
requestElevationGroup?: boolean, includeUserMetadata?: boolean, // if true it includes user metadata
referrer?: PublicKey, maxAllowedLtvOverridePercent?: number, currentSlot?: number, scopeRefresh?: ScopeRefresh): Promise<KaminoAction>;
static buildWithdrawReferrerFeeTxns(owner: PublicKey, tokenMint: PublicKey, kaminoMarket: KaminoMarket, currentSlot?: number): Promise<KaminoAction>;
getTransactions(): Promise<{
preLendingTxn: Transaction | null;
lendingTxn: Transaction | null;
postLendingTxn: Transaction | null;
}>;
sendTransactions(sendTransaction: (txn: Transaction, connection: Connection) => Promise<TransactionSignature>): Promise<string>;
private sendSingleTransaction;
simulateTransactions(sendTransaction: (txn: Transaction, connection: Connection) => Promise<RpcResponseAndContext<SimulatedTransactionResponse>>): Promise<"" | RpcResponseAndContext<SimulatedTransactionResponse>>;
private simulateSingleTransaction;
addDepositIx(): void;
addDepositReserveLiquidityIx(): void;
addRedeemReserveCollateralIx(): void;
addDepositObligationCollateralIx(): void;
addBorrowIx(): void;
addDepositAndBorrowIx(): Promise<void>;
addRepayAndWithdrawIxs(): Promise<void>;
addWithdrawIx(): Promise<void>;
addRepayIx(): Promise<void>;
addLiquidateIx(maxAllowedLtvOverridePercent?: number): Promise<void>;
addInBetweenIxs(action: ActionType, includeAtaIxns: boolean, requestElevationGroup: boolean, addInitObligationForFarm: boolean, isClosingPosition?: boolean): Promise<void>;
addRefreshObligation(crank: PublicKey): void;
addSupportIxsWithoutInitObligation(action: ActionType, includeAtaIxns: boolean, addAsSupportIx?: AuxiliaryIx, requestElevationGroup?: boolean, addInitObligationForFarm?: boolean, isClosingPosition?: boolean, twoTokenAction?: boolean, overrideElevationGroupRequest?: number): Promise<void>;
addSupportIxs(action: ActionType, includeAtaIxns: boolean, requestElevationGroup: boolean, includeUserMetadata: boolean, addInitObligationForFarm: boolean, twoTokenAction?: boolean, overrideElevationGroupRequest?: number): Promise<void>;
private static optionalAccount;
private addRefreshReserveIxs;
static getRefreshAllReserves(kaminoMarket: KaminoMarket, reserves: PublicKey[]): TransactionInstruction[];
private addRefreshObligationIx;
private addRequestElevationIx;
private addRefreshFarmsForReserve;
private addRefreshFarmsCleanupTxnIxsToCleanupIxs;
private addInitObligationForFarm;
private addInitObligationIxs;
private addInitUserMetadataIxs;
private addInitReferrerTokenStateIx;
private addWithdrawReferrerFeesIxs;
private addComputeBudgetIxn;
private addAtaIxs;
private updateWSOLAccount;
static initializeMultiTokenAction(kaminoMarket: KaminoMarket, action: ActionType, inflowAmount: string | BN, inflowTokenMint: PublicKey, outflowTokenMint: PublicKey, payer: PublicKey, obligationOwner: PublicKey, obligation: KaminoObligation | ObligationType, outflowAmount?: string | BN, referrer?: PublicKey, currentSlot?: number): Promise<KaminoAction>;
static initializeWithdrawReferrerFees(mint: PublicKey, owner: PublicKey, kaminoMarket: KaminoMarket, currentSlot?: number): Promise<{
axn: KaminoAction;
createAtaIxs: TransactionInstruction[];
}>;
getObligationPda(): PublicKey;
getAdditionalDepositReservesList(): PublicKey[];
private static getReferrerKey;
static actionToIxs(action: KaminoAction): Array<TransactionInstruction>;
static actionToLendingIxs(action: KaminoAction): Array<TransactionInstruction>;
static actionToIxLabels(action: KaminoAction): Array<string>;
static actionToLendingIxLabels(action: KaminoAction): Array<string>;
}
//# sourceMappingURL=action.d.ts.map