UNPKG

@dahlia-labs/use-ethers

Version:
87 lines 3.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getToken = exports.allowanceMulticall = exports.totalSupplyMulticall = exports.decimalsMulticall = exports.symbolMulticall = exports.nameMulticall = exports.balanceOfMulticall = exports.getTokenContract = exports.getTokenContractFromAddress = exports.tokenInterface = exports.getTokenInterface = void 0; const tslib_1 = require("tslib"); const token_utils_1 = require("@dahlia-labs/token-utils"); const abi_1 = require("@ethersproject/abi"); const erc20_json_1 = tslib_1.__importDefault(require("./abis/erc20.json")); const contracts_1 = require("./contracts"); const index_1 = require("./index"); function getTokenInterface() { return new abi_1.Interface(erc20_json_1.default); } exports.getTokenInterface = getTokenInterface; exports.tokenInterface = getTokenInterface(); const getTokenContractFromAddress = (address, provider) => (0, contracts_1.getContract)(address, erc20_json_1.default, provider); exports.getTokenContractFromAddress = getTokenContractFromAddress; const getTokenContract = (token, provider) => (0, contracts_1.getContract)(token.address, erc20_json_1.default, provider); exports.getTokenContract = getTokenContract; const balanceOfMulticall = (token, address) => ({ call: { target: token.address, callData: exports.tokenInterface.encodeFunctionData("balanceOf", [address]), }, parseReturn: (returnData) => new token_utils_1.TokenAmount(token, exports.tokenInterface.decodeFunctionResult("balanceOf", returnData).toString()), }); exports.balanceOfMulticall = balanceOfMulticall; const nameMulticall = (tokenAddress) => ({ call: { target: tokenAddress, callData: exports.tokenInterface.encodeFunctionData("name"), }, parseReturn: (returnData) => exports.tokenInterface.decodeFunctionResult("name", returnData).toString(), }); exports.nameMulticall = nameMulticall; const symbolMulticall = (tokenAddress) => ({ call: { target: tokenAddress, callData: exports.tokenInterface.encodeFunctionData("symbol"), }, parseReturn: (returnData) => exports.tokenInterface.decodeFunctionResult("symbol", returnData).toString(), }); exports.symbolMulticall = symbolMulticall; const decimalsMulticall = (tokenAddress) => ({ call: { target: tokenAddress, callData: exports.tokenInterface.encodeFunctionData("decimals"), }, parseReturn: (returnData) => +exports.tokenInterface.decodeFunctionResult("decimals", returnData).toString(), }); exports.decimalsMulticall = decimalsMulticall; const totalSupplyMulticall = (token) => ({ call: { target: token.address, callData: exports.tokenInterface.encodeFunctionData("totalSupply"), }, parseReturn: (returnData) => new token_utils_1.TokenAmount(token, exports.tokenInterface .decodeFunctionResult("totalSupply", returnData) .toString()), }); exports.totalSupplyMulticall = totalSupplyMulticall; const allowanceMulticall = (token, address, spender) => ({ call: { target: token.address, callData: exports.tokenInterface.encodeFunctionData("allowance", [ address, spender, ]), }, parseReturn: (returnData) => new token_utils_1.TokenAmount(token, exports.tokenInterface.decodeFunctionResult("allowance", returnData).toString()), }); exports.allowanceMulticall = allowanceMulticall; const getToken = async (multicallContract, address, chainId) => { const multicallData = await (0, index_1.fetchMulticalls)([ (0, exports.nameMulticall)(address), (0, exports.symbolMulticall)(address), (0, exports.decimalsMulticall)(address), ], multicallContract); return new token_utils_1.Token({ chainId, address, name: multicallData[0], symbol: multicallData[1], decimals: multicallData[2], }); }; exports.getToken = getToken; //# sourceMappingURL=token.js.map