UNPKG

@kamino-finance/klend-sdk

Version:

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

114 lines 4.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CliEnv = exports.sendTxModes = void 0; exports.initEnv = initEnv; const kit_1 = require("@solana/kit"); const CliConnectionPool_1 = require("./CliConnectionPool"); const programId_1 = require("../../@codegen/klend/programId"); const programId_2 = require("@kamino-finance/farms-sdk/dist/@codegen/farms/programId"); const keypair_1 = require("./keypair"); const farm_utils_1 = require("../../classes/farm_utils"); exports.sendTxModes = ['execute', 'simulate', 'multisig', 'print']; class CliEnv { c; cluster; signerConfig; klendProgramId; farmsProgramId; farmsGlobalConfig; constructor(c, cluster, signerConfig, klendProgramId, farmsProgramId, farmsGlobalConfig) { this.c = c; this.cluster = cluster; this.signerConfig = signerConfig; this.klendProgramId = klendProgramId; this.farmsProgramId = farmsProgramId; this.farmsGlobalConfig = farmsGlobalConfig; } async getSigner(market) { if (this.signerConfig.multisig) { if (market) { return (0, keypair_1.noopSigner)(market.state.lendingMarketOwner); } else if (process.env.MULTISIG) { return (0, keypair_1.noopSigner)((0, kit_1.address)(process.env.MULTISIG)); } else { throw new Error('Multisig signer could not be detected consider setting the MULTISIG env var'); } } if (this.signerConfig.admin) { return this.signerConfig.admin; } else if (market) { return (0, keypair_1.noopSigner)(market.state.lendingMarketOwner); } else if (process.env.MULTISIG) { return (0, keypair_1.noopSigner)((0, kit_1.address)(process.env.MULTISIG)); } throw new Error(`No signer in config ${JSON.stringify(this.signerConfig)}`); } } exports.CliEnv = CliEnv; async function initEnv(rpcUrl, adminKeypairPath, multisig = false, programConfig) { const config = { klendProgramId: programConfig?.klendProgramId ?? programId_1.PROGRAM_ID, farmsProgramId: programConfig?.farmsProgramId ?? programId_2.PROGRAM_ID, farmsGlobalConfig: programConfig?.farmsGlobalConfig ?? farm_utils_1.FARMS_GLOBAL_CONFIG_MAINNET, }; let resolvedUrl; if (rpcUrl) { resolvedUrl = rpcUrl; } else { throw 'Must specify an RPC URL'; } let resolvedAdmin = undefined; if (adminKeypairPath) { resolvedAdmin = await (0, keypair_1.parseKeypairFile)(adminKeypairPath); } const rpcChain = parseRpcChain(rpcUrl); const c = new CliConnectionPool_1.CliConnectionPool(rpcChain); const env = new CliEnv(c, rpcChain.name, { admin: resolvedAdmin, multisig, }, config.klendProgramId, config.farmsProgramId, config.farmsGlobalConfig); console.log('\nSettings ⚙️'); console.log(`Multisig: ${multisig}`); console.log('Program ID:', env.klendProgramId); console.log('Admin:', resolvedAdmin); console.log('Cluster:', resolvedUrl); return env; } function parseRpcChain(rpcUrl) { let chain; if (rpcUrl === 'localnet') { chain = { name: 'localnet', endpoint: { url: 'http://127.0.0.1:8899', name: 'localnet', }, wsEndpoint: { name: 'localnet', url: 'ws://127.0.0.1:8900', }, multicastEndpoints: [], }; } else { chain = { name: 'mainnet-beta', endpoint: { url: rpcUrl, name: 'mainnet-beta', }, wsEndpoint: { url: rpcUrl.replace('https:', 'wss:') + '/whirligig', name: 'mainnet-beta-ws', }, multicastEndpoints: [], }; } return chain; } //# sourceMappingURL=CliEnv.js.map