@metamask/transaction-controller 52.2.0 → 52.3.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 (156) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/dist/TransactionController.cjs +22 -4
  3. package/dist/TransactionController.cjs.map +1 -1
  4. package/dist/TransactionController.d.cts +0 -2
  5. package/dist/TransactionController.d.cts.map +1 -1
  6. package/dist/TransactionController.d.mts +0 -2
  7. package/dist/TransactionController.d.mts.map +1 -1
  8. package/dist/TransactionController.mjs +25 -7
  9. package/dist/TransactionController.mjs.map +1 -1
  10. package/dist/constants.cjs +1 -0
  11. package/dist/constants.cjs.map +1 -1
  12. package/dist/constants.d.cts +1 -0
  13. package/dist/constants.d.cts.map +1 -1
  14. package/dist/constants.d.mts +1 -0
  15. package/dist/constants.d.mts.map +1 -1
  16. package/dist/constants.mjs +1 -0
  17. package/dist/constants.mjs.map +1 -1
  18. package/dist/gas-flows/DefaultGasFeeFlow.cjs +1 -3
  19. package/dist/gas-flows/DefaultGasFeeFlow.cjs.map +1 -1
  20. package/dist/gas-flows/DefaultGasFeeFlow.d.cts +2 -2
  21. package/dist/gas-flows/DefaultGasFeeFlow.d.cts.map +1 -1
  22. package/dist/gas-flows/DefaultGasFeeFlow.d.mts +2 -2
  23. package/dist/gas-flows/DefaultGasFeeFlow.d.mts.map +1 -1
  24. package/dist/gas-flows/DefaultGasFeeFlow.mjs +1 -3
  25. package/dist/gas-flows/DefaultGasFeeFlow.mjs.map +1 -1
  26. package/dist/gas-flows/LineaGasFeeFlow.cjs +1 -1
  27. package/dist/gas-flows/LineaGasFeeFlow.cjs.map +1 -1
  28. package/dist/gas-flows/LineaGasFeeFlow.d.cts +5 -1
  29. package/dist/gas-flows/LineaGasFeeFlow.d.cts.map +1 -1
  30. package/dist/gas-flows/LineaGasFeeFlow.d.mts +5 -1
  31. package/dist/gas-flows/LineaGasFeeFlow.d.mts.map +1 -1
  32. package/dist/gas-flows/LineaGasFeeFlow.mjs +1 -1
  33. package/dist/gas-flows/LineaGasFeeFlow.mjs.map +1 -1
  34. package/dist/gas-flows/OptimismLayer1GasFeeFlow.cjs +1 -1
  35. package/dist/gas-flows/OptimismLayer1GasFeeFlow.cjs.map +1 -1
  36. package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.cts +5 -1
  37. package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.cts.map +1 -1
  38. package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.mts +5 -1
  39. package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.mts.map +1 -1
  40. package/dist/gas-flows/OptimismLayer1GasFeeFlow.mjs +1 -1
  41. package/dist/gas-flows/OptimismLayer1GasFeeFlow.mjs.map +1 -1
  42. package/dist/gas-flows/OracleLayer1GasFeeFlow.cjs.map +1 -1
  43. package/dist/gas-flows/OracleLayer1GasFeeFlow.d.cts +5 -1
  44. package/dist/gas-flows/OracleLayer1GasFeeFlow.d.cts.map +1 -1
  45. package/dist/gas-flows/OracleLayer1GasFeeFlow.d.mts +5 -1
  46. package/dist/gas-flows/OracleLayer1GasFeeFlow.d.mts.map +1 -1
  47. package/dist/gas-flows/OracleLayer1GasFeeFlow.mjs.map +1 -1
  48. package/dist/gas-flows/RandomisedEstimationsGasFeeFlow.cjs +123 -0
  49. package/dist/gas-flows/RandomisedEstimationsGasFeeFlow.cjs.map +1 -0
  50. package/dist/gas-flows/RandomisedEstimationsGasFeeFlow.d.cts +28 -0
  51. package/dist/gas-flows/RandomisedEstimationsGasFeeFlow.d.cts.map +1 -0
  52. package/dist/gas-flows/RandomisedEstimationsGasFeeFlow.d.mts +28 -0
  53. package/dist/gas-flows/RandomisedEstimationsGasFeeFlow.d.mts.map +1 -0
  54. package/dist/gas-flows/RandomisedEstimationsGasFeeFlow.mjs +118 -0
  55. package/dist/gas-flows/RandomisedEstimationsGasFeeFlow.mjs.map +1 -0
  56. package/dist/gas-flows/ScrollLayer1GasFeeFlow.cjs +1 -1
  57. package/dist/gas-flows/ScrollLayer1GasFeeFlow.cjs.map +1 -1
  58. package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.cts +5 -1
  59. package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.cts.map +1 -1
  60. package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.mts +5 -1
  61. package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.mts.map +1 -1
  62. package/dist/gas-flows/ScrollLayer1GasFeeFlow.mjs +1 -1
  63. package/dist/gas-flows/ScrollLayer1GasFeeFlow.mjs.map +1 -1
  64. package/dist/gas-flows/TestGasFeeFlow.cjs +1 -1
  65. package/dist/gas-flows/TestGasFeeFlow.cjs.map +1 -1
  66. package/dist/gas-flows/TestGasFeeFlow.d.cts +2 -2
  67. package/dist/gas-flows/TestGasFeeFlow.d.cts.map +1 -1
  68. package/dist/gas-flows/TestGasFeeFlow.d.mts +2 -2
  69. package/dist/gas-flows/TestGasFeeFlow.d.mts.map +1 -1
  70. package/dist/gas-flows/TestGasFeeFlow.mjs +1 -1
  71. package/dist/gas-flows/TestGasFeeFlow.mjs.map +1 -1
  72. package/dist/helpers/GasFeePoller.cjs +11 -8
  73. package/dist/helpers/GasFeePoller.cjs.map +1 -1
  74. package/dist/helpers/GasFeePoller.d.cts +6 -5
  75. package/dist/helpers/GasFeePoller.d.cts.map +1 -1
  76. package/dist/helpers/GasFeePoller.d.mts +6 -5
  77. package/dist/helpers/GasFeePoller.d.mts.map +1 -1
  78. package/dist/helpers/GasFeePoller.mjs +11 -8
  79. package/dist/helpers/GasFeePoller.mjs.map +1 -1
  80. package/dist/helpers/IncomingTransactionHelper.cjs +2 -1
  81. package/dist/helpers/IncomingTransactionHelper.cjs.map +1 -1
  82. package/dist/helpers/IncomingTransactionHelper.d.cts.map +1 -1
  83. package/dist/helpers/IncomingTransactionHelper.d.mts.map +1 -1
  84. package/dist/helpers/IncomingTransactionHelper.mjs +2 -1
  85. package/dist/helpers/IncomingTransactionHelper.mjs.map +1 -1
  86. package/dist/helpers/PendingTransactionTracker.cjs +6 -2
  87. package/dist/helpers/PendingTransactionTracker.cjs.map +1 -1
  88. package/dist/helpers/PendingTransactionTracker.d.cts +5 -2
  89. package/dist/helpers/PendingTransactionTracker.d.cts.map +1 -1
  90. package/dist/helpers/PendingTransactionTracker.d.mts +5 -2
  91. package/dist/helpers/PendingTransactionTracker.d.mts.map +1 -1
  92. package/dist/helpers/PendingTransactionTracker.mjs +6 -2
  93. package/dist/helpers/PendingTransactionTracker.mjs.map +1 -1
  94. package/dist/helpers/TransactionPoller.cjs +12 -8
  95. package/dist/helpers/TransactionPoller.cjs.map +1 -1
  96. package/dist/helpers/TransactionPoller.d.cts +7 -3
  97. package/dist/helpers/TransactionPoller.d.cts.map +1 -1
  98. package/dist/helpers/TransactionPoller.d.mts +7 -3
  99. package/dist/helpers/TransactionPoller.d.mts.map +1 -1
  100. package/dist/helpers/TransactionPoller.mjs +11 -7
  101. package/dist/helpers/TransactionPoller.mjs.map +1 -1
  102. package/dist/types.cjs.map +1 -1
  103. package/dist/types.d.cts +18 -5
  104. package/dist/types.d.cts.map +1 -1
  105. package/dist/types.d.mts +18 -5
  106. package/dist/types.d.mts.map +1 -1
  107. package/dist/types.mjs.map +1 -1
  108. package/dist/utils/feature-flags.cjs +39 -2
  109. package/dist/utils/feature-flags.cjs.map +1 -1
  110. package/dist/utils/feature-flags.d.cts +49 -0
  111. package/dist/utils/feature-flags.d.cts.map +1 -1
  112. package/dist/utils/feature-flags.d.mts +49 -0
  113. package/dist/utils/feature-flags.d.mts.map +1 -1
  114. package/dist/utils/feature-flags.mjs +36 -1
  115. package/dist/utils/feature-flags.mjs.map +1 -1
  116. package/dist/utils/gas-fees.cjs +21 -3
  117. package/dist/utils/gas-fees.cjs.map +1 -1
  118. package/dist/utils/gas-fees.d.cts +14 -0
  119. package/dist/utils/gas-fees.d.cts.map +1 -1
  120. package/dist/utils/gas-fees.d.mts +14 -0
  121. package/dist/utils/gas-fees.d.mts.map +1 -1
  122. package/dist/utils/gas-fees.mjs +19 -2
  123. package/dist/utils/gas-fees.mjs.map +1 -1
  124. package/dist/utils/gas-flow.cjs +3 -2
  125. package/dist/utils/gas-flow.cjs.map +1 -1
  126. package/dist/utils/gas-flow.d.cts +3 -1
  127. package/dist/utils/gas-flow.d.cts.map +1 -1
  128. package/dist/utils/gas-flow.d.mts +3 -1
  129. package/dist/utils/gas-flow.d.mts.map +1 -1
  130. package/dist/utils/gas-flow.mjs +3 -2
  131. package/dist/utils/gas-flow.mjs.map +1 -1
  132. package/dist/utils/layer1-gas-fee-flow.cjs +9 -4
  133. package/dist/utils/layer1-gas-fee-flow.cjs.map +1 -1
  134. package/dist/utils/layer1-gas-fee-flow.d.cts +4 -1
  135. package/dist/utils/layer1-gas-fee-flow.d.cts.map +1 -1
  136. package/dist/utils/layer1-gas-fee-flow.d.mts +4 -1
  137. package/dist/utils/layer1-gas-fee-flow.d.mts.map +1 -1
  138. package/dist/utils/layer1-gas-fee-flow.mjs +9 -4
  139. package/dist/utils/layer1-gas-fee-flow.mjs.map +1 -1
  140. package/dist/utils/simulation.cjs +17 -2
  141. package/dist/utils/simulation.cjs.map +1 -1
  142. package/dist/utils/simulation.d.cts +1 -0
  143. package/dist/utils/simulation.d.cts.map +1 -1
  144. package/dist/utils/simulation.d.mts +1 -0
  145. package/dist/utils/simulation.d.mts.map +1 -1
  146. package/dist/utils/simulation.mjs +17 -2
  147. package/dist/utils/simulation.mjs.map +1 -1
  148. package/dist/utils/utils.cjs +23 -1
  149. package/dist/utils/utils.cjs.map +1 -1
  150. package/dist/utils/utils.d.cts +8 -0
  151. package/dist/utils/utils.d.cts.map +1 -1
  152. package/dist/utils/utils.d.mts +8 -0
  153. package/dist/utils/utils.d.mts.map +1 -1
  154. package/dist/utils/utils.mjs +22 -1
  155. package/dist/utils/utils.mjs.map +1 -1
  156. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [52.3.0]
11
+
12
+ ### Added
13
+
14
+ - Adds `RandomisedEstimationsGasFeeFlow` to gas fee flows in `TransactionController` ([#5511](https://github.com/MetaMask/core/pull/5511))
15
+ - Added flow only will be activated if chainId is defined in feature flags.
16
+ - Configure pending transaction polling intervals using remote feature flags ([#5549](https://github.com/MetaMask/core/pull/5549))
17
+
18
+ ### Fixed
19
+
20
+ - Fix EIP-7702 contract signature validation on chains with odd-length hexadecimal ID ([#5563](https://github.com/MetaMask/core/pull/5563))
21
+ - Fix simulation of type-4 transactions ([#5552](https://github.com/MetaMask/core/pull/5552))
22
+ - Display incoming transactions in active tab ([#5487](https://github.com/MetaMask/core/pull/5487))
23
+ - Fix bug in `updateTransactionGasFees` affecting `txParams` gas updates when `enableTxParamsGasFeeUpdates` is enabled. ([#5539](https://github.com/MetaMask/core/pull/5539))
24
+
10
25
  ## [52.2.0]
11
26
 
12
27
  ### Added
@@ -1443,7 +1458,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1443
1458
 
1444
1459
  All changes listed after this point were applied to this package following the monorepo conversion.
1445
1460
 
1446
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@52.2.0...HEAD
1461
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@52.3.0...HEAD
1462
+ [52.3.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@52.2.0...@metamask/transaction-controller@52.3.0
1447
1463
  [52.2.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@52.1.0...@metamask/transaction-controller@52.2.0
1448
1464
  [52.1.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@52.0.0...@metamask/transaction-controller@52.1.0
1449
1465
  [52.0.0]: https://github.com/MetaMask/core/compare/@metamask/transaction-controller@51.0.0...@metamask/transaction-controller@52.0.0
@@ -32,6 +32,7 @@ const accounts_api_1 = require("./api/accounts-api.cjs");
32
32
  const DefaultGasFeeFlow_1 = require("./gas-flows/DefaultGasFeeFlow.cjs");
33
33
  const LineaGasFeeFlow_1 = require("./gas-flows/LineaGasFeeFlow.cjs");
34
34
  const OptimismLayer1GasFeeFlow_1 = require("./gas-flows/OptimismLayer1GasFeeFlow.cjs");
35
+ const RandomisedEstimationsGasFeeFlow_1 = require("./gas-flows/RandomisedEstimationsGasFeeFlow.cjs");
35
36
  const ScrollLayer1GasFeeFlow_1 = require("./gas-flows/ScrollLayer1GasFeeFlow.cjs");
36
37
  const TestGasFeeFlow_1 = require("./gas-flows/TestGasFeeFlow.cjs");
37
38
  const AccountsApiRemoteTransactionSource_1 = require("./helpers/AccountsApiRemoteTransactionSource.cjs");
@@ -248,6 +249,7 @@ class TransactionController extends base_controller_1.BaseController {
248
249
  getProvider: (networkClientId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getProvider).call(this, { networkClientId }),
249
250
  getTransactions: () => this.state.transactions,
250
251
  layer1GasFeeFlows: this.layer1GasFeeFlows,
252
+ messenger: this.messagingSystem,
251
253
  onStateChange: (listener) => {
252
254
  this.messagingSystem.subscribe('TransactionController:stateChange', listener);
253
255
  },
@@ -398,6 +400,10 @@ class TransactionController extends base_controller_1.BaseController {
398
400
  const delegationAddressPromise = (0, eip7702_1.getDelegationAddress)(txParams.from, ethQuery).catch(() => undefined);
399
401
  const isEIP1559Compatible = await this.getEIP1559Compatibility(networkClientId);
400
402
  (0, validation_1.validateTxParams)(txParams, isEIP1559Compatible);
403
+ if (!txParams.type) {
404
+ // Determine transaction type based on transaction parameters and network compatibility
405
+ (0, utils_2.setEnvelopeType)(txParams, isEIP1559Compatible);
406
+ }
401
407
  const isDuplicateBatchId = batchId?.length &&
402
408
  this.state.transactions.some((tx) => tx.batchId?.toLowerCase() === batchId?.toLowerCase());
403
409
  if (isDuplicateBatchId && origin && origin !== controller_utils_1.ORIGIN_METAMASK) {
@@ -838,6 +844,7 @@ class TransactionController extends base_controller_1.BaseController {
838
844
  updatedTransaction.type = type;
839
845
  await (0, layer1_gas_fee_flow_1.updateTransactionLayer1GasFee)({
840
846
  layer1GasFeeFlows: this.layer1GasFeeFlows,
847
+ messenger: this.messagingSystem,
841
848
  provider,
842
849
  transactionMeta: updatedTransaction,
843
850
  });
@@ -1050,7 +1057,7 @@ class TransactionController extends base_controller_1.BaseController {
1050
1057
  networkClientId,
1051
1058
  };
1052
1059
  // Guaranteed as the default gas fee flow matches all transactions.
1053
- const gasFeeFlow = (0, gas_flow_1.getGasFeeFlow)(transactionMeta, this.gasFeeFlows);
1060
+ const gasFeeFlow = (0, gas_flow_1.getGasFeeFlow)(transactionMeta, this.gasFeeFlows, this.messagingSystem);
1054
1061
  const ethQuery = new eth_query_1.default(provider);
1055
1062
  const gasFeeControllerData = await this.getGasFeeEstimates({
1056
1063
  networkClientId,
@@ -1058,6 +1065,7 @@ class TransactionController extends base_controller_1.BaseController {
1058
1065
  return gasFeeFlow.getGasFees({
1059
1066
  ethQuery,
1060
1067
  gasFeeControllerData,
1068
+ messenger: this.messagingSystem,
1061
1069
  transactionMeta,
1062
1070
  });
1063
1071
  }
@@ -1077,6 +1085,7 @@ class TransactionController extends base_controller_1.BaseController {
1077
1085
  });
1078
1086
  return await (0, layer1_gas_fee_flow_1.getTransactionLayer1GasFee)({
1079
1087
  layer1GasFeeFlows: this.layer1GasFeeFlows,
1088
+ messenger: this.messagingSystem,
1080
1089
  provider,
1081
1090
  transactionMeta: {
1082
1091
  txParams: transactionParams,
@@ -1235,10 +1244,12 @@ class TransactionController extends base_controller_1.BaseController {
1235
1244
  gasFeeFlows: this.gasFeeFlows,
1236
1245
  getGasFeeEstimates: this.getGasFeeEstimates,
1237
1246
  getSavedGasFees: this.getSavedGasFees.bind(this),
1247
+ messenger: this.messagingSystem,
1238
1248
  txMeta: transactionMeta,
1239
1249
  }));
1240
1250
  await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Update Layer 1 Gas Fees', parentContext: traceContext }, async () => await (0, layer1_gas_fee_flow_1.updateTransactionLayer1GasFee)({
1241
1251
  layer1GasFeeFlows: this.layer1GasFeeFlows,
1252
+ messenger: this.messagingSystem,
1242
1253
  provider,
1243
1254
  transactionMeta,
1244
1255
  }));
@@ -1949,6 +1960,7 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
1949
1960
  getGlobalLock: () => __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").acquireNonceLockForChainIdKey({
1950
1961
  chainId,
1951
1962
  }),
1963
+ messenger: this.messagingSystem,
1952
1964
  publishTransaction: (_ethQuery, transactionMeta) => this.publishTransaction(_ethQuery, transactionMeta, {
1953
1965
  skipSubmitHistory: true,
1954
1966
  }),
@@ -1985,7 +1997,11 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
1985
1997
  if (__classPrivateFieldGet(this, _TransactionController_testGasFeeFlows, "f")) {
1986
1998
  return [new TestGasFeeFlow_1.TestGasFeeFlow()];
1987
1999
  }
1988
- return [new LineaGasFeeFlow_1.LineaGasFeeFlow(), new DefaultGasFeeFlow_1.DefaultGasFeeFlow()];
2000
+ return [
2001
+ new RandomisedEstimationsGasFeeFlow_1.RandomisedEstimationsGasFeeFlow(),
2002
+ new LineaGasFeeFlow_1.LineaGasFeeFlow(),
2003
+ new DefaultGasFeeFlow_1.DefaultGasFeeFlow(),
2004
+ ];
1989
2005
  }, _TransactionController_getLayer1GasFeeFlows = function _TransactionController_getLayer1GasFeeFlows() {
1990
2006
  return [new OptimismLayer1GasFeeFlow_1.OptimismLayer1GasFeeFlow(), new ScrollLayer1GasFeeFlow_1.ScrollLayer1GasFeeFlow()];
1991
2007
  }, _TransactionController_updateTransactionInternal = function _TransactionController_updateTransactionInternal({ transactionId, note, skipHistory, skipValidation, skipResimulateCheck, }, callback) {
@@ -2075,6 +2091,9 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
2075
2091
  };
2076
2092
  let gasFeeTokens = [];
2077
2093
  if (__classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this)) {
2094
+ const authorizationAddress = txParams?.authorizationList?.[0]?.address;
2095
+ const senderCode = authorizationAddress &&
2096
+ (eip7702_1.DELEGATION_PREFIX + (0, utils_1.remove0x)(authorizationAddress));
2078
2097
  const result = await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Simulate', parentContext: traceContext }, () => (0, simulation_1.getSimulationData)({
2079
2098
  chainId,
2080
2099
  from: from,
@@ -2083,6 +2102,7 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
2083
2102
  data: data,
2084
2103
  }, {
2085
2104
  blockTime,
2105
+ senderCode,
2086
2106
  }));
2087
2107
  gasFeeTokens = result?.gasFeeTokens;
2088
2108
  simulationData = result?.simulationData;
@@ -2112,12 +2132,10 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
2112
2132
  (0, logger_1.projectLogger)('Updated simulation data', transactionId, simulationData);
2113
2133
  }, _TransactionController_onGasFeePollerTransactionUpdate = function _TransactionController_onGasFeePollerTransactionUpdate({ transactionId, gasFeeEstimates, gasFeeEstimatesLoaded, layer1GasFee, }) {
2114
2134
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId, skipHistory: true }, (txMeta) => {
2115
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
2116
2135
  (0, GasFeePoller_1.updateTransactionGasFees)({
2117
2136
  txMeta,
2118
2137
  gasFeeEstimates,
2119
2138
  gasFeeEstimatesLoaded,
2120
- getEIP1559Compatibility: this.getEIP1559Compatibility.bind(this),
2121
2139
  isTxParamsGasFeeUpdatesEnabled: this.isTxParamsGasFeeUpdatesEnabled,
2122
2140
  layer1GasFee,
2123
2141
  });