import { addHexPrefix } from 'ethereumjs-util'; const ONE_HUNDRED_THOUSAND = 100000; const MIN_GAS_LIMIT_DEC = '21000'; export const MIN_GAS_LIMIT_HEX = parseInt(MIN_GAS_LIMIT_DEC, 10).toString(16); export const GAS_LIMITS = { // maximum gasLimit of a simple send SIMPLE: addHexPrefix(MIN_GAS_LIMIT_HEX), // a base estimate for token transfers. BASE_TOKEN_ESTIMATE: addHexPrefix(ONE_HUNDRED_THOUSAND.toString(16)), }; /** * @typedef {object} GasEstimateTypes * @property {'fee-market'} FEE_MARKET - A gas estimate for a fee market * transaction generated by our gas estimation API. * @property {'legacy'} LEGACY - A gas estimate for a legacy Transaction * generated by our gas estimation API. * @property {'eth_gasPrice'} ETH_GAS_PRICE - A gas estimate provided by the * Ethereum node via eth_gasPrice. * @property {'none'} NONE - No gas estimate available. */ /** * These are already declared in @metamask/controllers but importing them from * that module and re-exporting causes the UI bundle size to expand beyond 4MB * * (TODO: This comment was added before @metamask/controllers was split up — * revisit now that @metamask/gas-fee-controller is available) * * @type {GasEstimateTypes} */ export const GAS_ESTIMATE_TYPES = { FEE_MARKET: 'fee-market', LEGACY: 'legacy', ETH_GASPRICE: 'eth_gasPrice', NONE: 'none', }; /** * These represent gas recommendation levels presented in the UI */ export const GAS_RECOMMENDATIONS = { LOW: 'low', MEDIUM: 'medium', HIGH: 'high', }; /** * These represent types of gas estimation */ export const PRIORITY_LEVELS = { TEN_PERCENT_INCREASED: 'tenPercentIncreased', LOW: 'low', MEDIUM: 'medium', HIGH: 'high', CUSTOM: 'custom', DAPP_SUGGESTED: 'dappSuggested', }; /** * Represents the user customizing their gas preference */ export const CUSTOM_GAS_ESTIMATE = 'custom'; /** * These represent the different edit modes presented in the UI */ export const EDIT_GAS_MODES = { SPEED_UP: 'speed-up', CANCEL: 'cancel', MODIFY_IN_PLACE: 'modify-in-place', SWAPS: 'swaps', }; /** * Represents levels for `networkCongestion` (calculated along with gas fee * estimates; represents a number between 0 and 1) that we use to render the * network status slider on the send transaction screen and inform users when * gas fees are high */ export const NETWORK_CONGESTION_THRESHOLDS = { NOT_BUSY: 0, STABLE: 0.33, BUSY: 0.66, };