UNPKG

@flipflop-sdk/node

Version:

FlipFlop Node.js SDK for programmatic token operations

96 lines 4.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getMintData = void 0; const web3_js_1 = require("@solana/web3.js"); const utils_1 = require("./utils"); const constants_1 = require("./constants"); // Get mint information function const getMintData = async (options) => { // Validate required parameters if (!options.rpc) { return { success: false, message: "Missing --rpc parameter", }; } if (!options.mint) { return { success: false, message: "Missing --mint parameter", }; } const rpc = new web3_js_1.Connection(options.rpc, "confirmed"); const mintAccount = new web3_js_1.PublicKey(options.mint); const { program, programId } = await (0, utils_1.initProviderNoSigner)(rpc); try { // Get token metadata const metadataData = await (0, utils_1.getMetadataByMint)(rpc, mintAccount); if (!metadataData.success) { return { success: false, message: `❌ Failed to get token metadata: ${metadataData.message}`, }; } // Get config account details const [configAccount] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.CONFIG_DATA_SEED), new web3_js_1.PublicKey(mintAccount).toBuffer()], new web3_js_1.PublicKey(programId)); const configAccountInfo = await (0, utils_1.parseConfigData)(program, configAccount); if (!configAccountInfo) { return { success: false, message: "❌ Failed to get config account data", }; } // Return structured data instead of console output const cleanName = metadataData.data.name.replace(/\x00/g, "").trim(); const cleanSymbol = metadataData.data.symbol.replace(/\x00/g, "").trim(); const cleanUri = metadataData.data.uri.replace(/\x00/g, "").trim(); const liquidityTokensRatio = configAccountInfo.liquidityTokensRatio; return { success: true, data: { mint: new web3_js_1.PublicKey(metadataData.mint), name: cleanName, symbol: cleanSymbol, uri: cleanUri, isMutable: metadataData.isMutable, configAccount: configAccount, admin: configAccountInfo.admin, tokenVault: configAccountInfo.tokenVault, wsolVault: configAccountInfo.wsolVault, tokenVaultBalance: await (0, utils_1.getTokenBalance)(configAccountInfo.tokenVault, program.provider.connection), wsolVaultBalance: await (0, utils_1.getTokenBalance)(configAccountInfo.wsolVault, program.provider.connection), feeRate: configAccountInfo.feeRate * 1, targetEras: configAccountInfo.targetEras, supply: configAccountInfo.supply, initialMintSize: configAccountInfo.initialMintSize, epochesPerEra: configAccountInfo.epochesPerEra, targetSecondsPerEpoch: configAccountInfo.targetSecondsPerEpoch, reduceRatio: (100 - configAccountInfo.reduceRatio * 100) / 100, maxSupply: configAccountInfo.maxSupply, liquidityTokensRatio: configAccountInfo.liquidityTokensRatio * 100, currentSupply: configAccountInfo.supply, liquidityTokensSupply: configAccountInfo.supply * liquidityTokensRatio, minterTokensSupply: configAccountInfo.supply * (1 - liquidityTokensRatio), currentEra: configAccountInfo.currentEra, currentEpoch: configAccountInfo.currentEpoch, startTimestampEpoch: configAccountInfo.startTimestampEpoch, elapsedSecondsEpoch: configAccountInfo.elapsedSecondsEpoch, lastDifficultyCoefficient: configAccountInfo.lastDifficultyCoefficient, difficultyCoefficient: configAccountInfo.difficultyCoefficient, mintSizeEpoch: configAccountInfo.mintSizeEpoch, quantityMintedEpoch: configAccountInfo.quantityMintedEpoch, targetMintSizeEpoch: configAccountInfo.targetMintSizeEpoch, progress: ((configAccountInfo.supply / configAccountInfo.maxSupply) * 100).toFixed(2), }, }; } catch (error) { return { success: false, message: `Failed to get mint info: ${error instanceof Error ? error.message : "Unknown error"}`, }; } }; exports.getMintData = getMintData; //# sourceMappingURL=display-mint.js.map