@kamino-finance/klend-sdk
Version:
Typescript SDK for interacting with the Kamino Lending (klend) protocol
71 lines • 3.72 kB
JavaScript
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
;