emmet.sdk
Version:
Emmet.Bridge SDK library
40 lines • 1.75 kB
JavaScript
;
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