UNPKG

@kamino-finance/kliquidity-sdk

Version:

Typescript SDK for interacting with the Kamino Liquidity (kliquidity) protocol

65 lines 2.33 kB
"use strict"; 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