UNPKG

@tatumio/tatum-v1

Version:

Tatum API client allows browsers and Node.js clients to interact with Tatum API.

91 lines 6.96 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.sendCeloOffchainTransaction = void 0; const bignumber_js_1 = __importDefault(require("bignumber.js")); const web3_utils_1 = require("web3-utils"); const tatum_1 = require("../connector/tatum"); const constants_1 = require("../constants"); const ledger_1 = require("../ledger"); const model_1 = require("../model"); const TransferCeloOffchain_1 = require("../model/request/TransferCeloOffchain"); const transaction_1 = require("../transaction"); const wallet_1 = require("../wallet"); const common_1 = require("./common"); const kms_1 = require("./kms"); /** * Send Celo transaction from Tatum Ledger account to the blockchain. This method broadcasts signed transaction to the blockchain. * This operation is irreversible. * @param testnet mainnet or testnet version * @param body content of the transaction to broadcast * @param provider url of the Celo Server to connect to. If not set, default public server will be used. * @returns transaction id of the transaction in the blockchain or id of the withdrawal, if it was not cancelled automatically */ const sendCeloOffchainTransaction = async (testnet, body, provider) => { if (body.signatureId) { return kms_1.offchainTransferCeloKMS(body); } await tatum_1.validateBody(body, TransferCeloOffchain_1.TransferCeloOffchain); const { mnemonic, index, privateKey, gasLimit, gasPrice, nonce, feeCurrency } = body, withdrawal = __rest(body, ["mnemonic", "index", "privateKey", "gasLimit", "gasPrice", "nonce", "feeCurrency"]); const { amount, address } = withdrawal; const fromPriv = mnemonic && index !== undefined ? await wallet_1.generatePrivateKeyFromMnemonic(model_1.Currency.CELO, testnet, mnemonic, index) : privateKey; const account = await ledger_1.getAccountById(withdrawal.senderAccountId); let txData; const fee = { gasLimit: gasLimit || '150000', gasPrice: gasPrice || '0.5', }; if (constants_1.CELO_BASED_CURRENCIES.includes(account.currency)) { txData = await transaction_1.prepareCeloOrCUsdSignedTransaction(testnet, { amount, fromPrivateKey: fromPriv, currency: account.currency, feeCurrency, nonce, to: address }, provider); } else { const vc = await ledger_1.getVirtualCurrencyByName(account.currency); txData = await transaction_1.prepareCeloTransferErc20SignedTransaction(testnet, { amount, feeCurrency, fromPrivateKey: fromPriv, to: address, nonce, contractAddress: vc.erc20Address }, provider); } // @ts-ignore withdrawal.fee = web3_utils_1.fromWei(new bignumber_js_1.default(fee.gasLimit).multipliedBy(web3_utils_1.toWei(fee.gasPrice, 'gwei')).toString(), 'ether'); const { id } = await common_1.offchainStoreWithdrawal(withdrawal); try { return Object.assign(Object.assign({}, await common_1.offchainBroadcast({ txData, withdrawalId: id, currency: model_1.Currency.CELO })), { id }); } catch (e) { console.error(e); try { await common_1.offchainCancelWithdrawal(id); } catch (e1) { console.log(e); return { id }; } throw e; } }; exports.sendCeloOffchainTransaction = sendCeloOffchainTransaction; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Vsby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vZmZjaGFpbi9jZWxvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0VBQW9DO0FBQ3BDLDJDQUF5QztBQUN6Qyw4Q0FBK0M7QUFDL0MsNENBQWtEO0FBQ2xELHNDQUFrRTtBQUNsRSxvQ0FBaUM7QUFDakMsZ0ZBQTBFO0FBQzFFLGdEQUE0RztBQUM1RyxzQ0FBd0Q7QUFDeEQscUNBQTZGO0FBQzdGLCtCQUErQztBQUUvQzs7Ozs7OztHQU9HO0FBQ0ksTUFBTSwyQkFBMkIsR0FBRyxLQUFLLEVBQUUsT0FBZ0IsRUFBRSxJQUEwQixFQUFFLFFBQWlCLEVBQUUsRUFBRTtJQUNqSCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDbEIsT0FBTyw2QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQTtLQUN2QztJQUNELE1BQU0sb0JBQVksQ0FBQyxJQUFJLEVBQUUsMkNBQW9CLENBQUMsQ0FBQTtJQUM5QyxNQUFNLEVBQ0YsUUFBUSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsV0FBVyxLQUNuRSxJQUFJLEVBRG9FLFVBQVUsVUFDbEYsSUFBSSxFQUZGLG1GQUVMLENBQU8sQ0FBQTtJQUNSLE1BQU0sRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFDLEdBQUcsVUFBVSxDQUFBO0lBRXBDLE1BQU0sUUFBUSxHQUFHLFFBQVEsSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLHVDQUE4QixDQUFDLGdCQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQW9CLENBQUE7SUFFdkosTUFBTSxPQUFPLEdBQUcsTUFBTSx1QkFBYyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUNoRSxJQUFJLE1BQU0sQ0FBQTtJQUNWLE1BQU0sR0FBRyxHQUFHO1FBQ1IsUUFBUSxFQUFFLFFBQVEsSUFBSSxRQUFRO1FBQzlCLFFBQVEsRUFBRSxRQUFRLElBQUksS0FBSztLQUM5QixDQUFBO0lBQ0QsSUFBSSxpQ0FBcUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ2xELE1BQU0sR0FBRyxNQUFNLGdEQUFrQyxDQUFDLE9BQU8sRUFBRTtZQUN2RCxNQUFNO1lBQ04sY0FBYyxFQUFFLFFBQVE7WUFDeEIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFvQjtZQUN0QyxXQUFXO1lBQ1gsS0FBSztZQUNMLEVBQUUsRUFBRSxPQUFPO1NBQ2QsRUFBRSxRQUFRLENBQUMsQ0FBQTtLQUNmO1NBQU07UUFDSCxNQUFNLEVBQUUsR0FBRyxNQUFNLGlDQUF3QixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUMzRCxNQUFNLEdBQUcsTUFBTSx1REFBeUMsQ0FBQyxPQUFPLEVBQUU7WUFDOUQsTUFBTTtZQUNOLFdBQVc7WUFDWCxjQUFjLEVBQUUsUUFBUTtZQUN4QixFQUFFLEVBQUUsT0FBTztZQUNYLEtBQUs7WUFDTCxlQUFlLEVBQUUsRUFBRSxDQUFDLFlBQXNCO1NBQzdDLEVBQUUsUUFBUSxDQUFDLENBQUE7S0FDZjtJQUNELGFBQWE7SUFDYixVQUFVLENBQUMsR0FBRyxHQUFHLG9CQUFPLENBQUMsSUFBSSxzQkFBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsa0JBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDbkgsTUFBTSxFQUFDLEVBQUUsRUFBQyxHQUFHLE1BQU0sZ0NBQXVCLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDdEQsSUFBSTtRQUNBLHVDQUFXLE1BQU0sMEJBQWlCLENBQUMsRUFBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsZ0JBQVEsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxLQUFFLEVBQUUsSUFBQztLQUMvRjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNoQixJQUFJO1lBQ0EsTUFBTSxpQ0FBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQTtTQUNyQztRQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNkLE9BQU8sRUFBQyxFQUFFLEVBQUMsQ0FBQTtTQUNkO1FBQ0QsTUFBTSxDQUFDLENBQUE7S0FDVjtBQUNMLENBQUMsQ0FBQTtBQXJEWSxRQUFBLDJCQUEyQiwrQkFxRHZDIn0=