UNPKG

@flipflop-sdk/node

Version:

FlipFlop Node.js SDK for programmatic token operations

78 lines 3.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mintToken = void 0; const web3_js_1 = require("@solana/web3.js"); const constants_1 = require("./constants"); const utils_1 = require("./utils"); const config_1 = require("./config"); const mintToken = async (options) => { try { if (!options.rpc) { return { success: false, message: "Missing rpc parameter", }; } if (!options.minter) { return { success: false, message: "Missing minter parameter", }; } if (!options.mint) { return { success: false, message: "Missing mint parameter", }; } if (!options.urc) { return { success: false, message: "Missing urc parameter", }; } const rpc = new web3_js_1.Connection(options.rpc); const urc = options.urc; const mintAccount = new web3_js_1.PublicKey(options.mint); const config = config_1.CONFIGS[(0, config_1.getNetworkType)(options.rpc)]; // Load keypair and create wallet (keypair-file takes priority) const minter = options.minter; const { program, provider, programId } = await (0, utils_1.initProvider)(rpc, minter); const referrerAccount = await (0, utils_1.getURCDetails)(rpc, program, urc); const [referralAccount] = web3_js_1.PublicKey.findProgramAddressSync([ Buffer.from(constants_1.REFERRAL_SEED), mintAccount.toBuffer(), referrerAccount.referrerMain.toBuffer(), ], programId); const [systemConfigAccount] = web3_js_1.PublicKey.findProgramAddressSync([ Buffer.from(constants_1.SYSTEM_CONFIG_SEEDS), new web3_js_1.PublicKey(config.systemManagerAccount).toBuffer(), ], programId); const systemConfigData = await program.account.systemConfigData.fetch(systemConfigAccount); const protocolFeeAccount = systemConfigData.protocolFeeAccount; const [configAccount] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.CONFIG_DATA_SEED), mintAccount.toBuffer()], programId); const [codeHash] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.REFERRAL_CODE_SEED), Buffer.from(urc)], programId); const metadataData = await (0, utils_1.getMetadataByMint)(rpc, mintAccount); if (!metadataData.success) { return { success: false, message: `Failed to get token metadata: ${metadataData.message}`, }; } const _name = (0, utils_1.cleanTokenName)(metadataData.data.name); const _symbol = (0, utils_1.cleanTokenName)(metadataData.data.symbol); return await (0, utils_1.mintBy)(provider, program, mintAccount, configAccount, referralAccount, referrerAccount.referrerMain, // referrer { name: _name, symbol: _symbol }, codeHash, minter, // minter systemConfigAccount, provider.connection, options.lookupTableAccount ? options.lookupTableAccount : new web3_js_1.PublicKey(config.lookupTableAccount), protocolFeeAccount); } catch (error) { return { success: false, message: `Mint operation failed: ${error instanceof Error ? error.message : "Unknown error"}`, }; } }; exports.mintToken = mintToken; //# sourceMappingURL=mint.js.map