UNPKG

@trezor/connect

Version:

High-level javascript interface for Trezor hardware wallet.

71 lines 2.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EthereumFeeLevels = void 0; const bigNumber_1 = require("@trezor/utils/lib/bigNumber"); const MiscFees_1 = require("../common/MiscFees"); class EthereumFeeLevels extends MiscFees_1.MiscFeeLevels { coinInfo; levels; blocks = []; constructor(coinInfo) { super(coinInfo); this.coinInfo = coinInfo; this.levels = coinInfo.defaultFees; } async load(blockchain) { try { const [response] = await blockchain.estimateFee({ blocks: [1] }); if (response.eip1559) { const eip1559ResponseLevelKeys = [ 'low', 'medium', 'high', ]; const { eip1559 } = response; const eip1559Levels = eip1559ResponseLevelKeys.map(levelKey => { const level = eip1559[levelKey]; const calculatedMaxFeePerGas = bigNumber_1.BigNumber.minimum(new bigNumber_1.BigNumber(level?.maxFeePerGas || '0'), new bigNumber_1.BigNumber(eip1559.baseFeePerGas || '0').plus(level?.maxPriorityFeePerGas || '0')).toFixed(); const label = levelKey === 'medium' ? 'normal' : levelKey; return { label, maxFeePerGas: level?.maxFeePerGas || '0', effectiveGasPrice: calculatedMaxFeePerGas, maxPriorityFeePerGas: level?.maxPriorityFeePerGas || '0', baseFeePerGas: eip1559.baseFeePerGas, minWaitTimeEstimate: level?.minWaitTimeEstimate ? level.minWaitTimeEstimate / 1000 : undefined, maxWaitTimeEstimate: level?.maxWaitTimeEstimate ? level.maxWaitTimeEstimate / 1000 : undefined, feePerUnit: '0', feeLimit: response.feeLimit, blocks: -1, }; }); this.levels = [...eip1559Levels]; } else { super.load(blockchain); } } catch { } return this.levels; } updateEthereumCustomFee(feePerUnit, effectiveGasPrice, maxPriorityFeePerGas) { this.levels = this.levels.filter(l => l.label !== 'custom'); const blocks = (0, MiscFees_1.findBlocksForFee)(feePerUnit, this.blocks); this.levels.push({ label: 'custom', feePerUnit, blocks, maxPriorityFeePerGas, effectiveGasPrice, }); } } exports.EthereumFeeLevels = EthereumFeeLevels; //# sourceMappingURL=EthereumFees.js.map