UNPKG

@triadxyz/triad-protocol

Version:

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

181 lines (180 loc) 6.69 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 pda_1 = require("./utils/pda"); const constants_1 = require("./utils/constants"); const sendVersionedTransaction_1 = __importDefault(require("./utils/sendVersionedTransaction")); class Stake { constructor(program, rpcOptions) { this.program = program; this.rpcOptions = rpcOptions; } /** * Get all Stake Vaults */ getStakeVaults() { return __awaiter(this, void 0, void 0, function* () { const response = yield this.program.account.stakeVault.all(); return response.map((stakeVault) => (0, helpers_1.formatStakeVault)(stakeVault.account)); }); } /** * Get all Stakes */ getStakes() { return __awaiter(this, void 0, void 0, function* () { const response = yield this.program.account.stakeV3.all(); return response.map((stake) => (0, helpers_1.formatStake)(stake.account)); }); } /** * Get Stake By Wallet * @param wallet - User wallet */ getStakeByWallet(wallet) { return __awaiter(this, void 0, void 0, function* () { const stake = yield this.program.account.stakeV3 .fetch((0, pda_1.getStakePDA)(this.program.programId, wallet)) .then((stake) => (0, helpers_1.formatStake)(stake)); return Object.assign(Object.assign({}, stake), { available: (0, helpers_1.calculateStakeRewards)(stake) }); }); } /** * Get Unstake By Wallet * @param wallet - User wallet */ getUnstakeByWallet(wallet) { return __awaiter(this, void 0, void 0, function* () { const stake = yield this.program.account.unstake.all([ { memcmp: { offset: 8 + 1, bytes: wallet.toBase58() } } ]); return stake.map((stake) => (0, helpers_1.formatUnstake)(stake.account, stake.publicKey)); }); } /** * Stake Token * @param amount - Amount to stake */ stakeToken(amount) { return __awaiter(this, void 0, void 0, function* () { const ixs = [ yield this.program.methods .stakeToken({ amount: new anchor_1.BN(amount * Math.pow(10, 6)) }) .accounts({ mint: constants_1.TRD_MINT }) .instruction() ]; return (0, sendVersionedTransaction_1.default)(this.program, ixs, this.rpcOptions); }); } /** * Update Stake Vault * @param amount - Reward amount to deposit */ addStakeVaultRewards(amount) { return __awaiter(this, void 0, void 0, function* () { const ixs = [ yield this.program.methods .addStakeVaultRewards(new anchor_1.BN(amount * Math.pow(10, 6))) .accounts({ mint: constants_1.TRD_MINT }) .instruction() ]; return (0, sendVersionedTransaction_1.default)(this.program, ixs, this.rpcOptions); }); } /** * Update Stake Vault Is Locked * @param isLocked - Whether the stake vault is locked */ updateStakeVaultIsLocked(isLocked) { return __awaiter(this, void 0, void 0, function* () { const ixs = [ yield this.program.methods .updateStakeVaultIsLocked(isLocked) .instruction() ]; return (0, sendVersionedTransaction_1.default)(this.program, ixs, this.rpcOptions); }); } /** * Request Unstake * @param amount - Amount to unstake */ requestUnstake(amount) { return __awaiter(this, void 0, void 0, function* () { const ixs = [ yield this.program.methods .requestUnstake({ amount: new anchor_1.BN(amount * Math.pow(10, 6)), ts: new anchor_1.BN(Date.now()) }) .accounts({ signer: this.program.provider.publicKey, mint: constants_1.TRD_MINT }) .instruction() ]; return (0, sendVersionedTransaction_1.default)(this.program, ixs, this.rpcOptions); }); } /** * Unstake Token * @param unstakePDA - Unstake Public Key */ unstakeToken(unstakePDA) { return __awaiter(this, void 0, void 0, function* () { const ixs = [ yield this.program.methods .unstakeToken() .accounts({ signer: this.program.provider.publicKey, unstake: unstakePDA, mint: constants_1.TRD_MINT }) .instruction() ]; return (0, sendVersionedTransaction_1.default)(this.program, ixs, this.rpcOptions); }); } /** * Claim Stake Rewards */ claimStakeRewards() { return __awaiter(this, void 0, void 0, function* () { const ixs = [ yield this.program.methods .claimStakeRewards() .accounts({ signer: this.program.provider.publicKey, mint: constants_1.TRD_MINT }) .instruction() ]; return (0, sendVersionedTransaction_1.default)(this.program, ixs, this.rpcOptions); }); } } exports.default = Stake;