UNPKG

@kamino-finance/klend-sdk

Version:

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

71 lines 3.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDeleteReferrerStateAndShortUrlIxs = exports.getInitReferrerStateAndShortUrlIxs = exports.getInitAllReferrerTokenStateIxs = void 0; const web3_js_1 = require("@solana/web3.js"); const utils_1 = require("../utils"); const lib_1 = require("../lib"); const getInitAllReferrerTokenStateIxs = async ({ referrer, kaminoMarket, payer = referrer, }) => { if (referrer.equals(web3_js_1.PublicKey.default)) { throw new Error('Referrer not set'); } await kaminoMarket.loadReserves(); const initReferrerTokenStateIxs = []; const tokenStatesToCreate = []; const reserves = kaminoMarket.getReserves(); const referrerTokenStates = reserves.map((reserve) => { return (0, utils_1.referrerTokenStatePda)(referrer, reserve.address, kaminoMarket.programId)[0]; }); const uniqueReferrerTokenStates = new utils_1.PublicKeySet(referrerTokenStates).toArray(); const accounts = await kaminoMarket.getConnection().getMultipleAccountsInfo(uniqueReferrerTokenStates); for (let i = 0; i < uniqueReferrerTokenStates.length; i++) { if (!accounts[i]) { tokenStatesToCreate.push([uniqueReferrerTokenStates[i], reserves[i].address]); } } tokenStatesToCreate.forEach(([referrerTokenStateAddress, reserveAddress]) => { const initReferrerTokenStateIx = (0, lib_1.initReferrerTokenState)({ lendingMarket: kaminoMarket.getAddress(), payer, reserve: reserveAddress, referrer, referrerTokenState: referrerTokenStateAddress, rent: web3_js_1.SYSVAR_RENT_PUBKEY, systemProgram: web3_js_1.SystemProgram.programId, }, kaminoMarket.programId); initReferrerTokenStateIxs.push(initReferrerTokenStateIx); }); return initReferrerTokenStateIxs; }; exports.getInitAllReferrerTokenStateIxs = getInitAllReferrerTokenStateIxs; const getInitReferrerStateAndShortUrlIxs = ({ referrer, shortUrl, programId = lib_1.PROGRAM_ID, }) => { const [referrerStateAddress] = (0, utils_1.referrerStatePda)(referrer, programId); const [shortUrlAddress] = (0, utils_1.shortUrlPda)(shortUrl, programId); const referrerUserMetadataAddress = (0, utils_1.userMetadataPda)(referrer, programId)[0]; const initReferrerStateAndShortUrlIx = (0, lib_1.initReferrerStateAndShortUrl)({ shortUrl: shortUrl, }, { referrer: referrer, referrerState: referrerStateAddress, referrerShortUrl: shortUrlAddress, referrerUserMetadata: referrerUserMetadataAddress, rent: web3_js_1.SYSVAR_RENT_PUBKEY, systemProgram: web3_js_1.SystemProgram.programId, }, programId); return initReferrerStateAndShortUrlIx; }; exports.getInitReferrerStateAndShortUrlIxs = getInitReferrerStateAndShortUrlIxs; // TODO: 1 thing left before adding program id const getDeleteReferrerStateAndShortUrlIxs = async ({ referrer, connection, programId = lib_1.PROGRAM_ID, }) => { const [referrerStateAddress] = (0, utils_1.referrerStatePda)(referrer, programId); const referrerState = await lib_1.ReferrerState.fetch(connection, referrerStateAddress, programId); const initReferrerStateAndShortUrlIx = (0, lib_1.deleteReferrerStateAndShortUrl)({ referrer: referrer, referrerState: referrerStateAddress, shortUrl: referrerState.shortUrl, rent: web3_js_1.SYSVAR_RENT_PUBKEY, systemProgram: web3_js_1.SystemProgram.programId, }, programId); return initReferrerStateAndShortUrlIx; }; exports.getDeleteReferrerStateAndShortUrlIxs = getDeleteReferrerStateAndShortUrlIxs; //# sourceMappingURL=instructions.js.map