@kamino-finance/kliquidity-sdk
Version:
Typescript SDK for interacting with the Kamino Liquidity (kliquidity) protocol
65 lines • 2.33 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getLookupTable = getLookupTable;
exports.getAllUserLookupTables = getAllUserLookupTables;
exports.fetchMultipleLookupTableAccounts = fetchMultipleLookupTableAccounts;
const pubkeys_1 = require("../constants/pubkeys");
const address_lookup_table_1 = require("@solana-program/address-lookup-table");
const lutDecoder = (0, address_lookup_table_1.getAddressLookupTableDecoder)();
async function getLookupTable(cluster, rpc) {
if (cluster == 'mainnet-beta' || cluster == 'devnet') {
return getAllUserLookupTables(rpc, pubkeys_1.LUT_OWNER_KEY);
}
return [];
}
async function getAllUserLookupTables(c, user) {
const accountInfos = await c
.getProgramAccounts(address_lookup_table_1.ADDRESS_LOOKUP_TABLE_PROGRAM_ADDRESS, {
filters: [
{
memcmp: {
offset: 22n,
bytes: user,
encoding: 'base58',
},
},
],
encoding: 'base64',
})
.send();
return accountInfos.map((info) => {
const data = lutDecoder.decode(Buffer.from(info.account.data[0], 'base64'));
const acc = {
executable: info.account.executable,
programAddress: info.account.owner,
lamports: info.account.lamports,
address: info.pubkey,
data: data,
space: info.account.space,
};
return acc;
});
}
async function fetchMultipleLookupTableAccounts(rpc, addresses) {
const accountInfos = await rpc.getMultipleAccounts(addresses).send();
const luts = [];
for (let i = 0; i < accountInfos.value.length; i++) {
const info = accountInfos.value[i];
if (info === null) {
throw new Error(`Could not get lookup table ${addresses[i]}`);
}
const address = addresses[i];
const data = lutDecoder.decode(Buffer.from(info.data[0], 'base64'));
const acc = {
executable: info.executable,
programAddress: info.owner,
lamports: info.lamports,
address,
data: data,
space: info.space,
};
luts.push(acc);
}
return luts;
}
//# sourceMappingURL=lookupTable.js.map
;