@metamask-previews/transaction-controller 52.1.0-preview-8a8331b2 → 52.1.0-preview-6bd2731f

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 +0 -28
  2. package/dist/TransactionController.cjs +23 -69
  3. package/dist/TransactionController.cjs.map +1 -1
  4. package/dist/TransactionController.d.cts +5 -26
  5. package/dist/TransactionController.d.cts.map +1 -1
  6. package/dist/TransactionController.d.mts +5 -26
  7. package/dist/TransactionController.d.mts.map +1 -1
  8. package/dist/TransactionController.mjs +23 -69
  9. package/dist/TransactionController.mjs.map +1 -1
  10. package/dist/index.cjs.map +1 -1
  11. package/dist/index.d.cts +1 -1
  12. package/dist/index.d.cts.map +1 -1
  13. package/dist/index.d.mts +1 -1
  14. package/dist/index.d.mts.map +1 -1
  15. package/dist/index.mjs.map +1 -1
  16. package/dist/types.cjs.map +1 -1
  17. package/dist/types.d.cts +2 -113
  18. package/dist/types.d.cts.map +1 -1
  19. package/dist/types.d.mts +2 -113
  20. package/dist/types.d.mts.map +1 -1
  21. package/dist/types.mjs.map +1 -1
  22. package/dist/utils/batch.cjs +1 -142
  23. package/dist/utils/batch.cjs.map +1 -1
  24. package/dist/utils/batch.d.cts +1 -7
  25. package/dist/utils/batch.d.cts.map +1 -1
  26. package/dist/utils/batch.d.mts +1 -7
  27. package/dist/utils/batch.d.mts.map +1 -1
  28. package/dist/utils/batch.mjs +1 -142
  29. package/dist/utils/batch.mjs.map +1 -1
  30. package/dist/utils/eip7702.cjs +0 -12
  31. package/dist/utils/eip7702.cjs.map +1 -1
  32. package/dist/utils/eip7702.d.cts.map +1 -1
  33. package/dist/utils/eip7702.d.mts.map +1 -1
  34. package/dist/utils/eip7702.mjs +0 -12
  35. package/dist/utils/eip7702.mjs.map +1 -1
  36. package/dist/utils/gas.cjs +3 -7
  37. package/dist/utils/gas.cjs.map +1 -1
  38. package/dist/utils/gas.mjs +3 -7
  39. package/dist/utils/gas.mjs.map +1 -1
  40. package/dist/utils/nonce.cjs +3 -3
  41. package/dist/utils/nonce.cjs.map +1 -1
  42. package/dist/utils/nonce.d.cts +2 -2
  43. package/dist/utils/nonce.d.cts.map +1 -1
  44. package/dist/utils/nonce.d.mts +2 -2
  45. package/dist/utils/nonce.d.mts.map +1 -1
  46. package/dist/utils/nonce.mjs +3 -3
  47. package/dist/utils/nonce.mjs.map +1 -1
  48. package/package.json +1 -1
  49. package/dist/hooks/CollectPublishHook.cjs +0 -84
  50. package/dist/hooks/CollectPublishHook.cjs.map +0 -1
  51. package/dist/hooks/CollectPublishHook.d.cts +0 -29
  52. package/dist/hooks/CollectPublishHook.d.cts.map +0 -1
  53. package/dist/hooks/CollectPublishHook.d.mts +0 -29
  54. package/dist/hooks/CollectPublishHook.d.mts.map +0 -1
  55. package/dist/hooks/CollectPublishHook.mjs +0 -80
  56. package/dist/hooks/CollectPublishHook.mjs.map +0 -1
  57. package/dist/hooks/ExtraTransactionsPublishHook.cjs +0 -90
  58. package/dist/hooks/ExtraTransactionsPublishHook.cjs.map +0 -1
  59. package/dist/hooks/ExtraTransactionsPublishHook.d.cts +0 -18
  60. package/dist/hooks/ExtraTransactionsPublishHook.d.cts.map +0 -1
  61. package/dist/hooks/ExtraTransactionsPublishHook.d.mts +0 -18
  62. package/dist/hooks/ExtraTransactionsPublishHook.d.mts.map +0 -1
  63. package/dist/hooks/ExtraTransactionsPublishHook.mjs +0 -86
  64. package/dist/hooks/ExtraTransactionsPublishHook.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -7,34 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ### Added
11
-
12
- - Support security validation of transaction batches ([#5526](https://github.com/MetaMask/core/pull/5526))
13
- - Add `ValidateSecurityRequest` type.
14
- - Add optional `securityAlertId` to `SecurityAlertResponse`.
15
- - Add optional `securityAlertId` to `TransactionBatchRequest`.
16
- - Add optional `validateSecurity` callback to `TransactionBatchRequest`.
17
- - Support publish batch hook ([#5401](https://github.com/MetaMask/core/pull/5401))
18
- - Add `hooks.publishBatch` option to constructor.
19
- - Add `updateBatchTransactions` method.
20
- - Add `maxFeePerGas` and `maxPriorityFeePerGas` to `updateEditableParams` options.
21
- - Add types.
22
- - `PublishBatchHook`
23
- - `PublishBatchHookRequest`
24
- - `PublishBatchHookResult`
25
- - `PublishBatchHookTransaction`
26
- - `PublishHook`
27
- - `PublishHookResult`
28
- - Add optional properties to `TransactionMeta`.
29
- - `batchTransactions`
30
- - `disableGasBuffer`
31
- - Add optional properties to `BatchTransactionParams`.
32
- - `gas`
33
- - `maxFeePerGas`
34
- - `maxPriorityFeePerGas`
35
- - Add optional `existingTransaction` property to `TransactionBatchSingleRequest`.
36
- - Add optional `useHook` property to `TransactionBatchRequest`.
37
-
38
10
  ## [52.1.0]
39
11
 
40
12
  ### Added
@@ -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_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_publishBatchHook, _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");
@@ -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");
@@ -170,10 +170,10 @@ class TransactionController extends base_controller_1.BaseController {
170
170
  _TransactionController_internalEvents.set(this, new events_1.EventEmitter());
171
171
  this.approvingTransactionIds = new Set();
172
172
  _TransactionController_methodDataHelper.set(this, void 0);
173
+ this.mutex = new async_mutex_1.Mutex();
173
174
  _TransactionController_incomingTransactionHelper.set(this, void 0);
174
175
  _TransactionController_incomingTransactionOptions.set(this, void 0);
175
176
  _TransactionController_pendingTransactionOptions.set(this, void 0);
176
- _TransactionController_publishBatchHook.set(this, void 0);
177
177
  _TransactionController_publicKeyEIP7702.set(this, void 0);
178
178
  this.signAbortCallbacks = new Map();
179
179
  _TransactionController_trace.set(this, void 0);
@@ -206,7 +206,6 @@ class TransactionController extends base_controller_1.BaseController {
206
206
  this.securityProviderRequest = securityProviderRequest;
207
207
  __classPrivateFieldSet(this, _TransactionController_incomingTransactionOptions, incomingTransactions, "f");
208
208
  __classPrivateFieldSet(this, _TransactionController_pendingTransactionOptions, pendingTransactions, "f");
209
- __classPrivateFieldSet(this, _TransactionController_publishBatchHook, hooks?.publishBatch, "f");
210
209
  __classPrivateFieldSet(this, _TransactionController_publicKeyEIP7702, publicKeyEIP7702, "f");
211
210
  __classPrivateFieldSet(this, _TransactionController_transactionHistoryLimit, transactionHistoryLimit, "f");
212
211
  this.sign = sign;
@@ -321,12 +320,9 @@ class TransactionController extends base_controller_1.BaseController {
321
320
  getChainId: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getChainId).bind(this),
322
321
  getEthQuery: (networkClientId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, { networkClientId }),
323
322
  getInternalAccounts: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getInternalAccounts).bind(this),
324
- getTransaction: (transactionId) => this.getTransactionOrThrow(transactionId),
325
323
  messenger: this.messagingSystem,
326
- publishBatchHook: __classPrivateFieldGet(this, _TransactionController_publishBatchHook, "f"),
327
324
  publicKeyEIP7702: __classPrivateFieldGet(this, _TransactionController_publicKeyEIP7702, "f"),
328
325
  request,
329
- updateTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).bind(this),
330
326
  });
331
327
  }
332
328
  /**
@@ -353,11 +349,9 @@ class TransactionController extends base_controller_1.BaseController {
353
349
  * @param options.actionId - Unique ID to prevent duplicate requests.
354
350
  * @param options.batchId - A custom ID for the batch this transaction belongs to.
355
351
  * @param options.deviceConfirmedOn - An enum to indicate what device confirmed the transaction.
356
- * @param options.disableGasBuffer - Whether to disable the gas estimation buffer.
357
352
  * @param options.method - RPC method that requested the transaction.
358
353
  * @param options.nestedTransactions - Params for any nested transactions encoded in the data.
359
354
  * @param options.origin - The origin of the transaction request, such as a dApp hostname.
360
- * @param options.publishHook - Custom logic to publish the transaction.
361
355
  * @param options.requireApproval - Whether the transaction requires approval by the user, defaults to true unless explicitly disabled.
362
356
  * @param options.securityAlertResponse - Response from security validator.
363
357
  * @param options.sendFlowHistory - The sendFlowHistory entries to add.
@@ -371,7 +365,7 @@ class TransactionController extends base_controller_1.BaseController {
371
365
  */
372
366
  async addTransaction(txParams, options) {
373
367
  (0, logger_1.projectLogger)('Adding transaction', txParams, options);
374
- const { actionId, batchId, deviceConfirmedOn, disableGasBuffer, method, nestedTransactions, networkClientId, origin, publishHook, requireApproval, securityAlertResponse, sendFlowHistory, swaps = {}, traceContext, type, } = options;
368
+ const { actionId, batchId, deviceConfirmedOn, method, nestedTransactions, networkClientId, origin, requireApproval, securityAlertResponse, sendFlowHistory, swaps = {}, traceContext, type, } = options;
375
369
  txParams = (0, utils_2.normalizeTransactionParams)(txParams);
376
370
  if (!__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").has(networkClientId)) {
377
371
  throw new Error(`Network client not found - ${networkClientId}`);
@@ -400,7 +394,7 @@ class TransactionController extends base_controller_1.BaseController {
400
394
  (0, validation_1.validateTxParams)(txParams, isEIP1559Compatible);
401
395
  const isDuplicateBatchId = batchId?.length &&
402
396
  this.state.transactions.some((tx) => tx.batchId?.toLowerCase() === batchId?.toLowerCase());
403
- if (isDuplicateBatchId && origin && origin !== controller_utils_1.ORIGIN_METAMASK) {
397
+ if (isDuplicateBatchId) {
404
398
  throw rpc_errors_1.rpcErrors.invalidInput('Batch ID already exists');
405
399
  }
406
400
  const dappSuggestedGasFees = this.generateDappSuggestedGasFees(txParams, origin);
@@ -418,7 +412,6 @@ class TransactionController extends base_controller_1.BaseController {
418
412
  dappSuggestedGasFees,
419
413
  delegationAddress,
420
414
  deviceConfirmedOn,
421
- disableGasBuffer,
422
415
  id: (0, uuid_1.v1)(),
423
416
  isFirstTimeInteraction: undefined,
424
417
  nestedTransactions,
@@ -476,10 +469,9 @@ class TransactionController extends base_controller_1.BaseController {
476
469
  }
477
470
  return {
478
471
  result: this.processApproval(addedTransactionMeta, {
479
- actionId,
480
472
  isExisting: Boolean(existingTransactionMeta),
481
- publishHook,
482
473
  requireApproval,
474
+ actionId,
483
475
  traceContext,
484
476
  }),
485
477
  transactionMeta: addedTransactionMeta,
@@ -802,16 +794,14 @@ class TransactionController extends base_controller_1.BaseController {
802
794
  * @param txId - The ID of the transaction to update.
803
795
  * @param params - The editable parameters to update.
804
796
  * @param params.data - Data to pass with the transaction.
805
- * @param params.from - Address to send the transaction from.
806
797
  * @param params.gas - Maximum number of units of gas to use for the transaction.
807
798
  * @param params.gasPrice - Price per gas for legacy transactions.
808
- * @param params.maxFeePerGas - Maximum amount per gas to pay for the transaction, including the priority fee.
809
- * @param params.maxPriorityFeePerGas - Maximum amount per gas to give to validator as incentive.
799
+ * @param params.from - Address to send the transaction from.
810
800
  * @param params.to - Address to send the transaction to.
811
801
  * @param params.value - Value associated with the transaction.
812
802
  * @returns The updated transaction metadata.
813
803
  */
814
- async updateEditableParams(txId, { data, from, gas, gasPrice, maxFeePerGas, maxPriorityFeePerGas, to, value, }) {
804
+ async updateEditableParams(txId, { data, gas, gasPrice, from, to, value, }) {
815
805
  const transactionMeta = this.getTransaction(txId);
816
806
  if (!transactionMeta) {
817
807
  throw new Error(`Cannot update editable params as no transaction metadata found`);
@@ -825,8 +815,6 @@ class TransactionController extends base_controller_1.BaseController {
825
815
  value,
826
816
  gas,
827
817
  gasPrice,
828
- maxFeePerGas,
829
- maxPriorityFeePerGas,
830
818
  },
831
819
  };
832
820
  editableParams.txParams = (0, lodash_1.pickBy)(editableParams.txParams);
@@ -1179,23 +1167,6 @@ class TransactionController extends base_controller_1.BaseController {
1179
1167
  });
1180
1168
  return updatedTransactionMeta.txParams.data;
1181
1169
  }
1182
- /**
1183
- * Update the batch transactions associated with a transaction.
1184
- * These transactions will be submitted with the main transaction as a batch.
1185
- *
1186
- * @param request - The request object.
1187
- * @param request.transactionId - The ID of the transaction to update.
1188
- * @param request.batchTransactions - The new batch transactions.
1189
- */
1190
- updateBatchTransactions({ transactionId, batchTransactions, }) {
1191
- (0, logger_1.projectLogger)('Updating batch transactions', { transactionId, batchTransactions });
1192
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
1193
- transactionId,
1194
- note: 'TransactionController#updateBatchTransactions - Batch transactions updated',
1195
- }, (transactionMeta) => {
1196
- transactionMeta.batchTransactions = batchTransactions;
1197
- });
1198
- }
1199
1170
  addMetadata(transactionMeta) {
1200
1171
  (0, validation_1.validateTxParams)(transactionMeta.txParams);
1201
1172
  this.update((state) => {
@@ -1238,7 +1209,7 @@ class TransactionController extends base_controller_1.BaseController {
1238
1209
  this.failTransaction(transactionMeta, new Error('Transaction incomplete at startup'));
1239
1210
  }
1240
1211
  }
1241
- async processApproval(transactionMeta, { actionId, isExisting = false, publishHook, requireApproval, shouldShowRequest = true, traceContext, }) {
1212
+ async processApproval(transactionMeta, { isExisting = false, requireApproval, shouldShowRequest = true, actionId, traceContext, }) {
1242
1213
  const transactionId = transactionMeta.id;
1243
1214
  let resultCallbacks;
1244
1215
  const { meta, isCompleted } = this.isTransactionCompleted(transactionId);
@@ -1265,7 +1236,7 @@ class TransactionController extends base_controller_1.BaseController {
1265
1236
  }
1266
1237
  const { isCompleted: isTxCompleted } = this.isTransactionCompleted(transactionId);
1267
1238
  if (!isTxCompleted) {
1268
- const approvalResult = await this.approveTransaction(transactionId, traceContext, publishHook);
1239
+ const approvalResult = await this.approveTransaction(transactionId, traceContext);
1269
1240
  if (approvalResult === ApprovalState.SkippedViaBeforePublishHook &&
1270
1241
  resultCallbacks) {
1271
1242
  resultCallbacks.success();
@@ -1313,14 +1284,12 @@ class TransactionController extends base_controller_1.BaseController {
1313
1284
  *
1314
1285
  * @param transactionId - The ID of the transaction to approve.
1315
1286
  * @param traceContext - The parent context for any new traces.
1316
- * @param publishHookOverride - Custom logic to publish the transaction.
1317
1287
  * @returns The state of the approval.
1318
1288
  */
1319
- async approveTransaction(transactionId, traceContext, publishHookOverride) {
1320
- let clearApprovingTransactionId;
1321
- let clearNonceLock;
1289
+ async approveTransaction(transactionId, traceContext) {
1290
+ const cleanupTasks = new Array();
1291
+ cleanupTasks.push(await this.mutex.acquire());
1322
1292
  let transactionMeta = this.getTransactionOrThrow(transactionId);
1323
- (0, logger_1.projectLogger)('Approving transaction', transactionMeta);
1324
1293
  try {
1325
1294
  if (!this.sign) {
1326
1295
  this.failTransaction(transactionMeta, new Error('No sign method defined.'));
@@ -1335,9 +1304,10 @@ class TransactionController extends base_controller_1.BaseController {
1335
1304
  return ApprovalState.NotApproved;
1336
1305
  }
1337
1306
  this.approvingTransactionIds.add(transactionId);
1338
- clearApprovingTransactionId = () => this.approvingTransactionIds.delete(transactionId);
1307
+ cleanupTasks.push(() => this.approvingTransactionIds.delete(transactionId));
1339
1308
  const [nonce, releaseNonce] = await (0, nonce_1.getNextNonce)(transactionMeta, (address) => __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").getNonceLock(address, transactionMeta.networkClientId));
1340
- clearNonceLock = releaseNonce;
1309
+ // must set transaction to submitted/failed before releasing lock
1310
+ releaseNonce && cleanupTasks.push(releaseNonce);
1341
1311
  transactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
1342
1312
  transactionId,
1343
1313
  note: 'TransactionController#approveTransaction - Transaction approved',
@@ -1374,19 +1344,8 @@ class TransactionController extends base_controller_1.BaseController {
1374
1344
  }
1375
1345
  (0, logger_1.projectLogger)('Publishing transaction', transactionMeta.txParams);
1376
1346
  let hash;
1377
- clearNonceLock?.();
1378
- clearNonceLock = undefined;
1379
- if (transactionMeta.batchTransactions?.length) {
1380
- (0, logger_1.projectLogger)('Found batch transactions', transactionMeta.batchTransactions);
1381
- const extraTransactionsPublishHook = new ExtraTransactionsPublishHook_1.ExtraTransactionsPublishHook({
1382
- addTransactionBatch: this.addTransactionBatch.bind(this),
1383
- transactions: transactionMeta.batchTransactions,
1384
- });
1385
- publishHookOverride = extraTransactionsPublishHook.getHook();
1386
- }
1387
1347
  await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Publish', parentContext: traceContext }, async () => {
1388
- const publishHook = publishHookOverride ?? this.publish;
1389
- ({ transactionHash: hash } = await publishHook(transactionMeta, rawTx));
1348
+ ({ transactionHash: hash } = await this.publish(transactionMeta, rawTx));
1390
1349
  if (hash === undefined) {
1391
1350
  hash = await this.publishTransaction(ethQuery, {
1392
1351
  ...transactionMeta,
@@ -1422,8 +1381,7 @@ class TransactionController extends base_controller_1.BaseController {
1422
1381
  return ApprovalState.NotApproved;
1423
1382
  }
1424
1383
  finally {
1425
- clearApprovingTransactionId?.();
1426
- clearNonceLock?.();
1384
+ cleanupTasks.forEach((task) => task());
1427
1385
  }
1428
1386
  }
1429
1387
  async publishTransaction(ethQuery, transactionMeta, { skipSubmitHistory } = {}) {
@@ -1750,8 +1708,8 @@ class TransactionController extends base_controller_1.BaseController {
1750
1708
  transactionMeta,
1751
1709
  });
1752
1710
  }
1753
- getNonceTrackerTransactions(statuses, address, chainId) {
1754
- return (0, nonce_1.getAndFormatTransactionsForNonceTracker)(chainId, address, statuses, this.state.transactions);
1711
+ getNonceTrackerTransactions(status, address, chainId) {
1712
+ return (0, nonce_1.getAndFormatTransactionsForNonceTracker)(chainId, address, status, this.state.transactions);
1755
1713
  }
1756
1714
  onConfirmedTransaction(transactionMeta) {
1757
1715
  (0, logger_1.projectLogger)('Processing confirmed transaction', transactionMeta.id);
@@ -1812,7 +1770,7 @@ class TransactionController extends base_controller_1.BaseController {
1812
1770
  }
1813
1771
  }
1814
1772
  exports.TransactionController = TransactionController;
1815
- _TransactionController_internalEvents = new WeakMap(), _TransactionController_methodDataHelper = new WeakMap(), _TransactionController_incomingTransactionHelper = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(), _TransactionController_publishBatchHook = 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, }) {
1816
1774
  // If transaction is found for same action id, do not create a new transaction.
1817
1775
  if (this.getTransactionWithActionId(actionId)) {
1818
1776
  return;
@@ -1920,7 +1878,7 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
1920
1878
  // TODO: Fix types
1921
1879
  blockTracker,
1922
1880
  getPendingTransactions: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getNonceTrackerPendingTransactions).bind(this, chainId),
1923
- getConfirmedTransactions: this.getNonceTrackerTransactions.bind(this, [types_1.TransactionStatus.confirmed], chainId),
1881
+ getConfirmedTransactions: this.getNonceTrackerTransactions.bind(this, types_1.TransactionStatus.confirmed, chainId),
1924
1882
  });
1925
1883
  }, _TransactionController_createPendingTransactionTracker = function _TransactionController_createPendingTransactionTracker({ provider, blockTracker, chainId, networkClientId, }) {
1926
1884
  const ethQuery = new eth_query_1.default(provider);
@@ -1959,11 +1917,7 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
1959
1917
  pendingTransactionTracker.hub.on('transaction-failed', this.failTransaction.bind(this));
1960
1918
  pendingTransactionTracker.hub.on('transaction-updated', this.updateTransaction.bind(this));
1961
1919
  }, _TransactionController_getNonceTrackerPendingTransactions = function _TransactionController_getNonceTrackerPendingTransactions(chainId, address) {
1962
- const standardPendingTransactions = this.getNonceTrackerTransactions([
1963
- types_1.TransactionStatus.approved,
1964
- types_1.TransactionStatus.signed,
1965
- types_1.TransactionStatus.submitted,
1966
- ], address, chainId);
1920
+ const standardPendingTransactions = this.getNonceTrackerTransactions(types_1.TransactionStatus.submitted, address, chainId);
1967
1921
  const externalPendingTransactions = this.getExternalPendingTransactions(address, chainId);
1968
1922
  return [...standardPendingTransactions, ...externalPendingTransactions];
1969
1923
  }, _TransactionController_getGasFeeFlows = function _TransactionController_getGasFeeFlows() {