@ledgerhq/coin-tezos
Version:
57 lines • 2.62 kB
JavaScript
;
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