@kamino-finance/klend-sdk
Version:
Typescript SDK for interacting with the Kamino Lending (klend) protocol
48 lines • 2.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.initFarmsForReserve = initFarmsForReserve;
const kit_1 = require("@solana/kit");
const src_1 = require("../../../src");
const types_1 = require("../../../src/@codegen/klend/types");
const farms_sdk_1 = require("@kamino-finance/farms-sdk");
const system_1 = require("@solana-program/system");
const sysvars_1 = require("@solana/sysvars");
const processor_1 = require("../tx/processor");
async function initFarmsForReserve(env, mode, reserve, kind) {
const reserveState = await src_1.Reserve.fetch(env.c.rpc, reserve, env.klendProgramId);
if (reserveState === null) {
throw new Error(`Reserve ${reserve} not found`);
}
const { lendingMarket } = reserveState;
const [lendingMarketAuthority] = await (0, src_1.lendingMarketAuthPda)(lendingMarket, env.klendProgramId);
const market = await src_1.KaminoMarket.load(env.c.rpc, lendingMarket, src_1.DEFAULT_RECENT_SLOT_DURATION_MS, env.klendProgramId, false);
if (!market) {
throw new Error(`Market ${lendingMarket} not found`);
}
const signer = await env.getSigner(market);
const SIZE_FARM_STATE = 8336n;
const farmState = await (0, kit_1.generateKeyPairSigner)();
const createFarmIx = (0, system_1.getCreateAccountInstruction)({
payer: signer,
newAccount: farmState,
lamports: await env.c.rpc.getMinimumBalanceForRentExemption(SIZE_FARM_STATE).send(),
space: SIZE_FARM_STATE,
programAddress: env.farmsProgramId,
});
const ix = (0, src_1.initFarmsForReserve)({
mode: types_1.ReserveFarmKind.fromDecoded({ [kind]: '' }).discriminator,
}, {
lendingMarketOwner: signer,
lendingMarket,
lendingMarketAuthority,
reserve,
farmsProgram: env.farmsProgramId,
farmsGlobalConfig: env.farmsGlobalConfig,
farmState: farmState.address,
farmsVaultAuthority: await (0, farms_sdk_1.getFarmAuthorityPDA)(env.farmsProgramId, farmState.address),
rent: sysvars_1.SYSVAR_RENT_ADDRESS,
systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS,
});
await (0, processor_1.processTx)(env.c, signer, [createFarmIx, ix], mode);
}
//# sourceMappingURL=initFarmsForReserve.js.map