@metamask-previews/transaction-controller 46.0.0-preview-fefdb711 → 46.0.0-preview-b8f29301

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 (185) hide show
  1. package/dist/TransactionController.cjs +47 -70
  2. package/dist/TransactionController.cjs.map +1 -1
  3. package/dist/TransactionController.d.cts +70 -65
  4. package/dist/TransactionController.d.cts.map +1 -1
  5. package/dist/TransactionController.d.mts +70 -65
  6. package/dist/TransactionController.d.mts.map +1 -1
  7. package/dist/TransactionController.mjs +47 -70
  8. package/dist/TransactionController.mjs.map +1 -1
  9. package/dist/api/accounts-api.cjs +0 -2
  10. package/dist/api/accounts-api.cjs.map +1 -1
  11. package/dist/api/accounts-api.d.cts +0 -2
  12. package/dist/api/accounts-api.d.cts.map +1 -1
  13. package/dist/api/accounts-api.d.mts +0 -2
  14. package/dist/api/accounts-api.d.mts.map +1 -1
  15. package/dist/api/accounts-api.mjs +0 -2
  16. package/dist/api/accounts-api.mjs.map +1 -1
  17. package/dist/gas-flows/LineaGasFeeFlow.cjs +1 -1
  18. package/dist/gas-flows/LineaGasFeeFlow.cjs.map +1 -1
  19. package/dist/gas-flows/LineaGasFeeFlow.d.cts.map +1 -1
  20. package/dist/gas-flows/LineaGasFeeFlow.d.mts.map +1 -1
  21. package/dist/gas-flows/LineaGasFeeFlow.mjs +1 -1
  22. package/dist/gas-flows/LineaGasFeeFlow.mjs.map +1 -1
  23. package/dist/gas-flows/OptimismLayer1GasFeeFlow.cjs +1 -1
  24. package/dist/gas-flows/OptimismLayer1GasFeeFlow.cjs.map +1 -1
  25. package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.cts +1 -1
  26. package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.cts.map +1 -1
  27. package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.mts +1 -1
  28. package/dist/gas-flows/OptimismLayer1GasFeeFlow.d.mts.map +1 -1
  29. package/dist/gas-flows/OptimismLayer1GasFeeFlow.mjs +1 -1
  30. package/dist/gas-flows/OptimismLayer1GasFeeFlow.mjs.map +1 -1
  31. package/dist/gas-flows/ScrollLayer1GasFeeFlow.cjs +1 -1
  32. package/dist/gas-flows/ScrollLayer1GasFeeFlow.cjs.map +1 -1
  33. package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.cts +1 -1
  34. package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.cts.map +1 -1
  35. package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.mts +1 -1
  36. package/dist/gas-flows/ScrollLayer1GasFeeFlow.d.mts.map +1 -1
  37. package/dist/gas-flows/ScrollLayer1GasFeeFlow.mjs +1 -1
  38. package/dist/gas-flows/ScrollLayer1GasFeeFlow.mjs.map +1 -1
  39. package/dist/helpers/GasFeePoller.cjs +0 -1
  40. package/dist/helpers/GasFeePoller.cjs.map +1 -1
  41. package/dist/helpers/GasFeePoller.d.cts +0 -1
  42. package/dist/helpers/GasFeePoller.d.cts.map +1 -1
  43. package/dist/helpers/GasFeePoller.d.mts +0 -1
  44. package/dist/helpers/GasFeePoller.d.mts.map +1 -1
  45. package/dist/helpers/GasFeePoller.mjs +0 -1
  46. package/dist/helpers/GasFeePoller.mjs.map +1 -1
  47. package/dist/helpers/IncomingTransactionHelper.cjs.map +1 -1
  48. package/dist/helpers/IncomingTransactionHelper.d.cts.map +1 -1
  49. package/dist/helpers/IncomingTransactionHelper.d.mts.map +1 -1
  50. package/dist/helpers/IncomingTransactionHelper.mjs.map +1 -1
  51. package/dist/helpers/MethodDataHelper.cjs.map +1 -1
  52. package/dist/helpers/MethodDataHelper.d.cts.map +1 -1
  53. package/dist/helpers/MethodDataHelper.d.mts.map +1 -1
  54. package/dist/helpers/MethodDataHelper.mjs.map +1 -1
  55. package/dist/helpers/MultichainTrackingHelper.cjs +21 -1
  56. package/dist/helpers/MultichainTrackingHelper.cjs.map +1 -1
  57. package/dist/helpers/MultichainTrackingHelper.d.cts.map +1 -1
  58. package/dist/helpers/MultichainTrackingHelper.d.mts.map +1 -1
  59. package/dist/helpers/MultichainTrackingHelper.mjs +21 -1
  60. package/dist/helpers/MultichainTrackingHelper.mjs.map +1 -1
  61. package/dist/helpers/PendingTransactionTracker.cjs.map +1 -1
  62. package/dist/helpers/PendingTransactionTracker.d.cts.map +1 -1
  63. package/dist/helpers/PendingTransactionTracker.d.mts.map +1 -1
  64. package/dist/helpers/PendingTransactionTracker.mjs.map +1 -1
  65. package/dist/helpers/TransactionPoller.cjs +0 -2
  66. package/dist/helpers/TransactionPoller.cjs.map +1 -1
  67. package/dist/helpers/TransactionPoller.d.cts +0 -2
  68. package/dist/helpers/TransactionPoller.d.cts.map +1 -1
  69. package/dist/helpers/TransactionPoller.d.mts +0 -2
  70. package/dist/helpers/TransactionPoller.d.mts.map +1 -1
  71. package/dist/helpers/TransactionPoller.mjs +0 -2
  72. package/dist/helpers/TransactionPoller.mjs.map +1 -1
  73. package/dist/index.cjs.map +1 -1
  74. package/dist/index.d.cts +1 -1
  75. package/dist/index.d.cts.map +1 -1
  76. package/dist/index.d.mts +1 -1
  77. package/dist/index.d.mts.map +1 -1
  78. package/dist/index.mjs.map +1 -1
  79. package/dist/types.cjs.map +1 -1
  80. package/dist/types.d.cts +0 -74
  81. package/dist/types.d.cts.map +1 -1
  82. package/dist/types.d.mts +0 -74
  83. package/dist/types.d.mts.map +1 -1
  84. package/dist/types.mjs.map +1 -1
  85. package/dist/utils/batch.cjs +1 -123
  86. package/dist/utils/batch.cjs.map +1 -1
  87. package/dist/utils/batch.d.cts +1 -7
  88. package/dist/utils/batch.d.cts.map +1 -1
  89. package/dist/utils/batch.d.mts +1 -7
  90. package/dist/utils/batch.d.mts.map +1 -1
  91. package/dist/utils/batch.mjs +1 -123
  92. package/dist/utils/batch.mjs.map +1 -1
  93. package/dist/utils/gas-fees.cjs +3 -48
  94. package/dist/utils/gas-fees.cjs.map +1 -1
  95. package/dist/utils/gas-fees.d.cts +0 -11
  96. package/dist/utils/gas-fees.d.cts.map +1 -1
  97. package/dist/utils/gas-fees.d.mts +0 -11
  98. package/dist/utils/gas-fees.d.mts.map +1 -1
  99. package/dist/utils/gas-fees.mjs +3 -48
  100. package/dist/utils/gas-fees.mjs.map +1 -1
  101. package/dist/utils/gas-flow.cjs +0 -4
  102. package/dist/utils/gas-flow.cjs.map +1 -1
  103. package/dist/utils/gas-flow.d.cts +0 -1
  104. package/dist/utils/gas-flow.d.cts.map +1 -1
  105. package/dist/utils/gas-flow.d.mts +0 -1
  106. package/dist/utils/gas-flow.d.mts.map +1 -1
  107. package/dist/utils/gas-flow.mjs +0 -4
  108. package/dist/utils/gas-flow.mjs.map +1 -1
  109. package/dist/utils/gas.cjs +1 -50
  110. package/dist/utils/gas.cjs.map +1 -1
  111. package/dist/utils/gas.d.cts +0 -22
  112. package/dist/utils/gas.d.cts.map +1 -1
  113. package/dist/utils/gas.d.mts +0 -22
  114. package/dist/utils/gas.d.mts.map +1 -1
  115. package/dist/utils/gas.mjs +1 -50
  116. package/dist/utils/gas.mjs.map +1 -1
  117. package/dist/utils/layer1-gas-fee-flow.cjs +1 -5
  118. package/dist/utils/layer1-gas-fee-flow.cjs.map +1 -1
  119. package/dist/utils/layer1-gas-fee-flow.d.cts +1 -4
  120. package/dist/utils/layer1-gas-fee-flow.d.cts.map +1 -1
  121. package/dist/utils/layer1-gas-fee-flow.d.mts +1 -4
  122. package/dist/utils/layer1-gas-fee-flow.d.mts.map +1 -1
  123. package/dist/utils/layer1-gas-fee-flow.mjs +1 -5
  124. package/dist/utils/layer1-gas-fee-flow.mjs.map +1 -1
  125. package/dist/utils/nonce.cjs +3 -3
  126. package/dist/utils/nonce.cjs.map +1 -1
  127. package/dist/utils/nonce.d.cts +2 -2
  128. package/dist/utils/nonce.d.cts.map +1 -1
  129. package/dist/utils/nonce.d.mts +2 -2
  130. package/dist/utils/nonce.d.mts.map +1 -1
  131. package/dist/utils/nonce.mjs +3 -3
  132. package/dist/utils/nonce.mjs.map +1 -1
  133. package/dist/utils/retry.cjs +0 -4
  134. package/dist/utils/retry.cjs.map +1 -1
  135. package/dist/utils/retry.d.cts +0 -1
  136. package/dist/utils/retry.d.cts.map +1 -1
  137. package/dist/utils/retry.d.mts +0 -1
  138. package/dist/utils/retry.d.mts.map +1 -1
  139. package/dist/utils/retry.mjs +0 -4
  140. package/dist/utils/retry.mjs.map +1 -1
  141. package/dist/utils/simulation-api.cjs +0 -6
  142. package/dist/utils/simulation-api.cjs.map +1 -1
  143. package/dist/utils/simulation-api.d.cts +0 -2
  144. package/dist/utils/simulation-api.d.cts.map +1 -1
  145. package/dist/utils/simulation-api.d.mts +0 -2
  146. package/dist/utils/simulation-api.d.mts.map +1 -1
  147. package/dist/utils/simulation-api.mjs +0 -6
  148. package/dist/utils/simulation-api.mjs.map +1 -1
  149. package/dist/utils/simulation.cjs +5 -19
  150. package/dist/utils/simulation.cjs.map +1 -1
  151. package/dist/utils/simulation.d.cts +1 -3
  152. package/dist/utils/simulation.d.cts.map +1 -1
  153. package/dist/utils/simulation.d.mts +1 -3
  154. package/dist/utils/simulation.d.mts.map +1 -1
  155. package/dist/utils/simulation.mjs +5 -19
  156. package/dist/utils/simulation.mjs.map +1 -1
  157. package/dist/utils/swaps.cjs +1 -2
  158. package/dist/utils/swaps.cjs.map +1 -1
  159. package/dist/utils/swaps.d.cts +0 -1
  160. package/dist/utils/swaps.d.cts.map +1 -1
  161. package/dist/utils/swaps.d.mts +0 -1
  162. package/dist/utils/swaps.d.mts.map +1 -1
  163. package/dist/utils/swaps.mjs +1 -2
  164. package/dist/utils/swaps.mjs.map +1 -1
  165. package/dist/utils/transaction-type.cjs +1 -3
  166. package/dist/utils/transaction-type.cjs.map +1 -1
  167. package/dist/utils/transaction-type.mjs +1 -3
  168. package/dist/utils/transaction-type.mjs.map +1 -1
  169. package/package.json +1 -1
  170. package/dist/hooks/CollectPublishHook.cjs +0 -84
  171. package/dist/hooks/CollectPublishHook.cjs.map +0 -1
  172. package/dist/hooks/CollectPublishHook.d.cts +0 -29
  173. package/dist/hooks/CollectPublishHook.d.cts.map +0 -1
  174. package/dist/hooks/CollectPublishHook.d.mts +0 -29
  175. package/dist/hooks/CollectPublishHook.d.mts.map +0 -1
  176. package/dist/hooks/CollectPublishHook.mjs +0 -80
  177. package/dist/hooks/CollectPublishHook.mjs.map +0 -1
  178. package/dist/hooks/ExtraTransactionsPublishHook.cjs +0 -84
  179. package/dist/hooks/ExtraTransactionsPublishHook.cjs.map +0 -1
  180. package/dist/hooks/ExtraTransactionsPublishHook.d.cts +0 -18
  181. package/dist/hooks/ExtraTransactionsPublishHook.d.cts.map +0 -1
  182. package/dist/hooks/ExtraTransactionsPublishHook.d.mts +0 -18
  183. package/dist/hooks/ExtraTransactionsPublishHook.d.mts.map +0 -1
  184. package/dist/hooks/ExtraTransactionsPublishHook.mjs +0 -80
  185. package/dist/hooks/ExtraTransactionsPublishHook.mjs.map +0 -1
@@ -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_publishBatchHook, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _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;
16
+ var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_methodDataHelper, _TransactionController_incomingTransactionChainIds, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _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;
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");
@@ -23,6 +23,7 @@ const network_controller_1 = require("@metamask/network-controller");
23
23
  const nonce_tracker_1 = require("@metamask/nonce-tracker");
24
24
  const rpc_errors_1 = require("@metamask/rpc-errors");
25
25
  const utils_1 = require("@metamask/utils");
26
+ const async_mutex_1 = require("async-mutex");
26
27
  // This package purposefully relies on Node's EventEmitter module.
27
28
  // eslint-disable-next-line import-x/no-nodejs-modules
28
29
  const events_1 = require("events");
@@ -41,7 +42,6 @@ const MethodDataHelper_1 = require("./helpers/MethodDataHelper.cjs");
41
42
  const MultichainTrackingHelper_1 = require("./helpers/MultichainTrackingHelper.cjs");
42
43
  const PendingTransactionTracker_1 = require("./helpers/PendingTransactionTracker.cjs");
43
44
  const ResimulateHelper_1 = require("./helpers/ResimulateHelper.cjs");
44
- const ExtraTransactionsPublishHook_1 = require("./hooks/ExtraTransactionsPublishHook.cjs");
45
45
  const logger_1 = require("./logger.cjs");
46
46
  const types_1 = require("./types.cjs");
47
47
  const batch_1 = require("./utils/batch.cjs");
@@ -154,9 +154,31 @@ class TransactionController extends base_controller_1.BaseController {
154
154
  * Constructs a TransactionController.
155
155
  *
156
156
  * @param options - The controller options.
157
+ * @param options.disableHistory - Whether to disable storing history in transaction metadata.
158
+ * @param options.disableSendFlowHistory - Explicitly disable transaction metadata history.
159
+ * @param options.disableSwaps - Whether to disable additional processing on swaps transactions.
160
+ * @param options.getCurrentAccountEIP1559Compatibility - Whether or not the account supports EIP-1559.
161
+ * @param options.getCurrentNetworkEIP1559Compatibility - Whether or not the network supports EIP-1559.
162
+ * @param options.getExternalPendingTransactions - Callback to retrieve pending transactions from external sources.
163
+ * @param options.getGasFeeEstimates - Callback to retrieve gas fee estimates.
164
+ * @param options.getNetworkClientRegistry - Gets the network client registry.
165
+ * @param options.getNetworkState - Gets the state of the network controller.
166
+ * @param options.getPermittedAccounts - Get accounts that a given origin has permissions for.
167
+ * @param options.getSavedGasFees - Gets the saved gas fee config.
168
+ * @param options.incomingTransactions - Configuration options for incoming transaction support.
169
+ * @param options.isFirstTimeInteractionEnabled - Whether first time interaction checks are enabled.
170
+ * @param options.isSimulationEnabled - Whether new transactions will be automatically simulated.
171
+ * @param options.messenger - The controller messenger.
172
+ * @param options.pendingTransactions - Configuration options for pending transaction support.
173
+ * @param options.securityProviderRequest - A function for verifying a transaction, whether it is malicious or not.
174
+ * @param options.sign - Function used to sign transactions.
175
+ * @param options.state - Initial state to set on this controller.
176
+ * @param options.testGasFeeFlows - Whether to use the test gas fee flow.
177
+ * @param options.trace - Callback to generate trace information.
178
+ * @param options.transactionHistoryLimit - Transaction history limit.
179
+ * @param options.hooks - The controller hooks.
157
180
  */
158
- constructor(options) {
159
- const { disableHistory, disableSendFlowHistory, disableSwaps, getCurrentAccountEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, getExternalPendingTransactions, getGasFeeEstimates, getNetworkClientRegistry, getNetworkState, getPermittedAccounts, getSavedGasFees, incomingTransactions = {}, isFirstTimeInteractionEnabled, isSimulationEnabled, messenger, pendingTransactions = {}, securityProviderRequest, sign, state, testGasFeeFlows, trace, transactionHistoryLimit = 40, hooks, } = options;
181
+ constructor({ disableHistory, disableSendFlowHistory, disableSwaps, getCurrentAccountEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, getExternalPendingTransactions, getGasFeeEstimates, getNetworkClientRegistry, getNetworkState, getPermittedAccounts, getSavedGasFees, incomingTransactions = {}, isFirstTimeInteractionEnabled, isSimulationEnabled, messenger, pendingTransactions = {}, securityProviderRequest, sign, state, testGasFeeFlows, trace, transactionHistoryLimit = 40, hooks, }) {
160
182
  super({
161
183
  name: controllerName,
162
184
  metadata,
@@ -170,11 +192,11 @@ class TransactionController extends base_controller_1.BaseController {
170
192
  _TransactionController_internalEvents.set(this, new events_1.EventEmitter());
171
193
  this.approvingTransactionIds = new Set();
172
194
  _TransactionController_methodDataHelper.set(this, void 0);
195
+ this.mutex = new async_mutex_1.Mutex();
173
196
  _TransactionController_incomingTransactionChainIds.set(this, new Set());
174
197
  _TransactionController_incomingTransactionHelper.set(this, void 0);
175
198
  _TransactionController_incomingTransactionOptions.set(this, void 0);
176
199
  _TransactionController_pendingTransactionOptions.set(this, void 0);
177
- _TransactionController_publishBatchHook.set(this, void 0);
178
200
  this.signAbortCallbacks = new Map();
179
201
  _TransactionController_trace.set(this, void 0);
180
202
  _TransactionController_transactionHistoryLimit.set(this, void 0);
@@ -205,7 +227,6 @@ class TransactionController extends base_controller_1.BaseController {
205
227
  this.securityProviderRequest = securityProviderRequest;
206
228
  __classPrivateFieldSet(this, _TransactionController_incomingTransactionOptions, incomingTransactions, "f");
207
229
  __classPrivateFieldSet(this, _TransactionController_pendingTransactionOptions, pendingTransactions, "f");
208
- __classPrivateFieldSet(this, _TransactionController_publishBatchHook, hooks?.publishBatch, "f");
209
230
  __classPrivateFieldSet(this, _TransactionController_transactionHistoryLimit, transactionHistoryLimit, "f");
210
231
  this.sign = sign;
211
232
  __classPrivateFieldSet(this, _TransactionController_testGasFeeFlows, testGasFeeFlows === true, "f");
@@ -320,11 +341,8 @@ class TransactionController extends base_controller_1.BaseController {
320
341
  getChainId: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getChainId).bind(this),
321
342
  getEthQuery: (networkClientId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, { networkClientId }),
322
343
  getInternalAccounts: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getInternalAccounts).bind(this),
323
- getTransaction: (transactionId) => this.getTransactionOrThrow(transactionId),
324
344
  messenger: this.messagingSystem,
325
- publishBatchHook: __classPrivateFieldGet(this, _TransactionController_publishBatchHook, "f"),
326
345
  request,
327
- updateTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).bind(this),
328
346
  });
329
347
  }
330
348
  /**
@@ -348,12 +366,10 @@ class TransactionController extends base_controller_1.BaseController {
348
366
  * @param txParams - Standard parameters for an Ethereum transaction.
349
367
  * @param options - Additional options to control how the transaction is added.
350
368
  * @param options.actionId - Unique ID to prevent duplicate requests.
351
- * @param options.batchId - ID of the batch this transaction belongs to.
352
369
  * @param options.deviceConfirmedOn - An enum to indicate what device confirmed the transaction.
353
370
  * @param options.method - RPC method that requested the transaction.
354
371
  * @param options.nestedTransactions - Params for any nested transactions encoded in the data.
355
372
  * @param options.origin - The origin of the transaction request, such as a dApp hostname.
356
- * @param options.publishHook - Custom logic to publish the transaction.
357
373
  * @param options.requireApproval - Whether the transaction requires approval by the user, defaults to true unless explicitly disabled.
358
374
  * @param options.securityAlertResponse - Response from security validator.
359
375
  * @param options.sendFlowHistory - The sendFlowHistory entries to add.
@@ -367,7 +383,7 @@ class TransactionController extends base_controller_1.BaseController {
367
383
  */
368
384
  async addTransaction(txParams, options) {
369
385
  (0, logger_1.projectLogger)('Adding transaction', txParams, options);
370
- const { actionId, batchId, deviceConfirmedOn, method, nestedTransactions, networkClientId, origin, publishHook, requireApproval, securityAlertResponse, sendFlowHistory, swaps = {}, traceContext, type, } = options;
386
+ const { actionId, deviceConfirmedOn, method, nestedTransactions, networkClientId, origin, requireApproval, securityAlertResponse, sendFlowHistory, swaps = {}, traceContext, type, } = options;
371
387
  txParams = (0, utils_2.normalizeTransactionParams)(txParams);
372
388
  if (!__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").has(networkClientId)) {
373
389
  throw new Error(`Network client not found - ${networkClientId}`);
@@ -401,7 +417,6 @@ class TransactionController extends base_controller_1.BaseController {
401
417
  : {
402
418
  // Add actionId to txMeta to check if same actionId is seen again
403
419
  actionId,
404
- batchId,
405
420
  chainId,
406
421
  dappSuggestedGasFees,
407
422
  deviceConfirmedOn,
@@ -462,10 +477,9 @@ class TransactionController extends base_controller_1.BaseController {
462
477
  }
463
478
  return {
464
479
  result: this.processApproval(addedTransactionMeta, {
465
- actionId,
466
480
  isExisting: Boolean(existingTransactionMeta),
467
- publishHook,
468
481
  requireApproval,
482
+ actionId,
469
483
  traceContext,
470
484
  }),
471
485
  transactionMeta: addedTransactionMeta,
@@ -499,7 +513,7 @@ class TransactionController extends base_controller_1.BaseController {
499
513
  * @param options.estimatedBaseFee - The estimated base fee of the transaction.
500
514
  */
501
515
  async stopTransaction(transactionId, gasValues, { estimatedBaseFee, actionId, } = {}) {
502
- await __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_retryTransaction).call(this, {
516
+ return await __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_retryTransaction).call(this, {
503
517
  actionId,
504
518
  estimatedBaseFee,
505
519
  gasValues,
@@ -528,7 +542,7 @@ class TransactionController extends base_controller_1.BaseController {
528
542
  * @param options.estimatedBaseFee - The estimated base fee of the transaction.
529
543
  */
530
544
  async speedUpTransaction(transactionId, gasValues, { actionId, estimatedBaseFee, } = {}) {
531
- await __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_retryTransaction).call(this, {
545
+ return await __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_retryTransaction).call(this, {
532
546
  actionId,
533
547
  estimatedBaseFee,
534
548
  gasValues,
@@ -561,7 +575,6 @@ class TransactionController extends base_controller_1.BaseController {
561
575
  * @param transaction - The transaction params to estimate gas for.
562
576
  * @param multiplier - The multiplier to use for the gas buffer.
563
577
  * @param networkClientId - The network client id to use for the estimate.
564
- * @returns The buffered estimated gas and whether the estimation failed.
565
578
  */
566
579
  async estimateGasBuffered(transaction, multiplier, networkClientId) {
567
580
  const ethQuery = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, {
@@ -1048,7 +1061,6 @@ class TransactionController extends base_controller_1.BaseController {
1048
1061
  * @param request.transactionParams - The transaction parameters to estimate the layer 1 gas fee for.
1049
1062
  * @param request.chainId - The ID of the chain where the transaction will be executed.
1050
1063
  * @param request.networkClientId - The ID of a specific network client to process the transaction.
1051
- * @returns The layer 1 gas fee.
1052
1064
  */
1053
1065
  async getLayer1GasFee({ transactionParams, chainId, networkClientId, }) {
1054
1066
  const provider = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getProvider).call(this, {
@@ -1111,23 +1123,6 @@ class TransactionController extends base_controller_1.BaseController {
1111
1123
  abortCallback();
1112
1124
  this.signAbortCallbacks.delete(transactionId);
1113
1125
  }
1114
- /**
1115
- * Update the batch transactions associated with a transaction.
1116
- * These transactions will be submitted with the main transaction as a batch.
1117
- *
1118
- * @param request - The request object.
1119
- * @param request.transactionId - The ID of the transaction to update.
1120
- * @param request.batchTransactions - The new batch transactions.
1121
- */
1122
- updateBatchTransactions({ transactionId, batchTransactions, }) {
1123
- (0, logger_1.projectLogger)('Updating batch transactions', { transactionId, batchTransactions });
1124
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
1125
- transactionId,
1126
- note: 'TransactionController#updateBatchTransactions - Batch transactions updated',
1127
- }, (transactionMeta) => {
1128
- transactionMeta.batchTransactions = batchTransactions;
1129
- });
1130
- }
1131
1126
  addMetadata(transactionMeta) {
1132
1127
  (0, validation_1.validateTxParams)(transactionMeta.txParams);
1133
1128
  this.update((state) => {
@@ -1177,7 +1172,7 @@ class TransactionController extends base_controller_1.BaseController {
1177
1172
  this.failTransaction(transactionMeta, new Error('Transaction incomplete at startup'));
1178
1173
  }
1179
1174
  }
1180
- async processApproval(transactionMeta, { actionId, isExisting = false, publishHook, requireApproval, shouldShowRequest = true, traceContext, }) {
1175
+ async processApproval(transactionMeta, { isExisting = false, requireApproval, shouldShowRequest = true, actionId, traceContext, }) {
1181
1176
  const transactionId = transactionMeta.id;
1182
1177
  let resultCallbacks;
1183
1178
  const { meta, isCompleted } = this.isTransactionCompleted(transactionId);
@@ -1204,7 +1199,7 @@ class TransactionController extends base_controller_1.BaseController {
1204
1199
  }
1205
1200
  const { isCompleted: isTxCompleted } = this.isTransactionCompleted(transactionId);
1206
1201
  if (!isTxCompleted) {
1207
- const approvalResult = await this.approveTransaction(transactionId, traceContext, publishHook);
1202
+ const approvalResult = await this.approveTransaction(transactionId, traceContext);
1208
1203
  if (approvalResult === ApprovalState.SkippedViaBeforePublishHook &&
1209
1204
  resultCallbacks) {
1210
1205
  resultCallbacks.success();
@@ -1238,7 +1233,7 @@ class TransactionController extends base_controller_1.BaseController {
1238
1233
  switch (finalMeta?.status) {
1239
1234
  case types_1.TransactionStatus.failed:
1240
1235
  resultCallbacks?.error(finalMeta.error);
1241
- throw rpc_errors_1.rpcErrors.internal(finalMeta.error.stack);
1236
+ throw rpc_errors_1.rpcErrors.internal(finalMeta.error.message);
1242
1237
  case types_1.TransactionStatus.submitted:
1243
1238
  resultCallbacks?.success();
1244
1239
  return finalMeta.hash;
@@ -1256,14 +1251,11 @@ class TransactionController extends base_controller_1.BaseController {
1256
1251
  *
1257
1252
  * @param transactionId - The ID of the transaction to approve.
1258
1253
  * @param traceContext - The parent context for any new traces.
1259
- * @param publishHookOverride - Custom logic to publish the transaction.
1260
- * @returns The state of the approval.
1261
1254
  */
1262
- async approveTransaction(transactionId, traceContext, publishHookOverride) {
1263
- let clearApprovingTransactionId;
1264
- let clearNonceLock;
1255
+ async approveTransaction(transactionId, traceContext) {
1256
+ const cleanupTasks = new Array();
1257
+ cleanupTasks.push(await this.mutex.acquire());
1265
1258
  let transactionMeta = this.getTransactionOrThrow(transactionId);
1266
- (0, logger_1.projectLogger)('Approving transaction', transactionMeta);
1267
1259
  try {
1268
1260
  if (!this.sign) {
1269
1261
  this.failTransaction(transactionMeta, new Error('No sign method defined.'));
@@ -1278,9 +1270,10 @@ class TransactionController extends base_controller_1.BaseController {
1278
1270
  return ApprovalState.NotApproved;
1279
1271
  }
1280
1272
  this.approvingTransactionIds.add(transactionId);
1281
- clearApprovingTransactionId = () => this.approvingTransactionIds.delete(transactionId);
1273
+ cleanupTasks.push(() => this.approvingTransactionIds.delete(transactionId));
1282
1274
  const [nonce, releaseNonce] = await (0, nonce_1.getNextNonce)(transactionMeta, (address) => __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").getNonceLock(address, transactionMeta.networkClientId));
1283
- clearNonceLock = releaseNonce;
1275
+ // must set transaction to submitted/failed before releasing lock
1276
+ releaseNonce && cleanupTasks.push(releaseNonce);
1284
1277
  transactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
1285
1278
  transactionId,
1286
1279
  note: 'TransactionController#approveTransaction - Transaction approved',
@@ -1317,19 +1310,8 @@ class TransactionController extends base_controller_1.BaseController {
1317
1310
  }
1318
1311
  (0, logger_1.projectLogger)('Publishing transaction', transactionMeta.txParams);
1319
1312
  let hash;
1320
- clearNonceLock?.();
1321
- clearNonceLock = undefined;
1322
- if (transactionMeta.batchTransactions?.length) {
1323
- (0, logger_1.projectLogger)('Found batch transactions', transactionMeta.batchTransactions);
1324
- const extraTransactionsPublishHook = new ExtraTransactionsPublishHook_1.ExtraTransactionsPublishHook({
1325
- addTransactionBatch: this.addTransactionBatch.bind(this),
1326
- transactions: transactionMeta.batchTransactions,
1327
- });
1328
- publishHookOverride = extraTransactionsPublishHook.getHook();
1329
- }
1330
1313
  await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Publish', parentContext: traceContext }, async () => {
1331
- const publishHook = publishHookOverride ?? this.publish;
1332
- ({ transactionHash: hash } = await publishHook(transactionMeta, rawTx));
1314
+ ({ transactionHash: hash } = await this.publish(transactionMeta, rawTx));
1333
1315
  if (hash === undefined) {
1334
1316
  hash = await this.publishTransaction(ethQuery, {
1335
1317
  ...transactionMeta,
@@ -1365,8 +1347,7 @@ class TransactionController extends base_controller_1.BaseController {
1365
1347
  return ApprovalState.NotApproved;
1366
1348
  }
1367
1349
  finally {
1368
- clearApprovingTransactionId?.();
1369
- clearNonceLock?.();
1350
+ cleanupTasks.forEach((task) => task());
1370
1351
  }
1371
1352
  }
1372
1353
  async publishTransaction(ethQuery, transactionMeta, { skipSubmitHistory } = {}) {
@@ -1721,8 +1702,8 @@ class TransactionController extends base_controller_1.BaseController {
1721
1702
  transactionMeta,
1722
1703
  });
1723
1704
  }
1724
- getNonceTrackerTransactions(statuses, address, chainId) {
1725
- return (0, nonce_1.getAndFormatTransactionsForNonceTracker)(chainId, address, statuses, this.state.transactions);
1705
+ getNonceTrackerTransactions(status, address, chainId) {
1706
+ return (0, nonce_1.getAndFormatTransactionsForNonceTracker)(chainId, address, status, this.state.transactions);
1726
1707
  }
1727
1708
  onConfirmedTransaction(transactionMeta) {
1728
1709
  (0, logger_1.projectLogger)('Processing confirmed transaction', transactionMeta.id);
@@ -1783,7 +1764,7 @@ class TransactionController extends base_controller_1.BaseController {
1783
1764
  }
1784
1765
  }
1785
1766
  exports.TransactionController = TransactionController;
1786
- _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_publishBatchHook = 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, }) {
1767
+ _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_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, }) {
1787
1768
  // If transaction is found for same action id, do not create a new transaction.
1788
1769
  if (this.getTransactionWithActionId(actionId)) {
1789
1770
  return;
@@ -1873,7 +1854,7 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
1873
1854
  // TODO: Fix types
1874
1855
  blockTracker,
1875
1856
  getPendingTransactions: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getNonceTrackerPendingTransactions).bind(this, chainId),
1876
- getConfirmedTransactions: this.getNonceTrackerTransactions.bind(this, [types_1.TransactionStatus.confirmed], chainId),
1857
+ getConfirmedTransactions: this.getNonceTrackerTransactions.bind(this, types_1.TransactionStatus.confirmed, chainId),
1877
1858
  });
1878
1859
  }, _TransactionController_createPendingTransactionTracker = function _TransactionController_createPendingTransactionTracker({ provider, blockTracker, chainId, networkClientId, }) {
1879
1860
  const ethQuery = new eth_query_1.default(provider);
@@ -1912,11 +1893,7 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
1912
1893
  pendingTransactionTracker.hub.on('transaction-failed', this.failTransaction.bind(this));
1913
1894
  pendingTransactionTracker.hub.on('transaction-updated', this.updateTransaction.bind(this));
1914
1895
  }, _TransactionController_getNonceTrackerPendingTransactions = function _TransactionController_getNonceTrackerPendingTransactions(chainId, address) {
1915
- const standardPendingTransactions = this.getNonceTrackerTransactions([
1916
- types_1.TransactionStatus.approved,
1917
- types_1.TransactionStatus.signed,
1918
- types_1.TransactionStatus.submitted,
1919
- ], address, chainId);
1896
+ const standardPendingTransactions = this.getNonceTrackerTransactions(types_1.TransactionStatus.submitted, address, chainId);
1920
1897
  const externalPendingTransactions = this.getExternalPendingTransactions(address, chainId);
1921
1898
  return [...standardPendingTransactions, ...externalPendingTransactions];
1922
1899
  }, _TransactionController_getGasFeeFlows = function _TransactionController_getGasFeeFlows() {