UNPKG

@kamino-finance/klend-sdk

Version:

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

79 lines 2.89 kB
"use strict"; 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