@tatumio/tatum-v1
Version:
Tatum API client allows browsers and Node.js clients to interact with Tatum API.
102 lines • 7.73 kB
JavaScript
;
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;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.sendTronOffchainTransaction = void 0;
const tatum_1 = require("../connector/tatum");
const constants_1 = require("../constants");
const ledger_1 = require("../ledger");
const request_1 = require("../model/request");
const transaction_1 = require("../transaction");
const wallet_1 = require("../wallet");
const common_1 = require("./common");
const kms_1 = require("./kms");
/**
* Send Tron 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
* @returns transaction id of the transaction in the blockchain or id of the withdrawal, if it was not cancelled automatically
*/
const sendTronOffchainTransaction = async (testnet, body) => {
if (body.signatureId) {
return kms_1.offchainTransferTronKMS(body);
}
await tatum_1.validateBody(body, request_1.TransferTrxOffchain);
const { mnemonic, index, fromPrivateKey } = body, withdrawal = __rest(body, ["mnemonic", "index", "fromPrivateKey"]);
const { amount, address } = withdrawal;
let fromPriv;
if (mnemonic && index !== undefined) {
fromPriv = mnemonic && index ? await wallet_1.generatePrivateKeyFromMnemonic(request_1.Currency.TRON, testnet, mnemonic, index) : fromPrivateKey;
}
else if (fromPrivateKey) {
fromPriv = fromPrivateKey;
}
else {
throw new Error('No mnemonic or private key is present.');
}
withdrawal.fee = withdrawal.fee || '2.5';
const account = await ledger_1.getAccountById(withdrawal.senderAccountId);
let txData;
if (account.currency === request_1.Currency.TRON) {
txData = await transaction_1.prepareTronSignedTransaction(testnet, { amount, fromPrivateKey: fromPriv, to: address });
}
else if (account.currency === request_1.Currency.USDT_TRON || account.currency === request_1.Currency.INRT_TRON) {
txData = await transaction_1.prepareTronTrc20SignedTransaction(testnet, {
amount,
fromPrivateKey: fromPriv,
to: address,
tokenAddress: constants_1.CONTRACT_ADDRESSES[account.currency],
feeLimit: parseFloat(withdrawal.fee),
});
}
else {
const vc = await ledger_1.getVirtualCurrencyByName(account.currency);
if (vc.trcType === request_1.TrcType.TRC10) {
txData = await transaction_1.prepareTronTrc10SignedTransaction(testnet, {
amount,
fromPrivateKey: fromPriv,
to: address,
tokenId: vc.erc20Address,
}, vc.precision);
}
else if (vc.trcType === request_1.TrcType.TRC20) {
txData = await transaction_1.prepareTronTrc20SignedTransaction(testnet, {
amount,
feeLimit: parseFloat(withdrawal.fee),
fromPrivateKey: fromPriv,
to: address,
tokenAddress: vc.erc20Address
});
}
else {
throw new Error('Unsupported account.');
}
}
const { id } = await common_1.offchainStoreWithdrawal(withdrawal);
try {
return Object.assign(Object.assign({}, await common_1.offchainBroadcast({ txData, withdrawalId: id, currency: request_1.Currency.TRON })), { id });
}
catch (e) {
console.error(e);
try {
await common_1.offchainCancelWithdrawal(id);
}
catch (e1) {
console.log(e);
return { id };
}
throw e;
}
};
exports.sendTronOffchainTransaction = sendTronOffchainTransaction;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vZmZjaGFpbi90cm9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOENBQStDO0FBQy9DLDRDQUErQztBQUMvQyxzQ0FBa0U7QUFDbEUsOENBQXVFO0FBQ3ZFLGdEQUFpSTtBQUNqSSxzQ0FBd0Q7QUFDeEQscUNBQTZGO0FBQzdGLCtCQUErQztBQUUvQzs7Ozs7O0dBTUc7QUFDSSxNQUFNLDJCQUEyQixHQUFHLEtBQUssRUFBRSxPQUFnQixFQUFFLElBQXlCLEVBQUUsRUFBRTtJQUM3RixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDbEIsT0FBTyw2QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQTtLQUN2QztJQUNELE1BQU0sb0JBQVksQ0FBQyxJQUFJLEVBQUUsNkJBQW1CLENBQUMsQ0FBQTtJQUM3QyxNQUFNLEVBQ0YsUUFBUSxFQUFFLEtBQUssRUFBRSxjQUFjLEtBQy9CLElBQUksRUFEZ0MsVUFBVSxVQUM5QyxJQUFJLEVBRkYsdUNBRUwsQ0FBTyxDQUFBO0lBQ1IsTUFBTSxFQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUMsR0FBRyxVQUFVLENBQUE7SUFFcEMsSUFBSSxRQUFnQixDQUFBO0lBQ3BCLElBQUksUUFBUSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7UUFDakMsUUFBUSxHQUFHLFFBQVEsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sdUNBQThCLENBQUMsa0JBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBd0IsQ0FBQTtLQUMxSTtTQUFNLElBQUksY0FBYyxFQUFFO1FBQ3ZCLFFBQVEsR0FBRyxjQUFjLENBQUE7S0FDNUI7U0FBTTtRQUNILE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQTtLQUM1RDtJQUVELFVBQVUsQ0FB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