UNPKG

@ledgerhq/coin-tezos

Version:
57 lines 2.62 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.prepareTransaction = void 0; const bignumber_js_1 = __importDefault(require("bignumber.js")); const logic_1 = require("../logic"); const getFeesForTransaction_1 = __importDefault(require("./getFeesForTransaction")); const config_1 = __importDefault(require("../config")); function bnEq(a, b) { return !a && !b ? true : !a || !b ? false : a.eq(b); } function maxBigNumber(a, b) { return a.isGreaterThan(b) ? a : b; } const prepareTransaction = async (account, transaction) => { if (account.balance.lte(0)) { return Promise.resolve(transaction); } // basic check to confirm the transaction is "complete" if (transaction.mode !== "undelegate") { if (!transaction.recipient) { return Promise.resolve(transaction); } const { recipientError } = await (0, logic_1.validateRecipient)(transaction.recipient); if (recipientError) { return Promise.resolve(transaction); } } const estimation = await (0, getFeesForTransaction_1.default)({ account, transaction }); const minGasLimit = config_1.default.getCoinConfig().fees.minGasLimit; const minStorageLimit = config_1.default.getCoinConfig().fees.minStorageLimit; const minFees = config_1.default.getCoinConfig().fees.minFees; const minEstimatedFees = config_1.default.getCoinConfig().fees.minEstimatedFees; estimation.gasLimit = maxBigNumber(estimation.gasLimit, new bignumber_js_1.default(minGasLimit)); estimation.storageLimit = maxBigNumber(estimation.storageLimit, new bignumber_js_1.default(minStorageLimit)); estimation.fees = maxBigNumber(estimation.fees, new bignumber_js_1.default(minFees)); estimation.estimatedFees = maxBigNumber(estimation.estimatedFees, new bignumber_js_1.default(minEstimatedFees)); const tx = { ...transaction, ...estimation, }; // nothing changed if (bnEq(tx.estimatedFees, transaction.estimatedFees) && bnEq(tx.fees, transaction.fees) && bnEq(tx.gasLimit, transaction.gasLimit) && bnEq(tx.storageLimit, transaction.storageLimit) && bnEq(tx.amount, transaction.amount) && tx.taquitoError === transaction.taquitoError) { return transaction; } return tx; }; exports.prepareTransaction = prepareTransaction; exports.default = exports.prepareTransaction; //# sourceMappingURL=prepareTransaction.js.map