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