@kamino-finance/klend-sdk
Version:
Typescript SDK for interacting with the Kamino Lending (klend) protocol
79 lines • 2.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveMetadata = resolveMetadata;
exports.resolveMetadataFromToken = resolveMetadataFromToken;
exports.resolveMetadataUriFromMint = resolveMetadataUriFromMint;
exports.getInitializeKVaultSharesMetadataIx = getInitializeKVaultSharesMetadataIx;
exports.getUpdateSharesMetadataIx = getUpdateSharesMetadataIx;
const lib_1 = require("../lib");
const system_1 = require("@solana-program/system");
const sysvars_1 = require("@solana/sysvars");
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}/metadata`;
}
async function getInitializeKVaultSharesMetadataIx(vaultAdmin, vault, sharesMint, baseVaultAuthority, name, symbol, uri) {
const [sharesMintMetadata] = await (0, lib_1.getKVaultSharesMetadataPda)(sharesMint);
const args = {
name,
symbol,
uri,
};
const accounts = {
vaultAdminAuthority: vaultAdmin,
vaultState: vault,
sharesMint,
baseVaultAuthority,
sharesMetadata: sharesMintMetadata,
systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS,
rent: sysvars_1.SYSVAR_RENT_ADDRESS,
metadataProgram: lib_1.METADATA_PROGRAM_ID,
};
const ix = (0, lib_1.initializeSharesMetadata)(args, accounts);
return ix;
}
async function getUpdateSharesMetadataIx(vaultAdmin, vault, sharesMint, baseVaultAuthority, name, symbol, uri) {
const [sharesMintMetadata] = await (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