UNPKG

@bcpros/crypto-wallet-core

Version:

A multi-currency support library for address derivation, private key creation, and transaction creation

47 lines 1.96 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ERC20TxProvider = void 0; const web3_1 = __importDefault(require("web3")); const eth_1 = require("../eth"); const abi_1 = require("./abi"); const { toBN } = web3_1.default.utils; class ERC20TxProvider extends eth_1.ETHTxProvider { getERC20Contract(tokenContractAddress) { const web3 = new web3_1.default(); const contract = new web3.eth.Contract(abi_1.ERC20Abi, tokenContractAddress); return contract; } create(params) { const { tokenAddress, contractAddress } = params; const data = this.encodeData(params); const recipients = [{ address: contractAddress || tokenAddress, amount: '0' }]; const newParams = { ...params, recipients, data }; return super.create(newParams); } encodeData(params) { const { tokenAddress, recipients, contractAddress } = params; if (recipients.length > 1) { const addresses = []; const amounts = []; for (let recipient of recipients) { addresses.push(recipient.address); amounts.push(toBN(BigInt(recipient.amount).toString())); } const multisendContract = this.getMultiSendContract(contractAddress); return multisendContract.methods.sendErc20(tokenAddress, addresses, amounts).encodeABI(); } else { const [{ address, amount }] = params.recipients; const amountBN = toBN(BigInt(amount).toString()); const data = this.getERC20Contract(tokenAddress) .methods.transfer(address, amountBN) .encodeABI(); return data; } } } exports.ERC20TxProvider = ERC20TxProvider; //# sourceMappingURL=index.js.map