@trezor/connect
Version:
High-level javascript interface for Trezor hardware wallet.
184 lines (183 loc) • 4.29 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getMiscFeeLevels = exports.getEthereumFeeLevels = exports.getBitcoinFeeLevels = exports.DEFAULT_BITCOIN_LONGTERM_FEE_RATE = void 0;
const utils_1 = require("@trezor/utils");
const BLOCKS_FOR_FEE_LEVEL = {
btc: {
high: 1,
normal: 3,
economy: 6,
low: 36
}
};
const DEFAULT_BLOCK_FOR_FEE_LEVEL = 1;
const getDefaultBlocksForFeeLevel = (shortcut, label) => BLOCKS_FOR_FEE_LEVEL[shortcut] && BLOCKS_FOR_FEE_LEVEL[shortcut][label] ? BLOCKS_FOR_FEE_LEVEL[shortcut][label] : DEFAULT_BLOCK_FOR_FEE_LEVEL;
exports.DEFAULT_BITCOIN_LONGTERM_FEE_RATE = '1';
const EVM_GAS_PRICE_PER_CHAIN_IN_GWEI = {
eth: {
min: 0.1,
max: 10000,
defaultGas: 10,
minPriorityFee: 0
},
pol: {
min: 0.1,
max: 10000000,
defaultGas: 200,
minPriorityFee: 30
},
bsc: {
min: 0.1,
max: 100000,
defaultGas: 1,
minPriorityFee: 0
},
base: {
min: 0.0000001,
max: 1000,
defaultGas: 0.01,
minPriorityFee: 0
},
arb: {
min: 0.001,
max: 1000,
defaultGas: 0.01,
minPriorityFee: 0
},
op: {
min: 0.000000001,
max: 1000,
defaultGas: 0.01,
minPriorityFee: 0
}
};
const getEvmChainGweiGasPrice = chain => EVM_GAS_PRICE_PER_CHAIN_IN_GWEI[chain] ?? {
min: 0.000000001,
max: 10000,
defaultGas: 1,
minPriorityFee: 0
};
const getBitcoinFeeLevels = coin => {
const defaultFees = coin.default_fee_b;
const shortcut = coin.shortcut.toLowerCase();
const keys = (0, utils_1.typedObjectKeys)(defaultFees);
const levels = keys.sort((levelA, levelB) => defaultFees[levelB] - defaultFees[levelA]).map(level => {
const label = level.toLowerCase();
return {
label,
feePerUnit: defaultFees[level].toString(),
blocks: getDefaultBlocksForFeeLevel(shortcut, label)
};
});
const minFee = coin.shortcut === 'BTC' ? coin.minfee_kb / 1000 : Math.round(coin.minfee_kb / 1000);
return {
blockTime: Math.max(1, Math.round(coin.blocktime_seconds / 60)),
dustLimit: coin.dust_limit,
maxFee: Math.round(coin.maxfee_kb / 1000),
minFee,
minPriorityFee: -1,
defaultFees: levels
};
};
exports.getBitcoinFeeLevels = getBitcoinFeeLevels;
const getEthereumFeeLevels = network => {
const {
min,
max,
defaultGas,
minPriorityFee
} = getEvmChainGweiGasPrice(network.chain);
return {
blockTime: Math.max(0.1, Math.round(network.blocktime_seconds)),
defaultFees: [{
label: 'normal',
feePerUnit: new utils_1.BigNumber(defaultGas).multipliedBy('1e+9').toString(),
feeLimit: '21000',
blocks: -1
}],
minFee: min,
maxFee: max,
minPriorityFee,
dustLimit: -1
};
};
exports.getEthereumFeeLevels = getEthereumFeeLevels;
const RIPPLE_FEE_INFO = {
blockTime: -1,
defaultFees: [{
label: 'normal',
feePerUnit: '12',
blocks: -1
}],
minFee: 10,
maxFee: 10000,
minPriorityFee: -1,
dustLimit: -1
};
const CARDANO_FEE_INFO = {
blockTime: -1,
defaultFees: [{
label: 'normal',
feePerUnit: '44',
blocks: -1
}],
minFee: 44,
maxFee: 16384 * 44 + 155381,
minPriorityFee: -1,
dustLimit: -1
};
const SOLANA_FEE_INFO = {
blockTime: -1,
defaultFees: [{
label: 'normal',
feePerUnit: '100000',
feeLimit: '200000',
feePerTx: '25000',
blocks: -1
}],
minFee: 5000,
maxFee: 1000000000,
minPriorityFee: -1,
dustLimit: -1
};
const STELLAR_FEE_INFO = {
blockTime: -1,
defaultFees: [{
label: 'normal',
feePerUnit: '100',
blocks: -1
}],
minFee: 100,
maxFee: 10000000,
minPriorityFee: -1,
dustLimit: -1
};
const MISC_FEE_LEVELS = {
xrp: RIPPLE_FEE_INFO,
txrp: RIPPLE_FEE_INFO,
ada: CARDANO_FEE_INFO,
tada: CARDANO_FEE_INFO,
sol: SOLANA_FEE_INFO,
dsol: SOLANA_FEE_INFO,
xlm: STELLAR_FEE_INFO,
txlm: STELLAR_FEE_INFO
};
const getMiscFeeLevels = data => {
const shortcut = data.shortcut.toLowerCase();
return MISC_FEE_LEVELS[shortcut] || {
blockTime: -1,
minFee: -1,
maxFee: -1,
defaultFees: [{
label: 'normal',
feePerUnit: '-1',
blocks: -1
}],
minPriorityFee: -1,
dustLimit: -1
};
};
exports.getMiscFeeLevels = getMiscFeeLevels;
//# sourceMappingURL=defaultFeeLevels.js.map