UNPKG

@triadxyz/triad-protocol

Version:

<div align="center"> <h1>Triad Protocol</h1> </div>

194 lines (193 loc) 8.16 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const anchor_1 = require("@coral-xyz/anchor"); const helpers_1 = require("./utils/helpers"); const sendVersionedTransaction_1 = __importDefault(require("./utils/sendVersionedTransaction")); const pda_1 = require("./utils/pda"); const merkle_1 = require("./utils/merkle"); class Claim { constructor(program, rpcOptions) { this.program = program; this.rpcOptions = rpcOptions; } /** * Get All Claim Vaults */ getAllClaimVaults() { return __awaiter(this, void 0, void 0, function* () { const claimVaults = yield this.program.account.claimVault.all(); return claimVaults.map(({ account, publicKey }) => (0, helpers_1.formatClaimVault)(account, publicKey)); }); } /** * Get Claim Vault * @param name - Name of the claim vault */ getClaimVault(name) { return __awaiter(this, void 0, void 0, function* () { const claimVaultPDA = (0, pda_1.getClaimVaultPDA)(this.program.programId, name); const claimVault = yield this.program.account.claimVault.fetch(claimVaultPDA); return (0, helpers_1.formatClaimVault)(claimVault, claimVaultPDA); }); } /** * Get Claimed User * @param claimVault - Claim vault * @param user - User */ getClaimedUser(claimVault, user) { return __awaiter(this, void 0, void 0, function* () { const claimedUserPDA = (0, pda_1.getClaimedUserPDA)(this.program.programId, claimVault, user); const claimedUser = yield this.program.account.claimedUser.fetch(claimedUserPDA); return (0, helpers_1.formatClaimedUser)(claimedUser, claimedUserPDA); }); } /** * Claim Token * @param claimData - Claim data * @param claimVaultName - Vault name * @param payer - Payer * @param mint - Mint * @param amount - Amount to claim */ claimToken({ mint, claimVaultName, claimData, amount, isFirstComeFirstServed }) { var _a; return __awaiter(this, void 0, void 0, function* () { let proof = []; if (!isFirstComeFirstServed) { const { proofs } = (0, merkle_1.generateMerkleTree)(claimData); proof = (_a = proofs.find((p) => p.user.toBase58() === this.program.provider.publicKey.toBase58())) === null || _a === void 0 ? void 0 : _a.proof; } const ixs = [ yield this.program.methods .claimToken({ amount: new anchor_1.BN(amount * Math.pow(10, 6)), merkleProof: proof }) .accounts({ signer: this.program.provider.publicKey, payer: this.rpcOptions.payer, mint, claimVault: (0, pda_1.getClaimVaultPDA)(this.program.programId, claimVaultName), tokenProgram: (0, helpers_1.getTokenProgram)(mint) }) .instruction() ]; return (0, sendVersionedTransaction_1.default)(this.program, ixs, this.rpcOptions); }); } /** * Create Claim Vault * @param args - Create Claim Vault Args */ createClaimVault({ totalAmount, totalUsers, name, isFirstComeFirstServed, endTs, claimData, mint }) { return __awaiter(this, void 0, void 0, function* () { let merkleRoot = null; if (claimData) { const { merkleRoot: root } = (0, merkle_1.generateMerkleTree)(claimData); merkleRoot = root; } const ixs = [ yield this.program.methods .createClaimVault({ totalAmount: new anchor_1.BN(totalAmount * Math.pow(10, 6)), totalUsers: new anchor_1.BN(totalUsers), name, isFirstComeFirstServed, endTs: new anchor_1.BN(endTs), merkleRoot }) .accounts({ signer: this.program.provider.publicKey, mint, tokenProgram: (0, helpers_1.getTokenProgram)(mint) }) .instruction() ]; return (0, sendVersionedTransaction_1.default)(this.program, ixs, this.rpcOptions); }); } /** * Update Claim Vault Is Active * @param isActive - Is active * @param claimVault - Claim vault */ updateClaimVaultIsActive({ isActive, claimVaultName }) { return __awaiter(this, void 0, void 0, function* () { const ixs = [ yield this.program.methods .updateClaimVaultIsActive(isActive) .accounts({ signer: this.program.provider.publicKey, claimVault: (0, pda_1.getClaimVaultPDA)(this.program.programId, claimVaultName) }) .instruction() ]; return (0, sendVersionedTransaction_1.default)(this.program, ixs, this.rpcOptions); }); } /** * Update Claim Vault Amount * @param amount - Amount to add * @param newUsers - New users to add * @param claimVaultName - Claim vault name * @param mint - Mint */ updateClaimVaultAmount({ amount, newUsers, claimVaultName, mint, claimData }) { return __awaiter(this, void 0, void 0, function* () { let merkleRoot = null; if (claimData) { const { merkleRoot: root } = (0, merkle_1.generateMerkleTree)(claimData); merkleRoot = root; } const ixs = [ yield this.program.methods .updateClaimVaultAmount({ amount: new anchor_1.BN(amount * Math.pow(10, 6)), newUsers: new anchor_1.BN(newUsers), merkleRoot }) .accounts({ signer: this.program.provider.publicKey, mint, tokenProgram: (0, helpers_1.getTokenProgram)(mint), claimVault: (0, pda_1.getClaimVaultPDA)(this.program.programId, claimVaultName) }) .instruction() ]; return (0, sendVersionedTransaction_1.default)(this.program, ixs, this.rpcOptions); }); } /** * Update Claim Vault End Ts * @param endTs - End ts * @param claimVaultName - Claim vault name */ updateClaimVaultEndTs({ endTs, claimVaultName }) { return __awaiter(this, void 0, void 0, function* () { const ixs = [ yield this.program.methods .updateClaimVaultEndTs(new anchor_1.BN(endTs)) .accounts({ signer: this.program.provider.publicKey, claimVault: (0, pda_1.getClaimVaultPDA)(this.program.programId, claimVaultName) }) .instruction() ]; return (0, sendVersionedTransaction_1.default)(this.program, ixs, this.rpcOptions); }); } } exports.default = Claim;