@tempus-labs/utils
Version:
Tempus utility helpers
46 lines • 1.85 kB
JavaScript
;
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