UNPKG

emmet.sdk

Version:
40 lines 1.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.transferERC20 = void 0; const types_1 = require("../../types"); const format_1 = require("../format"); const verifiers_1 = require("../verifiers"); const getBridgeContract_1 = require("./getBridgeContract"); const getMetamaskProvider_1 = require("./getMetamaskProvider"); async function transferERC20(fromChain, toChainName, tokenName, amount, receiver) { try { const ethereum = (0, getMetamaskProvider_1.getMetamaskProvider)(); const [account] = await ethereum.request({ method: 'eth_requestAccounts' }); const contract = await (0, getBridgeContract_1.getBridgeContract)(fromChain, account); const chainId = types_1.BridgeChainIds[(0, format_1.formatChainName)(toChainName).toLowerCase()]; const args = [[ BigInt(amount), chainId, tokenName.toUpperCase(), receiver ]]; const receipt = (0, verifiers_1.isThisChainsNativeCoin)(tokenName.toUpperCase(), fromChain, 'testnet') ? await contract.functions.sendInstallment(...args, { value: amount }) : await contract.functions.sendInstallment(...args); const result = await receipt.wait(); if (result) { const hash = result.transactionHash; const status = result.status; return { hash, status, amount }; } else { throw new Error("Failed to receive the transfer transaction response"); } } catch (error) { console.error(error); return { hash: '', status: 0, amount: '' }; } } exports.transferERC20 = transferERC20; //# sourceMappingURL=transferERC20.js.map