UNPKG

@ledgerhq/live-common

Version:
119 lines 4.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fees = void 0; const bignumber_js_1 = require("bignumber.js"); function isRecord(value) { return typeof value === "object" && value !== null; } function isBigNumber(value) { return bignumber_js_1.BigNumber.isBigNumber(value); } function getSuggestedFeePerByteRange(transaction) { const networkInfo = transaction.networkInfo; if (!isRecord(networkInfo)) return null; const feeItems = networkInfo.feeItems; if (!isRecord(feeItems) || !Array.isArray(feeItems.items)) return null; const items = feeItems.items .filter((item) => { if (!isRecord(item)) return false; return typeof item.speed === "string" && isBigNumber(item.feePerByte); }) .map(item => item.feePerByte); if (items.length === 0) return null; const min = bignumber_js_1.BigNumber.min(...items); const max = bignumber_js_1.BigNumber.max(...items); return { min: min.toFixed(), max: max.toFixed(), }; } exports.fees = { hasPresets: true, hasCustom: true, hasCoinControl: true, presets: { legend: { type: "feeRate", unit: "sat/vbyte", valueFrom: "presetAmount" }, strategyLabelInAmount: "legend", getOptions: transaction => { if (!isRecord(transaction)) { return []; } const networkInfo = transaction.networkInfo; if (!isRecord(networkInfo)) { return []; } const feeItems = networkInfo.feeItems; if (!isRecord(feeItems) || !Array.isArray(feeItems.items)) { return []; } const items = feeItems.items .filter((item) => { if (!isRecord(item)) return false; return typeof item.speed === "string" && isBigNumber(item.feePerByte); }) .map(item => ({ speed: item.speed, feePerByte: item.feePerByte })); if (items.length === 0) { return []; } return [...items].reverse().map(item => ({ id: item.speed, amount: item.feePerByte, })); }, shouldEstimateWithBridge: () => true, }, custom: { inputs: [ { key: "feePerByte", type: "number", unitLabel: "sat/vbyte", suggestedRange: { getRange: transaction => { if (!isRecord(transaction)) return null; return getSuggestedFeePerByteRange(transaction); }, }, }, ], getInitialValues: (transaction) => { const empty = {}; if (!isRecord(transaction)) return empty; const feePerByte = transaction.feePerByte; if (isBigNumber(feePerByte) && feePerByte.gt(0)) { return { feePerByte: feePerByte.toFixed(), }; } const networkInfo = transaction.networkInfo; if (isRecord(networkInfo) && isRecord(networkInfo.feeItems)) { const medium = networkInfo.feeItems.medium; if (isBigNumber(medium) && medium.gt(0)) { return { feePerByte: medium.toFixed(), }; } } return { feePerByte: "", }; }, buildTransactionPatch: values => { const feePerByte = new bignumber_js_1.BigNumber(values.feePerByte); return { feesStrategy: "custom", feePerByte: feePerByte.isNaN() || feePerByte.isNegative() ? new bignumber_js_1.BigNumber(0) : feePerByte.integerValue(bignumber_js_1.BigNumber.ROUND_DOWN), }; }, }, }; //# sourceMappingURL=fees.js.map