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