UNPKG

@blockassetlabs/minter

Version:

Blockasset Minter

67 lines 3.02 kB
import { Keypair } from "@solana/web3.js"; import { withFindOrInitAssociatedTokenAccount } from "../../utils/withFindOrInitAssociatedTokenAccount"; import { getMinter } from "./accounts"; import { closeMinterInstruction, initMinterInstruction, mintInstruction, setAsRedeemedInstruction, updateMinterInstruction, } from "./instruction"; import { findMinterId, findRedeemedMintsId } from "./pda"; import { withRemainingAccountsForMint } from "./utils"; export const withInitMinter = async (transaction, connection, wallet, params) => { const { publicKey: identifierId } = Keypair.generate(); const minterId = findMinterId(identifierId); const redeemedMintsId = findRedeemedMintsId(minterId); transaction.add(await initMinterInstruction(connection, wallet, { ...params, identifierId, minterId, redeemedMintsId, })); return [transaction, minterId, identifierId]; }; export const withUpdateMinter = async (transaction, connection, wallet, params) => { const minterData = await getMinter(connection, params.minterId); transaction.add(await updateMinterInstruction(connection, wallet, { projectId: minterData.parsed.project, ...params, })); return transaction; }; export const withCloseMinter = async (transaction, connection, wallet, params) => { const redeemedMintsId = findRedeemedMintsId(params.minterId); const minterData = await getMinter(connection, params.minterId); transaction.add(await closeMinterInstruction(connection, wallet, { minterId: params.minterId, redeemedMintsId, projectId: minterData.parsed.project, mintId: minterData.parsed.mint, })); return transaction; }; export const withMint = async (transaction, connection, wallet, params) => { const redeemedMintsId = findRedeemedMintsId(params.minterId); const minterData = await getMinter(connection, params.minterId); const [userTokenAccountId, remainingAccounts] = await Promise.all([ withFindOrInitAssociatedTokenAccount(transaction, connection, minterData.parsed.mint, wallet.publicKey, wallet.publicKey), withRemainingAccountsForMint(transaction, connection, wallet, { mints: params.setMints, }), ]); transaction.add(await mintInstruction(connection, wallet, { minterId: params.minterId, userTokenAccountId, redeemedMintsId, mintId: minterData.parsed.mint, remainingAccounts, })); return transaction; }; export const withSetAsRedeemed = async (transaction, connection, wallet, params) => { const redeemedMintsId = findRedeemedMintsId(params.minterId); const minterData = await getMinter(connection, params.minterId); transaction.add(await setAsRedeemedInstruction(connection, wallet, { minterId: params.minterId, projectId: minterData.parsed.project, redeemedMintsId, mints: params.mints, })); return transaction; }; //# sourceMappingURL=transaction.js.map