@blockassetlabs/minter
Version:
Blockasset Minter
75 lines • 3.54 kB
JavaScript
;
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