UNPKG

@blockassetlabs/minter

Version:

Blockasset Minter

75 lines 3.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.withSetAsRedeemed = exports.withMint = exports.withCloseMinter = exports.withUpdateMinter = exports.withInitMinter = void 0; const web3_js_1 = require("@solana/web3.js"); const withFindOrInitAssociatedTokenAccount_1 = require("../../utils/withFindOrInitAssociatedTokenAccount"); const accounts_1 = require("./accounts"); const instruction_1 = require("./instruction"); const pda_1 = require("./pda"); const utils_1 = require("./utils"); const withInitMinter = async (transaction, connection, wallet, params) => { const { publicKey: identifierId } = web3_js_1.Keypair.generate(); const minterId = (0, pda_1.findMinterId)(identifierId); const redeemedMintsId = (0, pda_1.findRedeemedMintsId)(minterId); transaction.add(await (0, instruction_1.initMinterInstruction)(connection, wallet, { ...params, identifierId, minterId, redeemedMintsId, })); return [transaction, minterId, identifierId]; }; exports.withInitMinter = withInitMinter; const withUpdateMinter = async (transaction, connection, wallet, params) => { const minterData = await (0, accounts_1.getMinter)(connection, params.minterId); transaction.add(await (0, instruction_1.updateMinterInstruction)(connection, wallet, { projectId: minterData.parsed.project, ...params, })); return transaction; }; exports.withUpdateMinter = withUpdateMinter; const withCloseMinter = async (transaction, connection, wallet, params) => { const redeemedMintsId = (0, pda_1.findRedeemedMintsId)(params.minterId); const minterData = await (0, accounts_1.getMinter)(connection, params.minterId); transaction.add(await (0, instruction_1.closeMinterInstruction)(connection, wallet, { minterId: params.minterId, redeemedMintsId, projectId: minterData.parsed.project, mintId: minterData.parsed.mint, })); return transaction; }; exports.withCloseMinter = withCloseMinter; const withMint = async (transaction, connection, wallet, params) => { const redeemedMintsId = (0, pda_1.findRedeemedMintsId)(params.minterId); const minterData = await (0, accounts_1.getMinter)(connection, params.minterId); const [userTokenAccountId, remainingAccounts] = await Promise.all([ (0, withFindOrInitAssociatedTokenAccount_1.withFindOrInitAssociatedTokenAccount)(transaction, connection, minterData.parsed.mint, wallet.publicKey, wallet.publicKey), (0, utils_1.withRemainingAccountsForMint)(transaction, connection, wallet, { mints: params.setMints, }), ]); transaction.add(await (0, instruction_1.mintInstruction)(connection, wallet, { minterId: params.minterId, userTokenAccountId, redeemedMintsId, mintId: minterData.parsed.mint, remainingAccounts, })); return transaction; }; exports.withMint = withMint; const withSetAsRedeemed = async (transaction, connection, wallet, params) => { const redeemedMintsId = (0, pda_1.findRedeemedMintsId)(params.minterId); const minterData = await (0, accounts_1.getMinter)(connection, params.minterId); transaction.add(await (0, instruction_1.setAsRedeemedInstruction)(connection, wallet, { minterId: params.minterId, projectId: minterData.parsed.project, redeemedMintsId, mints: params.mints, })); return transaction; }; exports.withSetAsRedeemed = withSetAsRedeemed; //# sourceMappingURL=transaction.js.map