@kamino-finance/klend-sdk
Version:
Typescript SDK for interacting with the Kamino Lending (klend) protocol
36 lines (33 loc) • 1.35 kB
text/typescript
import BN from 'bn.js';
import { VanillaObligation } from '../../utils';
import { KaminoAction } from '../../classes';
import { Scope } from '@kamino-finance/scope-sdk';
import { CliEnv, SendTxMode } from '../tx/CliEnv';
import { getMarket } from '../services/market';
import { processTx } from '../tx/processor';
import { Address } from '@solana/kit';
export async function withdraw(
env: CliEnv,
mode: SendTxMode,
token: string,
withdrawAmount: BN,
marketAddress: Address
): Promise<void> {
const signer = await env.getSigner();
const kaminoMarket = await getMarket(env.c.rpc, marketAddress, env.klendProgramId);
const scope = new Scope(env.cluster, env.c.rpc);
const kaminoAction = await KaminoAction.buildWithdrawTxns(
kaminoMarket,
withdrawAmount,
kaminoMarket.getReserveBySymbol(token)!.getLiquidityMint(),
signer,
new VanillaObligation(marketAddress),
true,
{ scope, scopeConfigurations: await scope.getAllConfigurations() }
);
console.log('User obligation', await kaminoAction.getObligationPda());
console.log('Withdraw SetupIxs:', kaminoAction.setupIxsLabels);
console.log('Withdraw LendingIxs:', kaminoAction.lendingIxsLabels);
console.log('Withdraw CleanupIxs:', kaminoAction.cleanupIxsLabels);
await processTx(env.c, signer, KaminoAction.actionToIxs(kaminoAction), mode);
}