UNPKG

@kamino-finance/klend-sdk

Version:

Typescript SDK for interacting with the Kamino Lending (klend) protocol

167 lines 13 kB
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