1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-25 03:20:23 +01:00
metamask-extension/shared/constants/gas.ts

115 lines
3.2 KiB
TypeScript
Raw Normal View History

2021-06-08 17:25:48 +02:00
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);
2021-06-08 17:25:48 +02:00
export const GAS_LIMITS = {
// maximum gasLimit of a simple send
2021-10-19 21:31:56 +02:00
SIMPLE: addHexPrefix(MIN_GAS_LIMIT_HEX),
2021-06-08 17:25:48 +02:00
// a base estimate for token transfers.
BASE_TOKEN_ESTIMATE: addHexPrefix(ONE_HUNDRED_THOUSAND.toString(16)),
2021-06-08 17:25:48 +02:00
};
2021-07-08 22:23:00 +02:00
2022-05-25 22:54:05 +02:00
/**
* @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.
2022-05-25 22:54:05 +02:00
* @property {'none'} NONE - No gas estimate available.
*/
2021-07-08 22:23:00 +02:00
/**
* 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
2022-05-25 22:54:05 +02:00
*
* (TODO: This comment was added before @metamask/controllers was split up
* revisit now that @metamask/gas-fee-controller is available)
*
2022-05-25 22:54:05 +02:00
* @type {GasEstimateTypes}
2021-07-08 22:23:00 +02:00
*/
export enum GasEstimateTypes {
feeMarket = 'fee-market',
legacy = 'legacy',
ethGasPrice = 'eth_gasPrice',
none = 'none',
}
/**
* These represent gas recommendation levels presented in the UI
*/
export enum GasRecommendations {
low = 'low',
medium = 'medium',
high = 'high',
}
/**
* These represent types of gas estimation
*/
export enum PriorityLevels {
tenPercentIncreased = 'tenPercentIncreased',
low = 'low',
medium = 'medium',
high = 'high',
custom = 'custom',
dAppSuggested = 'dappSuggested',
When gas fees suggested by dapp is too high, show warning color and icon (#19088) * When gas fees suggested by dapp is too high, show warning color and icon Signed-off-by: Olusegun Akintayo <akintayo.segun@gmail.com> tests Signed-off-by: Olusegun Akintayo <akintayo.segun@gmail.com> Fix tests Signed-off-by: Olusegun Akintayo <akintayo.segun@gmail.com> set a default for high gas fees Signed-off-by: Olusegun Akintayo <akintayo.segun@gmail.com> Fix test cases where transaction is undefined. Signed-off-by: Olusegun Akintayo <akintayo.segun@gmail.com> Fix locale error Signed-off-by: Olusegun Akintayo <akintayo.segun@gmail.com> Fix error where dappSuggestedGasFees is null Signed-off-by: Olusegun Akintayo <akintayo.segun@gmail.com> Fix icon for site suggested Signed-off-by: Olusegun Akintayo <akintayo.segun@gmail.com> Fix unit tests snapshot Signed-off-by: Olusegun Akintayo <akintayo.segun@gmail.com> * Fix QA Comments Signed-off-by: Olusegun Akintayo <akintayo.segun@gmail.com> * lint:fix Signed-off-by: Olusegun Akintayo <akintayo.segun@gmail.com> * Fix unit tests Signed-off-by: Olusegun Akintayo <akintayo.segun@gmail.com> * Fix PR comments Signed-off-by: Olusegun Akintayo <akintayo.segun@gmail.com> * Lint fix Signed-off-by: Olusegun Akintayo <akintayo.segun@gmail.com> * Fix PR comment. - call setEstimateUsed only once. Signed-off-by: Olusegun Akintayo <akintayo.segun@gmail.com> * use constants for Priority levels. Signed-off-by: Olusegun Akintayo <akintayo.segun@gmail.com> --------- Signed-off-by: Olusegun Akintayo <akintayo.segun@gmail.com>
2023-06-08 12:26:18 +02:00
dappSuggestedHigh = 'dappSuggestedHigh',
}
/**
* Represents the user customizing their gas preference
*/
export const CUSTOM_GAS_ESTIMATE = 'custom';
/**
* These represent the different edit modes presented in the UI
*/
export enum EditGasModes {
speedUp = 'speed-up',
cancel = 'cancel',
modifyInPlace = '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 enum NetworkCongestionThresholds {
notBusy = 0,
stable = 0.33,
busy = 0.66,
}
export interface TxGasFees {
/** Maxmimum number of units of gas to use for this transaction. */
gasLimit: string;
/** Price per gas for legacy txs */
gasPrice: string;
/**
* Maximum amount per gas to pay for the transaction, including the priority
* fee.
*/
maxFeePerGas: string;
/** Maximum amount per gas to give to validator as incentive. */
maxPriorityFeePerGas: string;
/** Which estimate level was used */
estimateUsed: string;
/** Which estimate level that the API suggested. */
estimateSuggested: string;
/** The default estimate for gas. */
defaultGasEstimates: string;
/** same as gasLimit? */
gas: string;
/** Original estimate for gas. */
originalGasEstimate: string;
/** The gas limit supplied by user. */
userEditedGasLimit: string;
/** Estimate level user selected. */
userFeeLevel: string;
}