@kamino-finance/klend-sdk v5.2.9
Installation
# npm
npm install @kamino-finance/klend-sdk
# yarn
yarn add @kamino-finance/klend-sdk
Kamino Lending Typescript SDK
This is the Kamino Lending Typescript SDK to interact with the Kamino Lend smart contract
Basic usage
Reading data
// There are three levels of data you can request (and cache) about the lending market.
// 1. Initalize market with parameters and metadata
const market = await KaminoMarket.load(
connection,
new PublicKey("7u3HeHxYDLhnCoErrtycNokbQYbWGzLs6JSDqGAv5PfF") // main market address. Defaults to 'Main' market
);
console.log(market.reserves.map((reserve) => reserve.config.loanToValueRatio));
// 2. Refresh reserves
await market.loadReserves();
const usdcReserve = market.getReserve("USDC");
console.log(usdcReserve?.stats.totalDepositsWads.toString());
// Refresh all cached data
market.refreshAll();
const obligation = market.getObligationByWallet("WALLET_PK");
console.log(obligation.stats.borrowLimit);
Perform lending action
const kaminoAction = await KaminoAction.buildDepositTxns(
kaminoMarket,
amountBase,
symbol,
new VanillaObligation(PROGRAM_ID),
);
const env = await initEnv('mainnet-beta');
await sendTransactionFromAction(env, sendTransaction); // sendTransaction from wallet adapter or custom
FAQ
Client
- npx tsx src/client.ts deposit --url --owner ./keypair.json --token USDH --amount 10
- npx tsx src/client.ts deposit --url --owner ./keypair.json --token SOL --amount 10
Codegen
- Copy the new
idl
from the kamino-lending program tosrc/idl.json
yarn codegen
Setup localnet
- Ensure
deps
contains the correct.so
you want to test against. Either build it from the main repo or dump it from mainnet yarn start-validator
Run tests
yarn start-validator-and-test
- Or, if the local validator is already running,
yarn test
TODO:
Better sdk documentation
Sync with smart contracts
- Copy the program .so, idl and codegen
$ yarn
$ cp ../kamino-lending/target/deploy/kamino_lending.so deps/programs/kamino_lending.so
$ cp ../kamino-lending/target/idl/kamino_lending.json src/idl.json
$ yarn codegen
Getting a vanilla obligation for a user
const kaminoMarket = await KaminoMarket.load(env.provider.connection, marketAddress, DEFAULT_RECENT_SLOT_DURATION_MS, programId);
const obligation = await kaminoMarket!.getUserVanillaObligation(user);
// to check the reserve is used in the obligation
const isReservePartOfObligation = kaminoMarket!.isReserveInObligation(obligation, reserve);
Getting a list of user obligations for a specific reserve
const kaminoMarket = await KaminoMarket.load(env.provider.connection, marketAddress, DEFAULT_RECENT_SLOT_DURATION_MS, programId);
const obligations = await kaminoMarket!.getAllUserObligationsForReserve(user, reserve);
Getting a list of user obligations for a specific reserve with caching
- Fetch all user obligations, this should be cached as it takes longer to fetch
const kaminoMarket = await KaminoMarket.load(env.provider.connection, marketAddress, DEFAULT_RECENT_SLOT_DURATION_MS, programId);
const allUserObligations = await kaminoMarket!.getAllUserObligations(user);
allUserObligations.forEach(obligation => {
if (obligation !== null) {
for (const deposits of obligation.deposits.keys()) {
if (deposits.equals(reserve)) {
finalObligations.push(obligation);
}
}
for (const borrows of obligation.borrows.keys()) {
if (borrows.equals(reserve)) {
finalObligations.push(obligation);
}
}
}
});
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
10 months ago
10 months ago
10 months ago
9 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
10 months ago
11 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
11 months ago
11 months ago
1 year ago
1 year ago
1 year ago
12 months ago
1 year ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
1 year ago
12 months ago
1 year ago
1 year ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
11 months ago
1 year ago
12 months ago
1 year ago
12 months ago
1 year ago
11 months ago
11 months ago
11 months ago
11 months ago
12 months ago
11 months ago
1 year ago
11 months ago
1 year ago
1 year ago
1 year ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago