@flipflop-sdk/node
Version:
FlipFlop Node.js SDK for programmatic token operations
96 lines • 4.7 kB
JavaScript
;
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