@triadxyz/triad-protocol
Version:
<div align="center"> <h1>Triad Protocol</h1> </div>
181 lines (180 loc) • 6.69 kB
JavaScript
"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;