@kamino-finance/klend-sdk
Version:
Typescript SDK for interacting with the Kamino Lending (klend) protocol
78 lines • 2.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveMetadata = resolveMetadata;
exports.resolveMetadataFromToken = resolveMetadataFromToken;
exports.resolveMetadataUriFromMint = resolveMetadataUriFromMint;
exports.getInitializeKVaultSharesMetadataIx = getInitializeKVaultSharesMetadataIx;
exports.getUpdateSharesMetadataIx = getUpdateSharesMetadataIx;
const web3_js_1 = require("@solana/web3.js");
const lib_1 = require("../lib");
function resolveMetadata(kTokenMint, extra, inputToken, inputName, inputSymbol, inputUri) {
let name;
let symbol;
if (inputToken) {
const { name: resolvedName, symbol: resolvedSymbol } = resolveMetadataFromToken(inputToken, extra);
name = inputName ?? resolvedName;
symbol = inputSymbol ?? resolvedSymbol;
}
else {
if (!inputSymbol) {
throw Error('Symbol required');
}
if (!inputName) {
throw Error('Name required');
}
name = inputName;
symbol = inputSymbol;
}
const uri = inputUri ?? resolveMetadataUriFromMint(kTokenMint);
return { name, symbol, uri };
}
function resolveMetadataFromToken(token, extra) {
console.log('token', token);
console.log('extra', extra);
const name = `kVault ${token} ${extra}`;
const symbol = `kV-${token.toUpperCase()}`;
return { name, symbol };
}
function resolveMetadataUriFromMint(mint) {
return `https://api.kamino.finance/kvault-tokens/${mint.toBase58()}/metadata`;
}
async function getInitializeKVaultSharesMetadataIx(connection, vaultAdmin, vault, sharesMint, baseVaultAuthority, name, symbol, uri) {
const [sharesMintMetadata] = (0, lib_1.getKVaultSharesMetadataPda)(sharesMint);
const args = {
name,
symbol,
uri,
};
const accounts = {
vaultAdminAuthority: vaultAdmin,
vaultState: vault,
sharesMint,
baseVaultAuthority,
sharesMetadata: sharesMintMetadata,
systemProgram: web3_js_1.SystemProgram.programId,
rent: web3_js_1.SYSVAR_RENT_PUBKEY,
metadataProgram: lib_1.METADATA_PROGRAM_ID,
};
const ix = (0, lib_1.initializeSharesMetadata)(args, accounts);
return ix;
}
async function getUpdateSharesMetadataIx(connection, vaultAdmin, vault, sharesMint, baseVaultAuthority, name, symbol, uri) {
const [sharesMintMetadata] = (0, lib_1.getKVaultSharesMetadataPda)(sharesMint);
const args = {
name,
symbol,
uri,
};
const accounts = {
vaultAdminAuthority: vaultAdmin,
vaultState: vault,
baseVaultAuthority,
sharesMetadata: sharesMintMetadata,
metadataProgram: lib_1.METADATA_PROGRAM_ID,
};
const ix = (0, lib_1.updateSharesMetadata)(args, accounts);
return ix;
}
//# sourceMappingURL=metadata.js.map