UNPKG

@dolomite-exchange/dolomite-margin

Version:

Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol

113 lines 5.28 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Token = void 0; const bignumber_js_1 = __importDefault(require("bignumber.js")); const Constants_1 = require("../lib/Constants"); // noinspection TypeScriptUnresolvedFunction class Token { constructor(contracts) { this.contracts = contracts; this.tokens = {}; } async getAllowance(tokenAddress, ownerAddress, spenderAddress, options) { const token = this.getToken(tokenAddress); const allowStr = await this.contracts.callConstantContractFunction(token.methods.allowance(ownerAddress, spenderAddress), options); return new bignumber_js_1.default(allowStr); } async getBalance(tokenAddress, ownerAddress, options) { const token = this.getToken(tokenAddress); const balStr = await this.contracts.callConstantContractFunction(token.methods.balanceOf(ownerAddress), options); return new bignumber_js_1.default(balStr); } async getTotalSupply(tokenAddress, options) { const token = this.getToken(tokenAddress); const supplyStr = await this.contracts.callConstantContractFunction(token.methods.totalSupply(), options); return new bignumber_js_1.default(supplyStr); } async getName(tokenAddress, options) { const token = this.getToken(tokenAddress); // @ts-ignore return this.contracts.callConstantContractFunction(token.methods['name'](), options); } async getSymbol(tokenAddress, options) { const token = this.getToken(tokenAddress); // @ts-ignore return this.contracts.callConstantContractFunction(token.methods['symbol'](), options); } async getDecimals(tokenAddress, options) { const token = this.getToken(tokenAddress); // @ts-ignore const decStr = await this.contracts.callConstantContractFunction(token.methods['decimals'](), options); return new bignumber_js_1.default(decStr); } async getDolomiteMarginAllowance(tokenAddress, ownerAddress, options) { return this.getAllowance(tokenAddress, ownerAddress, this.contracts.dolomiteMargin.options.address, options); } async setAllowance(tokenAddress, ownerAddress, spenderAddress, amount, options = {}) { const token = this.getToken(tokenAddress); return this.contracts.callContractFunction(token.methods.approve(spenderAddress, amount.toFixed(0)), { ...options, from: ownerAddress }); } async setDolomiteMarginllowance(tokenAddress, ownerAddress, amount, options = {}) { return this.setAllowance(tokenAddress, ownerAddress, this.contracts.dolomiteMargin.options.address, amount, options); } async setMaximumAllowance(tokenAddress, ownerAddress, spenderAddress, options = {}) { return this.setAllowance(tokenAddress, ownerAddress, spenderAddress, Constants_1.INTEGERS.ONES_255, options); } async setMaximumDolomiteMarginAllowance(tokenAddress, ownerAddress, options = {}) { return this.setAllowance(tokenAddress, ownerAddress, this.contracts.dolomiteMargin.options.address, Constants_1.INTEGERS.ONES_255, options); } async unsetDolomiteMarginAllowance(tokenAddress, ownerAddress, options = {}) { return this.setAllowance(tokenAddress, ownerAddress, this.contracts.dolomiteMargin.options.address, Constants_1.INTEGERS.ZERO, options); } async transfer(tokenAddress, fromAddress, toAddress, amount, options = {}) { const token = this.getToken(tokenAddress); return this.contracts.callContractFunction(token.methods.transfer(toAddress, amount.toFixed(0)), { ...options, from: fromAddress }); } async transferFrom(tokenAddress, fromAddress, toAddress, senderAddress, amount, options = {}) { const token = this.getToken(tokenAddress); return this.contracts.callContractFunction(token.methods.transferFrom(fromAddress, toAddress, amount.toFixed(0)), { ...options, from: senderAddress }); } subscribeToTransfers(tokenAddress, { from, to, fromBlock, } = {}) { const token = this.getToken(tokenAddress); const filter = {}; if (from) { filter.from = from; } if (to) { filter.to = to; } return token.events.Transfer({ filter, fromBlock, }); } subscribeToApprovals(tokenAddress, { owner, spender, fromBlock, } = {}) { const token = this.getToken(tokenAddress); const filter = {}; if (owner) { filter.owner = owner; } if (spender) { filter.spender = spender; } return token.events.Approval({ filter, fromBlock, }); } getToken(tokenAddress) { if (this.tokens[tokenAddress]) { return this.tokens[tokenAddress]; } const token = this.contracts.erc20; const contract = token.clone(); contract.options.address = tokenAddress; this.tokens[tokenAddress] = contract; return contract; } } exports.Token = Token; //# sourceMappingURL=Token.js.map