UNPKG

@blockassetlabs/blaze

Version:

Blockasset Blaze

150 lines 6.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.closeBlaze = exports.claimPrize = exports.resolveBlaze = exports.redeemEntrants = exports.updateBlaze = exports.createBlaze = void 0; const project_1 = require("@blockassetlabs/project"); const web3_js_1 = require("@solana/web3.js"); const blockasset_blaze_1 = require("../programs/blockasset-blaze"); const utils_1 = require("../programs/blockasset-blaze/utils"); const withFindOrInitAssociatedTokenAccount_1 = require("../utils/withFindOrInitAssociatedTokenAccount"); /** * Create blaze * @param connection * @param wallet * @param params * projectId: PublicKey; * prizeMint: PublicKey; * tokenMint?: PublicKey; * treasury: PublicKey; * burnRate?: number; * entrantFee: BN; * maxEntrants: number; * start: BN; * end: BN; * maxEntrantsPerWalletRate?: number; * category?: string; * @returns { signature, blazeId } */ const createBlaze = async (connection, wallet, params) => { if (params === null || params === void 0 ? void 0 : params.burnRate) { if (params.burnRate < 0 || params.burnRate > 100) throw new Error('Invalid burn rate'); if (params.burnRate === 100 && (params === null || params === void 0 ? void 0 : params.treasury)) throw new Error('No need to set treasury with burnRate of 100'); if (params.burnRate === 100 && (params === null || params === void 0 ? void 0 : params.tokenMint)) throw new Error('No need to set tokenMint with burnRate of 100'); } if (!params.tokenMint && params.burnRate) throw new Error('tokenMint needs to be provided with burn rates of greater than zero'); const transaction = new web3_js_1.Transaction(); const tokenAccount = params.tokenMint ? await (0, withFindOrInitAssociatedTokenAccount_1.withFindOrInitAssociatedTokenAccount)(transaction, connection, params.tokenMint, params.treasury, wallet.publicKey) : undefined; const project = await (0, project_1.getProject)(connection, params.projectId); const [, blazeId, entrantsKeyPair] = await (0, blockasset_blaze_1.withInitBlaze)(transaction, connection, wallet, { ...params, tokenAccount, treasury: tokenAccount ? undefined : params.treasury, projectWallet: project.parsed.treasuryAccount }); const signature = await (0, project_1.executeTransaction)(connection, wallet, transaction, { silent: false, signers: [entrantsKeyPair] }); return { signature, blazeId }; }; exports.createBlaze = createBlaze; /** * Update single blaze * @param connection * @param wallet * @param params * blazeId: PublicKey; * projectId: PublicKey; * tokenMint?: PublicKey; * tokenAccount?: PublicKey; * treasury?: PublicKey; * burnRate?: number; * entrantFee: BN; * start: BN; * end: BN; * maxEntrantsPerWalletRate?: number; * category?: string; * @returns signature of the transaction */ const updateBlaze = async (connection, wallet, params) => { const transaction = new web3_js_1.Transaction(); await (0, blockasset_blaze_1.withUpdateBlaze)(transaction, connection, wallet, params); const signature = await (0, project_1.executeTransaction)(connection, wallet, transaction); return signature; }; exports.updateBlaze = updateBlaze; /** * Buy multiple entrants from a blaze * @param connection * @param wallet * @param params * quantity: number; * blazeId: PublicKey; * @returns */ const redeemEntrants = async (connection, wallet, params) => { const transaction = new web3_js_1.Transaction(); const blaze = await (0, blockasset_blaze_1.getBlaze)(connection, params.blazeId); const remainingAccountsForRedeem = await (0, utils_1.withRemainingAccountsForRedeem)(transaction, connection, wallet, { tokenMint: blaze.parsed.tokenMint, treasury: blaze.parsed.treasury }); await (0, blockasset_blaze_1.withRedeemEntrants)(transaction, connection, wallet, { quantity: params.quantity, blazeId: params.blazeId, entrants: blaze.parsed.entrants, remainingAccountsForRedeem }); const signature = await (0, project_1.executeTransaction)(connection, wallet, transaction); return signature; }; exports.redeemEntrants = redeemEntrants; /** * * @param connection * @param wallet * @param params * blazeId: PublicKey; * @returns signature */ const resolveBlaze = async (connection, wallet, params) => { const transaction = new web3_js_1.Transaction(); const blaze = await (0, blockasset_blaze_1.getBlaze)(connection, params.blazeId); await (0, blockasset_blaze_1.withResolveBlaze)(transaction, connection, wallet, { blazeId: params.blazeId, entrants: blaze.parsed.entrants }); const signature = await (0, project_1.executeTransaction)(connection, wallet, transaction); return signature; }; exports.resolveBlaze = resolveBlaze; const claimPrize = async (connection, wallet, params) => { const transaction = new web3_js_1.Transaction(); const blaze = await (0, blockasset_blaze_1.getBlaze)(connection, params.blazeId); await (0, blockasset_blaze_1.withClaimPrize)(transaction, connection, wallet, { blazeId: params.blazeId, prizeMint: blaze.parsed.prizeMint }); const signature = await (0, project_1.executeTransaction)(connection, wallet, transaction); return signature; }; exports.claimPrize = claimPrize; const closeBlaze = async (connection, wallet, params) => { const transaction = new web3_js_1.Transaction(); const blaze = await (0, blockasset_blaze_1.getBlaze)(connection, params.blazeId); await (0, blockasset_blaze_1.withCloseBlaze)(transaction, connection, wallet, { blazeId: params.blazeId, projectId: blaze.parsed.project, prizeMint: blaze.parsed.prizeMint, entrants: blaze.parsed.entrants }); const signature = await (0, project_1.executeTransaction)(connection, wallet, transaction); return signature; }; exports.closeBlaze = closeBlaze; //# sourceMappingURL=index.js.map