UNPKG

@tempus-labs/utils

Version:

Tempus utility helpers

46 lines 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ERC20OwnerMintable = void 0; const ContractBase_1 = require("../utils/ContractBase"); const ERC20_1 = require("./ERC20"); /** * Type safe wrapper of ERC20OwnerMintableToken */ class ERC20OwnerMintable extends ERC20_1.ERC20 { constructor(contractName, decimals, contract) { super(contractName, decimals, contract); } static async create(contractName, name, symbol) { const contract = await this.deployContract(contractName, name, symbol); return new ERC20OwnerMintable(contractName, 18, contract); } /** @returns The manager who is allowed to mint and burn. */ async manager() { return await this.contract.manager(); } /** * @param sender Account that is issuing the mint. Must be manager(). * @param receiver Recipient address to mint tokens to * @param amount Number of tokens to mint */ async mint(sender, receiver, amount) { await this.connect(sender).mint((0, ContractBase_1.addressOf)(receiver), this.toBigNum(amount)); } /** * @param sender Account that is issuing the burn. Must be manager(). * @param amount Number of tokens to burn */ async burn(sender, amount) { await this.connect(sender).burn(this.toBigNum(amount)); } /** * @param sender Account that is issuing the burn. Must be manager(). * @param account Source address to burn tokens from * @param amount Number of tokens to burn */ async burnFrom(sender, account, amount) { await this.connect(sender).burnFrom((0, ContractBase_1.addressOf)(account), this.toBigNum(amount)); } } exports.ERC20OwnerMintable = ERC20OwnerMintable; //# sourceMappingURL=ERC20OwnerMintable.js.map