UNPKG

@tempus-labs/utils

Version:

Tempus utility helpers

77 lines 3.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ERC20Vesting = void 0; const ContractBase_1 = require("../utils/ContractBase"); /** * Typed wrapper for ERC20Vesting contract */ class ERC20Vesting extends ContractBase_1.ContractBase { constructor(contractName, token, contract) { super(contractName, token.decimals, contract); this.erc20 = token; } convertVesting(terms) { return { startTime: terms.startTime, period: terms.period, firstClaimableAt: terms.firstClaimableAt, amount: this.toBigNum(terms.amount).toString(), claimed: this.toBigNum(terms.claimed).toString() }; } static async create(token, wallet) { const contractName = "ERC20Vesting"; const contract = await this.deployContract(contractName, token.address, (0, ContractBase_1.addressOf)(wallet)); return new ERC20Vesting(contractName, token, contract); } async wallet() { return this.contract.wallet(); } async token() { return this.contract.token(); } async startVesting(sender, receiver, terms) { this.erc20.approve(sender, this.address, terms.amount); return this.connect(sender).startVesting((0, ContractBase_1.addressOf)(receiver), this.convertVesting(terms)); } async startVestingBatch(sender, receivers, terms) { let amountToVest = 0; let convertedTerms = []; for (let i = 0; i < terms.length; i++) { convertedTerms.push(this.convertVesting(terms[i])); amountToVest += +terms[i].amount; } await this.erc20.approve(sender, this.address, amountToVest); const receiverAddrs = receivers.map(addr => (0, ContractBase_1.addressOf)(addr)); return this.connect(sender).startVestingBatch(receiverAddrs, convertedTerms); } async getVestingTerms(receiver) { const terms = await this.contract.getVestingTerms((0, ContractBase_1.addressOf)(receiver)); return { startTime: terms.startTime, period: terms.period, firstClaimableAt: terms.firstClaimableAt, amount: this.fromBigNum(terms.amount), claimed: this.fromBigNum(terms.claimed) }; } async stopVesting(sender, receiver) { return this.connect(sender).stopVesting((0, ContractBase_1.addressOf)(receiver)); } async transferVesting(sender, oldAddress, newAddress) { return this.connect(sender).transferVesting((0, ContractBase_1.addressOf)(oldAddress), (0, ContractBase_1.addressOf)(newAddress)); } async claimable(receiver) { return this.fromBigNum(await this.contract.claimable((0, ContractBase_1.addressOf)(receiver))); } async claim(sender, amount) { if (amount === undefined) { return this.connect(sender)['claim()'](); } else { return this.connect(sender)['claim(uint256)'](this.toBigNum(amount)); } } } exports.ERC20Vesting = ERC20Vesting; //# sourceMappingURL=ERC20Vesting.js.map