@metamask/transaction-controller 58.0.0 → 58.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 (64) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/dist/TransactionController.cjs +27 -12
  3. package/dist/TransactionController.cjs.map +1 -1
  4. package/dist/TransactionController.d.cts +5 -3
  5. package/dist/TransactionController.d.cts.map +1 -1
  6. package/dist/TransactionController.d.mts +5 -3
  7. package/dist/TransactionController.d.mts.map +1 -1
  8. package/dist/TransactionController.mjs +27 -12
  9. package/dist/TransactionController.mjs.map +1 -1
  10. package/dist/api/accounts-api.cjs.map +1 -1
  11. package/dist/api/accounts-api.d.cts +1 -1
  12. package/dist/api/accounts-api.d.cts.map +1 -1
  13. package/dist/api/accounts-api.d.mts +1 -1
  14. package/dist/api/accounts-api.d.mts.map +1 -1
  15. package/dist/api/accounts-api.mjs.map +1 -1
  16. package/dist/helpers/AccountsApiRemoteTransactionSource.cjs +39 -105
  17. package/dist/helpers/AccountsApiRemoteTransactionSource.cjs.map +1 -1
  18. package/dist/helpers/AccountsApiRemoteTransactionSource.d.cts.map +1 -1
  19. package/dist/helpers/AccountsApiRemoteTransactionSource.d.mts.map +1 -1
  20. package/dist/helpers/AccountsApiRemoteTransactionSource.mjs +39 -105
  21. package/dist/helpers/AccountsApiRemoteTransactionSource.mjs.map +1 -1
  22. package/dist/helpers/GasFeePoller.cjs +60 -4
  23. package/dist/helpers/GasFeePoller.cjs.map +1 -1
  24. package/dist/helpers/GasFeePoller.d.cts +4 -2
  25. package/dist/helpers/GasFeePoller.d.cts.map +1 -1
  26. package/dist/helpers/GasFeePoller.d.mts +4 -2
  27. package/dist/helpers/GasFeePoller.d.mts.map +1 -1
  28. package/dist/helpers/GasFeePoller.mjs +60 -4
  29. package/dist/helpers/GasFeePoller.mjs.map +1 -1
  30. package/dist/helpers/IncomingTransactionHelper.cjs +7 -18
  31. package/dist/helpers/IncomingTransactionHelper.cjs.map +1 -1
  32. package/dist/helpers/IncomingTransactionHelper.d.cts +6 -4
  33. package/dist/helpers/IncomingTransactionHelper.d.cts.map +1 -1
  34. package/dist/helpers/IncomingTransactionHelper.d.mts +6 -4
  35. package/dist/helpers/IncomingTransactionHelper.d.mts.map +1 -1
  36. package/dist/helpers/IncomingTransactionHelper.mjs +7 -18
  37. package/dist/helpers/IncomingTransactionHelper.mjs.map +1 -1
  38. package/dist/types.cjs.map +1 -1
  39. package/dist/types.d.cts +2 -13
  40. package/dist/types.d.cts.map +1 -1
  41. package/dist/types.d.mts +2 -13
  42. package/dist/types.d.mts.map +1 -1
  43. package/dist/types.mjs.map +1 -1
  44. package/dist/utils/batch.cjs +17 -7
  45. package/dist/utils/batch.cjs.map +1 -1
  46. package/dist/utils/batch.d.cts.map +1 -1
  47. package/dist/utils/batch.d.mts.map +1 -1
  48. package/dist/utils/batch.mjs +18 -8
  49. package/dist/utils/batch.mjs.map +1 -1
  50. package/dist/utils/gas.cjs +46 -7
  51. package/dist/utils/gas.cjs.map +1 -1
  52. package/dist/utils/gas.d.cts.map +1 -1
  53. package/dist/utils/gas.d.mts.map +1 -1
  54. package/dist/utils/gas.mjs +46 -7
  55. package/dist/utils/gas.mjs.map +1 -1
  56. package/dist/utils/transaction-type.cjs +23 -27
  57. package/dist/utils/transaction-type.cjs.map +1 -1
  58. package/dist/utils/transaction-type.d.cts +1 -1
  59. package/dist/utils/transaction-type.d.cts.map +1 -1
  60. package/dist/utils/transaction-type.d.mts +1 -1
  61. package/dist/utils/transaction-type.d.mts.map +1 -1
  62. package/dist/utils/transaction-type.mjs +23 -27
  63. package/dist/utils/transaction-type.mjs.map +1 -1
  64. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [58.1.0]
11
+
12
+ ### Added
13
+
14
+ - Support `containerTypes` property in `updateEditableParams` method ([#6014](https://github.com/MetaMask/core/pull/6014))
15
+ - Add specific transaction types to outgoing transactions retrieved from accounts API ([#5987](https://github.com/MetaMask/core/pull/5987))
16
+ - Add optional `amount` property to `transferInformation` object in `TransactionMeta` type.
17
+
18
+ ### Changed
19
+
20
+ - Automatically update `gasFeeEstimates` in unapproved `transactionBatches` ([#5950](https://github.com/MetaMask/core/pull/5950))
21
+ - Estimate gas for type-4 transactions with `data` using `eth_estimateGas` and state overrides if simulation fails [#6016](https://github.com/MetaMask/core/pull/6016))
22
+ - Query only latest page of transactions from accounts API ([#5983](https://github.com/MetaMask/core/pull/5983))
23
+ - Remove incoming transactions when calling `wipeTransactions` ([#5986](https://github.com/MetaMask/core/pull/5986))
24
+ - Poll immediately when calling `startIncomingTransactionPolling` ([#5986](https://github.com/MetaMask/core/pull/5986))
25
+
10
26
  ## [58.0.0]
11
27
 
12
28
  ### Changed
@@ -1693,7 +1709,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1693
1709
 
1694
1710
  All changes listed after this point were applied to this package following the monorepo conversion.
1695
1711
 
1696
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@58.0.0...HEAD
1712
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@58.1.0...HEAD
1713
+ [58.1.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@58.0.0...@metamask/transaction-controller@58.1.0
1697
1714
  [58.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@57.4.0...@metamask/transaction-controller@58.0.0
1698
1715
  [57.4.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@57.3.0...@metamask/transaction-controller@57.4.0
1699
1716
  [57.3.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@57.2.0...@metamask/transaction-controller@57.3.0
@@ -13,7 +13,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || 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_afterAdd, _TransactionController_afterSign, _TransactionController_afterSimulate, _TransactionController_approvingTransactionIds, _TransactionController_beforeCheckPendingTransaction, _TransactionController_beforePublish, _TransactionController_beforeSign, _TransactionController_gasFeeFlows, _TransactionController_getAdditionalSignArguments, _TransactionController_getCurrentAccountEIP1559Compatibility, _TransactionController_getCurrentNetworkEIP1559Compatibility, _TransactionController_getExternalPendingTransactions, _TransactionController_getGasFeeEstimates, _TransactionController_getNetworkState, _TransactionController_getPermittedAccounts, _TransactionController_getSavedGasFees, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_internalEvents, _TransactionController_isAutomaticGasFeeUpdateEnabled, _TransactionController_isEIP7702GasFeeTokensEnabled, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isHistoryDisabled, _TransactionController_isSendFlowHistoryDisabled, _TransactionController_isSimulationEnabled, _TransactionController_isSwapsDisabled, _TransactionController_layer1GasFeeFlows, _TransactionController_methodDataHelper, _TransactionController_multichainTrackingHelper, _TransactionController_pendingTransactionOptions, _TransactionController_publicKeyEIP7702, _TransactionController_publish, _TransactionController_publishBatchHook, _TransactionController_securityProviderRequest, _TransactionController_sign, _TransactionController_signAbortCallbacks, _TransactionController_skipSimulationTransactionIds, _TransactionController_testGasFeeFlows, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_retryTransaction, _TransactionController_signExternalTransaction, _TransactionController_addMetadata, _TransactionController_updateGasProperties, _TransactionController_onBootCleanup, _TransactionController_failIncompleteTransactions, _TransactionController_processApproval, _TransactionController_approveTransaction, _TransactionController_publishTransaction, _TransactionController_rejectTransaction, _TransactionController_trimTransactionsForState, _TransactionController_isFinalState, _TransactionController_isLocalFinalState, _TransactionController_requestApproval, _TransactionController_getTransaction, _TransactionController_getTransactionOrThrow, _TransactionController_getApprovalId, _TransactionController_isTransactionCompleted, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_onIncomingTransactions, _TransactionController_generateDappSuggestedGasFees, _TransactionController_addExternalTransaction, _TransactionController_markNonceDuplicatesDropped, _TransactionController_setTransactionStatusDropped, _TransactionController_getTransactionWithActionId, _TransactionController_waitForTransactionFinished, _TransactionController_updateTransactionMetaRSV, _TransactionController_getEIP1559Compatibility, _TransactionController_signTransaction, _TransactionController_onTransactionStatusChange, _TransactionController_getNonceTrackerTransactions, _TransactionController_onConfirmedTransaction, _TransactionController_updatePostBalance, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_publishTransactionForRetry, _TransactionController_isTransactionAlreadyConfirmedError, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateFirstTimeInteraction, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_registerActionHandlers, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow, _TransactionController_failTransaction, _TransactionController_runAfterSimulateHook;
16
+ var _TransactionController_instances, _TransactionController_afterAdd, _TransactionController_afterSign, _TransactionController_afterSimulate, _TransactionController_approvingTransactionIds, _TransactionController_beforeCheckPendingTransaction, _TransactionController_beforePublish, _TransactionController_beforeSign, _TransactionController_gasFeeFlows, _TransactionController_getAdditionalSignArguments, _TransactionController_getCurrentAccountEIP1559Compatibility, _TransactionController_getCurrentNetworkEIP1559Compatibility, _TransactionController_getExternalPendingTransactions, _TransactionController_getGasFeeEstimates, _TransactionController_getNetworkState, _TransactionController_getPermittedAccounts, _TransactionController_getSavedGasFees, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_internalEvents, _TransactionController_isAutomaticGasFeeUpdateEnabled, _TransactionController_isEIP7702GasFeeTokensEnabled, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isHistoryDisabled, _TransactionController_isSendFlowHistoryDisabled, _TransactionController_isSimulationEnabled, _TransactionController_isSwapsDisabled, _TransactionController_layer1GasFeeFlows, _TransactionController_methodDataHelper, _TransactionController_multichainTrackingHelper, _TransactionController_pendingTransactionOptions, _TransactionController_publicKeyEIP7702, _TransactionController_publish, _TransactionController_publishBatchHook, _TransactionController_securityProviderRequest, _TransactionController_sign, _TransactionController_signAbortCallbacks, _TransactionController_skipSimulationTransactionIds, _TransactionController_testGasFeeFlows, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_retryTransaction, _TransactionController_signExternalTransaction, _TransactionController_addMetadata, _TransactionController_updateGasProperties, _TransactionController_onBootCleanup, _TransactionController_failIncompleteTransactions, _TransactionController_processApproval, _TransactionController_approveTransaction, _TransactionController_publishTransaction, _TransactionController_rejectTransaction, _TransactionController_trimTransactionsForState, _TransactionController_isFinalState, _TransactionController_isLocalFinalState, _TransactionController_requestApproval, _TransactionController_getTransaction, _TransactionController_getTransactionOrThrow, _TransactionController_getApprovalId, _TransactionController_isTransactionCompleted, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_onIncomingTransactions, _TransactionController_generateDappSuggestedGasFees, _TransactionController_addExternalTransaction, _TransactionController_markNonceDuplicatesDropped, _TransactionController_setTransactionStatusDropped, _TransactionController_getTransactionWithActionId, _TransactionController_waitForTransactionFinished, _TransactionController_updateTransactionMetaRSV, _TransactionController_getEIP1559Compatibility, _TransactionController_signTransaction, _TransactionController_onTransactionStatusChange, _TransactionController_getNonceTrackerTransactions, _TransactionController_onConfirmedTransaction, _TransactionController_updatePostBalance, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_publishTransactionForRetry, _TransactionController_isTransactionAlreadyConfirmedError, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateFirstTimeInteraction, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_onGasFeePollerTransactionBatchUpdate, _TransactionController_updateTransactionBatch, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_registerActionHandlers, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow, _TransactionController_failTransaction, _TransactionController_runAfterSimulateHook;
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");
@@ -247,6 +247,7 @@ class TransactionController extends base_controller_1.BaseController {
247
247
  getGasFeeControllerEstimates: __classPrivateFieldGet(this, _TransactionController_getGasFeeEstimates, "f"),
248
248
  getProvider: (networkClientId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getProvider).call(this, { networkClientId }),
249
249
  getTransactions: () => this.state.transactions,
250
+ getTransactionBatches: () => this.state.transactionBatches,
250
251
  layer1GasFeeFlows: __classPrivateFieldGet(this, _TransactionController_layer1GasFeeFlows, "f"),
251
252
  messenger: this.messagingSystem,
252
253
  onStateChange: (listener) => {
@@ -254,6 +255,7 @@ class TransactionController extends base_controller_1.BaseController {
254
255
  },
255
256
  });
256
257
  gasFeePoller.hub.on('transaction-updated', __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_onGasFeePollerTransactionUpdate).bind(this));
258
+ gasFeePoller.hub.on('transaction-batch-updated', __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_onGasFeePollerTransactionBatchUpdate).bind(this));
257
259
  __classPrivateFieldSet(this, _TransactionController_methodDataHelper, new MethodDataHelper_1.MethodDataHelper({
258
260
  getProvider: (networkClientId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getProvider).call(this, { networkClientId }),
259
261
  getState: () => this.state.methodData,
@@ -263,23 +265,15 @@ class TransactionController extends base_controller_1.BaseController {
263
265
  _state.methodData[fourBytePrefix] = methodData;
264
266
  });
265
267
  });
266
- const updateCache = (fn) => {
267
- this.update((_state) => {
268
- fn(_state.lastFetchedBlockNumbers);
269
- });
270
- };
271
268
  __classPrivateFieldSet(this, _TransactionController_incomingTransactionHelper, new IncomingTransactionHelper_1.IncomingTransactionHelper({
272
269
  client: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").client,
273
- getCache: () => this.state.lastFetchedBlockNumbers,
274
270
  getCurrentAccount: () => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getSelectedAccount).call(this),
275
271
  getLocalTransactions: () => this.state.transactions,
276
272
  includeTokenTransfers: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").includeTokenTransfers,
277
273
  isEnabled: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").isEnabled,
278
274
  messenger: this.messagingSystem,
279
- queryEntireHistory: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").queryEntireHistory,
280
275
  remoteTransactionSource: new AccountsApiRemoteTransactionSource_1.AccountsApiRemoteTransactionSource(),
281
276
  trimTransactions: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_trimTransactionsForState).bind(this),
282
- updateCache,
283
277
  updateTransactions: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").updateTransactions,
284
278
  }), "f");
285
279
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addIncomingTransactionHelperListeners).call(this, __classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f"));
@@ -672,12 +666,15 @@ class TransactionController extends base_controller_1.BaseController {
672
666
  });
673
667
  return;
674
668
  }
675
- const newTransactions = this.state.transactions.filter(({ chainId: txChainId, txParams }) => {
669
+ const newTransactions = this.state.transactions.filter(({ chainId: txChainId, txParams, type }) => {
676
670
  const isMatchingNetwork = !chainId || chainId === txChainId;
677
671
  if (!isMatchingNetwork) {
678
672
  return true;
679
673
  }
680
- const isMatchingAddress = !address || txParams.from?.toLowerCase() === address.toLowerCase();
674
+ const isMatchingAddress = !address ||
675
+ txParams.from?.toLowerCase() === address.toLowerCase() ||
676
+ (type === types_1.TransactionType.incoming &&
677
+ txParams.to?.toLowerCase() === address.toLowerCase());
681
678
  return !isMatchingAddress;
682
679
  });
683
680
  this.update((state) => {
@@ -869,6 +866,7 @@ class TransactionController extends base_controller_1.BaseController {
869
866
  *
870
867
  * @param txId - The ID of the transaction to update.
871
868
  * @param params - The editable parameters to update.
869
+ * @param params.containerTypes - Container types applied to the parameters.
872
870
  * @param params.data - Data to pass with the transaction.
873
871
  * @param params.from - Address to send the transaction from.
874
872
  * @param params.gas - Maximum number of units of gas to use for the transaction.
@@ -879,7 +877,7 @@ class TransactionController extends base_controller_1.BaseController {
879
877
  * @param params.value - Value associated with the transaction.
880
878
  * @returns The updated transaction metadata.
881
879
  */
882
- async updateEditableParams(txId, { data, from, gas, gasPrice, maxFeePerGas, maxPriorityFeePerGas, to, value, }) {
880
+ async updateEditableParams(txId, { containerTypes, data, from, gas, gasPrice, maxFeePerGas, maxPriorityFeePerGas, to, value, }) {
883
881
  const transactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, txId);
884
882
  if (!transactionMeta) {
885
883
  throw new Error(`Cannot update editable params as no transaction metadata found`);
@@ -904,6 +902,9 @@ class TransactionController extends base_controller_1.BaseController {
904
902
  const ethQuery = new eth_query_1.default(provider);
905
903
  const { type } = await (0, transaction_type_1.determineTransactionType)(updatedTransaction.txParams, ethQuery);
906
904
  updatedTransaction.type = type;
905
+ if (containerTypes) {
906
+ updatedTransaction.containerTypes = containerTypes;
907
+ }
907
908
  await (0, layer1_gas_fee_flow_1.updateTransactionLayer1GasFee)({
908
909
  layer1GasFeeFlows: __classPrivateFieldGet(this, _TransactionController_layer1GasFeeFlows, "f"),
909
910
  messenger: this.messagingSystem,
@@ -2147,6 +2148,20 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2147
2148
  layer1GasFee,
2148
2149
  });
2149
2150
  });
2151
+ }, _TransactionController_onGasFeePollerTransactionBatchUpdate = function _TransactionController_onGasFeePollerTransactionBatchUpdate({ transactionBatchId, gasFeeEstimates, }) {
2152
+ __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionBatch).call(this, transactionBatchId, (batch) => {
2153
+ return { ...batch, gasFeeEstimates };
2154
+ });
2155
+ }, _TransactionController_updateTransactionBatch = function _TransactionController_updateTransactionBatch(batchId, callback) {
2156
+ this.update((state) => {
2157
+ const index = state.transactionBatches.findIndex((b) => b.id === batchId);
2158
+ if (index === -1) {
2159
+ throw new Error(`Cannot update batch, ID not found - ${batchId}`);
2160
+ }
2161
+ const batch = state.transactionBatches[index];
2162
+ const updated = callback(batch);
2163
+ state.transactionBatches[index] = updated ?? batch;
2164
+ });
2150
2165
  }, _TransactionController_getSelectedAccount = function _TransactionController_getSelectedAccount() {
2151
2166
  return this.messagingSystem.call('AccountsController:getSelectedAccount');
2152
2167
  }, _TransactionController_getInternalAccounts = function _TransactionController_getInternalAccounts() {