@metamask/transaction-controller 51.0.0 → 52.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/CHANGELOG.md +24 -1
  2. package/dist/TransactionController.cjs +30 -28
  3. package/dist/TransactionController.cjs.map +1 -1
  4. package/dist/TransactionController.d.cts +6 -3
  5. package/dist/TransactionController.d.cts.map +1 -1
  6. package/dist/TransactionController.d.mts +6 -3
  7. package/dist/TransactionController.d.mts.map +1 -1
  8. package/dist/TransactionController.mjs +31 -29
  9. package/dist/TransactionController.mjs.map +1 -1
  10. package/dist/helpers/AccountsApiRemoteTransactionSource.cjs +3 -8
  11. package/dist/helpers/AccountsApiRemoteTransactionSource.cjs.map +1 -1
  12. package/dist/helpers/AccountsApiRemoteTransactionSource.d.cts.map +1 -1
  13. package/dist/helpers/AccountsApiRemoteTransactionSource.d.mts.map +1 -1
  14. package/dist/helpers/AccountsApiRemoteTransactionSource.mjs +3 -8
  15. package/dist/helpers/AccountsApiRemoteTransactionSource.mjs.map +1 -1
  16. package/dist/helpers/GasFeePoller.cjs +73 -1
  17. package/dist/helpers/GasFeePoller.cjs.map +1 -1
  18. package/dist/helpers/GasFeePoller.d.cts +20 -2
  19. package/dist/helpers/GasFeePoller.d.cts.map +1 -1
  20. package/dist/helpers/GasFeePoller.d.mts +20 -2
  21. package/dist/helpers/GasFeePoller.d.mts.map +1 -1
  22. package/dist/helpers/GasFeePoller.mjs +72 -1
  23. package/dist/helpers/GasFeePoller.mjs.map +1 -1
  24. package/dist/helpers/IncomingTransactionHelper.cjs +4 -12
  25. package/dist/helpers/IncomingTransactionHelper.cjs.map +1 -1
  26. package/dist/helpers/IncomingTransactionHelper.d.cts +1 -3
  27. package/dist/helpers/IncomingTransactionHelper.d.cts.map +1 -1
  28. package/dist/helpers/IncomingTransactionHelper.d.mts +1 -3
  29. package/dist/helpers/IncomingTransactionHelper.d.mts.map +1 -1
  30. package/dist/helpers/IncomingTransactionHelper.mjs +4 -12
  31. package/dist/helpers/IncomingTransactionHelper.mjs.map +1 -1
  32. package/dist/types.cjs.map +1 -1
  33. package/dist/types.d.cts +0 -4
  34. package/dist/types.d.cts.map +1 -1
  35. package/dist/types.d.mts +0 -4
  36. package/dist/types.d.mts.map +1 -1
  37. package/dist/types.mjs.map +1 -1
  38. package/dist/utils/feature-flags.cjs +2 -2
  39. package/dist/utils/feature-flags.cjs.map +1 -1
  40. package/dist/utils/feature-flags.d.cts +2 -2
  41. package/dist/utils/feature-flags.d.mts +2 -2
  42. package/dist/utils/feature-flags.mjs +2 -2
  43. package/dist/utils/feature-flags.mjs.map +1 -1
  44. package/dist/utils/gas.cjs +108 -8
  45. package/dist/utils/gas.cjs.map +1 -1
  46. package/dist/utils/gas.d.cts +16 -5
  47. package/dist/utils/gas.d.cts.map +1 -1
  48. package/dist/utils/gas.d.mts +16 -5
  49. package/dist/utils/gas.d.mts.map +1 -1
  50. package/dist/utils/gas.mjs +108 -8
  51. package/dist/utils/gas.mjs.map +1 -1
  52. package/dist/utils/simulation-api.cjs.map +1 -1
  53. package/dist/utils/simulation-api.d.cts +9 -5
  54. package/dist/utils/simulation-api.d.cts.map +1 -1
  55. package/dist/utils/simulation-api.d.mts +9 -5
  56. package/dist/utils/simulation-api.d.mts.map +1 -1
  57. package/dist/utils/simulation-api.mjs.map +1 -1
  58. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -7,6 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [52.1.0]
11
+
12
+ ### Added
13
+
14
+ - Add `enableTxParamsGasFeeUpdates` constructor option ([5394](https://github.com/MetaMask/core/pull/5394))
15
+ - If not set it will default to `false`.
16
+ - Automatically update gas fee properties in `txParams` when the `gasFeeEstimates` are updated via polling.
17
+
18
+ ### Fixed
19
+
20
+ - Fix gas estimation for type 4 transactions ([#5519](https://github.com/MetaMask/core/pull/5519))
21
+
22
+ ## [52.0.0]
23
+
24
+ ### Changed
25
+
26
+ - **BREAKING:** Remove `chainIds` argument from incoming transaction methods ([#5436](https://github.com/MetaMask/core/pull/5436))
27
+ - `startIncomingTransactionPolling`
28
+ - `stopIncomingTransactionPolling`
29
+ - `updateIncomingTransactions`
30
+
10
31
  ## [51.0.0]
11
32
 
12
33
  ### Changed
@@ -1388,7 +1409,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1388
1409
 
1389
1410
  All changes listed after this point were applied to this package following the monorepo conversion.
1390
1411
 
1391
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@51.0.0...HEAD
1412
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@52.1.0...HEAD
1413
+ [52.1.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@52.0.0...@metamask/transaction-controller@52.1.0
1414
+ [52.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@51.0.0...@metamask/transaction-controller@52.0.0
1392
1415
  [51.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@50.0.0...@metamask/transaction-controller@51.0.0
1393
1416
  [50.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@49.0.0...@metamask/transaction-controller@50.0.0
1394
1417
  [49.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@48.2.0...@metamask/transaction-controller@49.0.0
@@ -13,7 +13,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
13
13
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
15
  };
16
- var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_methodDataHelper, _TransactionController_incomingTransactionChainIds, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_publicKeyEIP7702, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _TransactionController_rejectTransaction, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateFirstTimeInteraction, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow;
16
+ var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_methodDataHelper, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_publicKeyEIP7702, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _TransactionController_rejectTransaction, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateFirstTimeInteraction, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.TransactionController = exports.ApprovalState = exports.SPEED_UP_RATE = exports.CANCEL_RATE = void 0;
19
19
  const base_controller_1 = require("@metamask/base-controller");
@@ -156,7 +156,7 @@ class TransactionController extends base_controller_1.BaseController {
156
156
  * @param options - The controller options.
157
157
  */
158
158
  constructor(options) {
159
- const { disableHistory, disableSendFlowHistory, disableSwaps, getCurrentAccountEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, getExternalPendingTransactions, getGasFeeEstimates, getNetworkClientRegistry, getNetworkState, getPermittedAccounts, getSavedGasFees, incomingTransactions = {}, isFirstTimeInteractionEnabled, isSimulationEnabled, messenger, pendingTransactions = {}, publicKeyEIP7702, securityProviderRequest, sign, state, testGasFeeFlows, trace, transactionHistoryLimit = 40, hooks, } = options;
159
+ const { disableHistory, disableSendFlowHistory, disableSwaps, enableTxParamsGasFeeUpdates, getCurrentAccountEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, getExternalPendingTransactions, getGasFeeEstimates, getNetworkClientRegistry, getNetworkState, getPermittedAccounts, getSavedGasFees, incomingTransactions = {}, isFirstTimeInteractionEnabled, isSimulationEnabled, messenger, pendingTransactions = {}, publicKeyEIP7702, securityProviderRequest, sign, state, testGasFeeFlows, trace, transactionHistoryLimit = 40, hooks, } = options;
160
160
  super({
161
161
  name: controllerName,
162
162
  metadata,
@@ -171,7 +171,6 @@ class TransactionController extends base_controller_1.BaseController {
171
171
  this.approvingTransactionIds = new Set();
172
172
  _TransactionController_methodDataHelper.set(this, void 0);
173
173
  this.mutex = new async_mutex_1.Mutex();
174
- _TransactionController_incomingTransactionChainIds.set(this, new Set());
175
174
  _TransactionController_incomingTransactionHelper.set(this, void 0);
176
175
  _TransactionController_incomingTransactionOptions.set(this, void 0);
177
176
  _TransactionController_pendingTransactionOptions.set(this, void 0);
@@ -187,6 +186,7 @@ class TransactionController extends base_controller_1.BaseController {
187
186
  __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").checkForPendingTransactionAndStartPolling();
188
187
  });
189
188
  this.messagingSystem = messenger;
189
+ this.isTxParamsGasFeeUpdatesEnabled = enableTxParamsGasFeeUpdates ?? false;
190
190
  this.getNetworkState = getNetworkState;
191
191
  this.isSendFlowHistoryDisabled = disableSendFlowHistory ?? false;
192
192
  this.isHistoryDisabled = disableHistory ?? false;
@@ -268,7 +268,6 @@ class TransactionController extends base_controller_1.BaseController {
268
268
  };
269
269
  __classPrivateFieldSet(this, _TransactionController_incomingTransactionHelper, new IncomingTransactionHelper_1.IncomingTransactionHelper({
270
270
  getCache: () => this.state.lastFetchedBlockNumbers,
271
- getChainIds: () => [...__classPrivateFieldGet(this, _TransactionController_incomingTransactionChainIds, "f")],
272
271
  getCurrentAccount: () => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getSelectedAccount).call(this),
273
272
  getLocalTransactions: () => this.state.transactions,
274
273
  includeTokenTransfers: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").includeTokenTransfers,
@@ -478,21 +477,13 @@ class TransactionController extends base_controller_1.BaseController {
478
477
  transactionMeta: addedTransactionMeta,
479
478
  };
480
479
  }
481
- startIncomingTransactionPolling(chainIds) {
482
- chainIds.forEach((chainId) => __classPrivateFieldGet(this, _TransactionController_incomingTransactionChainIds, "f").add(chainId));
480
+ startIncomingTransactionPolling() {
483
481
  __classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f").start();
484
482
  }
485
- stopIncomingTransactionPolling(chainIds) {
486
- chainIds?.forEach((chainId) => __classPrivateFieldGet(this, _TransactionController_incomingTransactionChainIds, "f").delete(chainId));
487
- if (!chainIds) {
488
- __classPrivateFieldGet(this, _TransactionController_incomingTransactionChainIds, "f").clear();
489
- }
490
- if (__classPrivateFieldGet(this, _TransactionController_incomingTransactionChainIds, "f").size === 0) {
491
- __classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f").stop();
492
- }
483
+ stopIncomingTransactionPolling() {
484
+ __classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f").stop();
493
485
  }
494
- async updateIncomingTransactions(chainIds) {
495
- chainIds.forEach((chainId) => __classPrivateFieldGet(this, _TransactionController_incomingTransactionChainIds, "f").add(chainId));
486
+ async updateIncomingTransactions() {
496
487
  await __classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f").update();
497
488
  }
498
489
  /**
@@ -559,7 +550,12 @@ class TransactionController extends base_controller_1.BaseController {
559
550
  const ethQuery = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, {
560
551
  networkClientId,
561
552
  });
562
- const { estimatedGas, simulationFails } = await (0, gas_1.estimateGas)(transaction, ethQuery);
553
+ const { estimatedGas, simulationFails } = await (0, gas_1.estimateGas)({
554
+ chainId: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getChainId).call(this, networkClientId),
555
+ ethQuery,
556
+ isSimulationEnabled: __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this),
557
+ txParams: transaction,
558
+ });
563
559
  return { gas: estimatedGas, simulationFails };
564
560
  }
565
561
  /**
@@ -574,7 +570,12 @@ class TransactionController extends base_controller_1.BaseController {
574
570
  const ethQuery = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, {
575
571
  networkClientId,
576
572
  });
577
- const { blockGasLimit, estimatedGas, simulationFails } = await (0, gas_1.estimateGas)(transaction, ethQuery);
573
+ const { blockGasLimit, estimatedGas, simulationFails } = await (0, gas_1.estimateGas)({
574
+ chainId: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getChainId).call(this, networkClientId),
575
+ ethQuery,
576
+ isSimulationEnabled: __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this),
577
+ txParams: transaction,
578
+ });
578
579
  const gas = (0, gas_1.addGasBuffer)(estimatedGas, blockGasLimit, multiplier);
579
580
  return {
580
581
  gas,
@@ -1769,7 +1770,7 @@ class TransactionController extends base_controller_1.BaseController {
1769
1770
  }
1770
1771
  }
1771
1772
  exports.TransactionController = TransactionController;
1772
- _TransactionController_internalEvents = new WeakMap(), _TransactionController_methodDataHelper = new WeakMap(), _TransactionController_incomingTransactionChainIds = new WeakMap(), _TransactionController_incomingTransactionHelper = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(), _TransactionController_publicKeyEIP7702 = new WeakMap(), _TransactionController_trace = new WeakMap(), _TransactionController_transactionHistoryLimit = new WeakMap(), _TransactionController_isFirstTimeInteractionEnabled = new WeakMap(), _TransactionController_isSimulationEnabled = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_multichainTrackingHelper = new WeakMap(), _TransactionController_checkForPendingTransactionAndStartPolling = new WeakMap(), _TransactionController_instances = new WeakSet(), _TransactionController_retryTransaction = async function _TransactionController_retryTransaction({ actionId, afterSubmit, estimatedBaseFee, gasValues, label, prepareTransactionParams, rate, transactionId, transactionType, }) {
1773
+ _TransactionController_internalEvents = new WeakMap(), _TransactionController_methodDataHelper = new WeakMap(), _TransactionController_incomingTransactionHelper = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(), _TransactionController_publicKeyEIP7702 = new WeakMap(), _TransactionController_trace = new WeakMap(), _TransactionController_transactionHistoryLimit = new WeakMap(), _TransactionController_isFirstTimeInteractionEnabled = new WeakMap(), _TransactionController_isSimulationEnabled = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_multichainTrackingHelper = new WeakMap(), _TransactionController_checkForPendingTransactionAndStartPolling = new WeakMap(), _TransactionController_instances = new WeakSet(), _TransactionController_retryTransaction = async function _TransactionController_retryTransaction({ actionId, afterSubmit, estimatedBaseFee, gasValues, label, prepareTransactionParams, rate, transactionId, transactionType, }) {
1773
1774
  // If transaction is found for same action id, do not create a new transaction.
1774
1775
  if (this.getTransactionWithActionId(actionId)) {
1775
1776
  return;
@@ -2046,15 +2047,15 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
2046
2047
  (0, logger_1.projectLogger)('Updated simulation data', transactionId, simulationData);
2047
2048
  }, _TransactionController_onGasFeePollerTransactionUpdate = function _TransactionController_onGasFeePollerTransactionUpdate({ transactionId, gasFeeEstimates, gasFeeEstimatesLoaded, layer1GasFee, }) {
2048
2049
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId, skipHistory: true }, (txMeta) => {
2049
- if (gasFeeEstimates) {
2050
- txMeta.gasFeeEstimates = gasFeeEstimates;
2051
- }
2052
- if (gasFeeEstimatesLoaded !== undefined) {
2053
- txMeta.gasFeeEstimatesLoaded = gasFeeEstimatesLoaded;
2054
- }
2055
- if (layer1GasFee) {
2056
- txMeta.layer1GasFee = layer1GasFee;
2057
- }
2050
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
2051
+ (0, GasFeePoller_1.updateTransactionGasFees)({
2052
+ txMeta,
2053
+ gasFeeEstimates,
2054
+ gasFeeEstimatesLoaded,
2055
+ getEIP1559Compatibility: this.getEIP1559Compatibility.bind(this),
2056
+ isTxParamsGasFeeUpdatesEnabled: this.isTxParamsGasFeeUpdatesEnabled,
2057
+ layer1GasFee,
2058
+ });
2058
2059
  });
2059
2060
  }, _TransactionController_getSelectedAccount = function _TransactionController_getSelectedAccount() {
2060
2061
  return this.messagingSystem.call('AccountsController:getSelectedAccount');
@@ -2097,6 +2098,7 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
2097
2098
  chainId,
2098
2099
  ethQuery,
2099
2100
  isCustomNetwork,
2101
+ isSimulationEnabled: __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this),
2100
2102
  txMeta: transactionMeta,
2101
2103
  });
2102
2104
  }, _TransactionController_deleteTransaction = function _TransactionController_deleteTransaction(transactionId) {