UNPKG

@ledgerhq/coin-casper

Version:
75 lines 2.96 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getTransactionStatus = void 0; const bignumber_js_1 = __importDefault(require("bignumber.js")); const errors_1 = require("@ledgerhq/errors"); const addresses_1 = require("./bridgeHelpers/addresses"); const transferId_1 = require("./bridgeHelpers/transferId"); const errors_2 = require("../errors"); const consts_1 = require("../consts"); const getTransactionStatus = async (account, transaction) => { const errors = {}; const warnings = {}; const { balance, spendableBalance } = account; const { address } = (0, addresses_1.getAddress)(account); const { recipient, useAllAmount } = transaction; let { amount } = transaction; if (!recipient) { errors.recipient = new errors_1.RecipientRequired(); } else if (!(0, addresses_1.isAddressValid)(recipient)) { errors.recipient = new errors_1.InvalidAddress("", { currencyName: account.currency.name, }); } else if (recipient.toLowerCase() === address.toLowerCase()) { errors.recipient = new errors_1.InvalidAddressBecauseDestinationIsAlsoSource(); } if (!(0, addresses_1.isAddressValid)(address)) { errors.sender = new errors_1.InvalidAddress("", { currencyName: account.currency.name, }); } else if (!(0, transferId_1.isTransferIdValid)(transaction.transferId)) { errors.sender = new errors_2.CasperInvalidTransferId("", { maxTransferId: consts_1.CASPER_MAX_TRANSFER_ID, }); } const estimatedFees = transaction.fees; let totalSpent = new bignumber_js_1.default(0); if (useAllAmount) { totalSpent = account.spendableBalance; amount = totalSpent.minus(estimatedFees); if (amount.lte(0) || totalSpent.gt(balance)) { errors.amount = new errors_1.NotEnoughBalance(); } } if (!useAllAmount) { totalSpent = amount.plus(estimatedFees); if (amount.eq(0)) { errors.amount = new errors_1.AmountRequired(); } if (totalSpent.gt(account.spendableBalance)) { errors.amount = new errors_1.NotEnoughBalance(); } } if (amount.lt(consts_1.CASPER_MINIMUM_VALID_AMOUNT_MOTES) && !errors.amount) { errors.amount = consts_1.InvalidMinimumAmountError; } if (spendableBalance.minus(totalSpent).minus(estimatedFees).lt(consts_1.CASPER_MINIMUM_VALID_AMOUNT_MOTES)) { warnings.amount = consts_1.MayBlockAccountError; } // log("debug", "[getTransactionStatus] finish fn"); return { errors, warnings, estimatedFees, amount, totalSpent, }; }; exports.getTransactionStatus = getTransactionStatus; //# sourceMappingURL=getTransactionStatus.js.map