@metamask-previews/transaction-controller 46.0.0-preview-fefdb711 → 46.0.0-preview-0ae65d9e

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 (62) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/dist/TransactionController.cjs +48 -56
  3. package/dist/TransactionController.cjs.map +1 -1
  4. package/dist/TransactionController.d.cts +14 -17
  5. package/dist/TransactionController.d.cts.map +1 -1
  6. package/dist/TransactionController.d.mts +14 -17
  7. package/dist/TransactionController.d.mts.map +1 -1
  8. package/dist/TransactionController.mjs +49 -57
  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 +0 -74
  18. package/dist/types.d.cts.map +1 -1
  19. package/dist/types.d.mts +0 -74
  20. package/dist/types.d.mts.map +1 -1
  21. package/dist/types.mjs.map +1 -1
  22. package/dist/utils/batch.cjs +1 -123
  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 -123
  29. package/dist/utils/batch.mjs.map +1 -1
  30. package/dist/utils/eip7702.cjs +1 -1
  31. package/dist/utils/eip7702.cjs.map +1 -1
  32. package/dist/utils/eip7702.d.cts +0 -14
  33. package/dist/utils/eip7702.d.cts.map +1 -1
  34. package/dist/utils/eip7702.d.mts +0 -14
  35. package/dist/utils/eip7702.d.mts.map +1 -1
  36. package/dist/utils/eip7702.mjs +1 -1
  37. package/dist/utils/eip7702.mjs.map +1 -1
  38. package/dist/utils/nonce.cjs +3 -3
  39. package/dist/utils/nonce.cjs.map +1 -1
  40. package/dist/utils/nonce.d.cts +2 -2
  41. package/dist/utils/nonce.d.cts.map +1 -1
  42. package/dist/utils/nonce.d.mts +2 -2
  43. package/dist/utils/nonce.d.mts.map +1 -1
  44. package/dist/utils/nonce.mjs +3 -3
  45. package/dist/utils/nonce.mjs.map +1 -1
  46. package/package.json +1 -1
  47. package/dist/hooks/CollectPublishHook.cjs +0 -84
  48. package/dist/hooks/CollectPublishHook.cjs.map +0 -1
  49. package/dist/hooks/CollectPublishHook.d.cts +0 -29
  50. package/dist/hooks/CollectPublishHook.d.cts.map +0 -1
  51. package/dist/hooks/CollectPublishHook.d.mts +0 -29
  52. package/dist/hooks/CollectPublishHook.d.mts.map +0 -1
  53. package/dist/hooks/CollectPublishHook.mjs +0 -80
  54. package/dist/hooks/CollectPublishHook.mjs.map +0 -1
  55. package/dist/hooks/ExtraTransactionsPublishHook.cjs +0 -84
  56. package/dist/hooks/ExtraTransactionsPublishHook.cjs.map +0 -1
  57. package/dist/hooks/ExtraTransactionsPublishHook.d.cts +0 -18
  58. package/dist/hooks/ExtraTransactionsPublishHook.d.cts.map +0 -1
  59. package/dist/hooks/ExtraTransactionsPublishHook.d.mts +0 -18
  60. package/dist/hooks/ExtraTransactionsPublishHook.d.mts.map +0 -1
  61. package/dist/hooks/ExtraTransactionsPublishHook.mjs +0 -80
  62. package/dist/hooks/ExtraTransactionsPublishHook.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  ### Added
11
11
 
12
+ - Add `updateAtomicBatchData` method ([#5380](https://github.com/MetaMask/core/pull/5380))
12
13
  - Support atomic batch transactions ([#5306](https://github.com/MetaMask/core/pull/5306))
13
14
  - Add methods:
14
15
  - `addTransactionBatch`
@@ -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");
@@ -170,11 +170,11 @@ 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_incomingTransactionChainIds.set(this, new Set());
174
175
  _TransactionController_incomingTransactionHelper.set(this, void 0);
175
176
  _TransactionController_incomingTransactionOptions.set(this, void 0);
176
177
  _TransactionController_pendingTransactionOptions.set(this, void 0);
177
- _TransactionController_publishBatchHook.set(this, void 0);
178
178
  this.signAbortCallbacks = new Map();
179
179
  _TransactionController_trace.set(this, void 0);
180
180
  _TransactionController_transactionHistoryLimit.set(this, void 0);
@@ -205,7 +205,6 @@ class TransactionController extends base_controller_1.BaseController {
205
205
  this.securityProviderRequest = securityProviderRequest;
206
206
  __classPrivateFieldSet(this, _TransactionController_incomingTransactionOptions, incomingTransactions, "f");
207
207
  __classPrivateFieldSet(this, _TransactionController_pendingTransactionOptions, pendingTransactions, "f");
208
- __classPrivateFieldSet(this, _TransactionController_publishBatchHook, hooks?.publishBatch, "f");
209
208
  __classPrivateFieldSet(this, _TransactionController_transactionHistoryLimit, transactionHistoryLimit, "f");
210
209
  this.sign = sign;
211
210
  __classPrivateFieldSet(this, _TransactionController_testGasFeeFlows, testGasFeeFlows === true, "f");
@@ -320,11 +319,8 @@ class TransactionController extends base_controller_1.BaseController {
320
319
  getChainId: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getChainId).bind(this),
321
320
  getEthQuery: (networkClientId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, { networkClientId }),
322
321
  getInternalAccounts: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getInternalAccounts).bind(this),
323
- getTransaction: (transactionId) => this.getTransactionOrThrow(transactionId),
324
322
  messenger: this.messagingSystem,
325
- publishBatchHook: __classPrivateFieldGet(this, _TransactionController_publishBatchHook, "f"),
326
323
  request,
327
- updateTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).bind(this),
328
324
  });
329
325
  }
330
326
  /**
@@ -348,12 +344,10 @@ class TransactionController extends base_controller_1.BaseController {
348
344
  * @param txParams - Standard parameters for an Ethereum transaction.
349
345
  * @param options - Additional options to control how the transaction is added.
350
346
  * @param options.actionId - Unique ID to prevent duplicate requests.
351
- * @param options.batchId - ID of the batch this transaction belongs to.
352
347
  * @param options.deviceConfirmedOn - An enum to indicate what device confirmed the transaction.
353
348
  * @param options.method - RPC method that requested the transaction.
354
349
  * @param options.nestedTransactions - Params for any nested transactions encoded in the data.
355
350
  * @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
351
  * @param options.requireApproval - Whether the transaction requires approval by the user, defaults to true unless explicitly disabled.
358
352
  * @param options.securityAlertResponse - Response from security validator.
359
353
  * @param options.sendFlowHistory - The sendFlowHistory entries to add.
@@ -367,7 +361,7 @@ class TransactionController extends base_controller_1.BaseController {
367
361
  */
368
362
  async addTransaction(txParams, options) {
369
363
  (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;
364
+ const { actionId, deviceConfirmedOn, method, nestedTransactions, networkClientId, origin, requireApproval, securityAlertResponse, sendFlowHistory, swaps = {}, traceContext, type, } = options;
371
365
  txParams = (0, utils_2.normalizeTransactionParams)(txParams);
372
366
  if (!__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").has(networkClientId)) {
373
367
  throw new Error(`Network client not found - ${networkClientId}`);
@@ -401,7 +395,6 @@ class TransactionController extends base_controller_1.BaseController {
401
395
  : {
402
396
  // Add actionId to txMeta to check if same actionId is seen again
403
397
  actionId,
404
- batchId,
405
398
  chainId,
406
399
  dappSuggestedGasFees,
407
400
  deviceConfirmedOn,
@@ -462,10 +455,9 @@ class TransactionController extends base_controller_1.BaseController {
462
455
  }
463
456
  return {
464
457
  result: this.processApproval(addedTransactionMeta, {
465
- actionId,
466
458
  isExisting: Boolean(existingTransactionMeta),
467
- publishHook,
468
459
  requireApproval,
460
+ actionId,
469
461
  traceContext,
470
462
  }),
471
463
  transactionMeta: addedTransactionMeta,
@@ -1112,21 +1104,35 @@ class TransactionController extends base_controller_1.BaseController {
1112
1104
  this.signAbortCallbacks.delete(transactionId);
1113
1105
  }
1114
1106
  /**
1115
- * Update the batch transactions associated with a transaction.
1116
- * These transactions will be submitted with the main transaction as a batch.
1107
+ * Update the transaction data of a single nested transaction within an atomic batch transaction.
1117
1108
  *
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.
1109
+ * @param options - The options bag.
1110
+ * @param options.transactionId - ID of the atomic batch transaction.
1111
+ * @param options.transactionIndex - Index of the nested transaction within the atomic batch transaction.
1112
+ * @param options.transactionData - New data to set for the nested transaction.
1113
+ * @returns The updated data for the atomic batch transaction.
1121
1114
  */
1122
- updateBatchTransactions({ transactionId, batchTransactions, }) {
1123
- (0, logger_1.projectLogger)('Updating batch transactions', { transactionId, batchTransactions });
1124
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
1115
+ updateAtomicBatchData({ transactionId, transactionIndex, transactionData, }) {
1116
+ (0, logger_1.projectLogger)('Updating atomic batch data', {
1125
1117
  transactionId,
1126
- note: 'TransactionController#updateBatchTransactions - Batch transactions updated',
1118
+ transactionIndex,
1119
+ transactionData,
1120
+ });
1121
+ const updatedTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
1122
+ transactionId,
1123
+ note: 'TransactionController#updateAtomicBatchData - Atomic batch data updated',
1127
1124
  }, (transactionMeta) => {
1128
- transactionMeta.batchTransactions = batchTransactions;
1125
+ const { nestedTransactions, txParams } = transactionMeta;
1126
+ const from = txParams.from;
1127
+ const nestedTransaction = nestedTransactions?.[transactionIndex];
1128
+ if (!nestedTransaction) {
1129
+ throw new Error(`Nested transaction not found with index - ${transactionIndex}`);
1130
+ }
1131
+ nestedTransaction.data = transactionData;
1132
+ const batchTransaction = (0, eip7702_1.generateEIP7702BatchTransaction)(from, nestedTransactions);
1133
+ transactionMeta.txParams.data = batchTransaction.data;
1129
1134
  });
1135
+ return updatedTransactionMeta.txParams.data;
1130
1136
  }
1131
1137
  addMetadata(transactionMeta) {
1132
1138
  (0, validation_1.validateTxParams)(transactionMeta.txParams);
@@ -1177,7 +1183,7 @@ class TransactionController extends base_controller_1.BaseController {
1177
1183
  this.failTransaction(transactionMeta, new Error('Transaction incomplete at startup'));
1178
1184
  }
1179
1185
  }
1180
- async processApproval(transactionMeta, { actionId, isExisting = false, publishHook, requireApproval, shouldShowRequest = true, traceContext, }) {
1186
+ async processApproval(transactionMeta, { isExisting = false, requireApproval, shouldShowRequest = true, actionId, traceContext, }) {
1181
1187
  const transactionId = transactionMeta.id;
1182
1188
  let resultCallbacks;
1183
1189
  const { meta, isCompleted } = this.isTransactionCompleted(transactionId);
@@ -1204,7 +1210,7 @@ class TransactionController extends base_controller_1.BaseController {
1204
1210
  }
1205
1211
  const { isCompleted: isTxCompleted } = this.isTransactionCompleted(transactionId);
1206
1212
  if (!isTxCompleted) {
1207
- const approvalResult = await this.approveTransaction(transactionId, traceContext, publishHook);
1213
+ const approvalResult = await this.approveTransaction(transactionId, traceContext);
1208
1214
  if (approvalResult === ApprovalState.SkippedViaBeforePublishHook &&
1209
1215
  resultCallbacks) {
1210
1216
  resultCallbacks.success();
@@ -1238,7 +1244,7 @@ class TransactionController extends base_controller_1.BaseController {
1238
1244
  switch (finalMeta?.status) {
1239
1245
  case types_1.TransactionStatus.failed:
1240
1246
  resultCallbacks?.error(finalMeta.error);
1241
- throw rpc_errors_1.rpcErrors.internal(finalMeta.error.stack);
1247
+ throw rpc_errors_1.rpcErrors.internal(finalMeta.error.message);
1242
1248
  case types_1.TransactionStatus.submitted:
1243
1249
  resultCallbacks?.success();
1244
1250
  return finalMeta.hash;
@@ -1256,14 +1262,12 @@ class TransactionController extends base_controller_1.BaseController {
1256
1262
  *
1257
1263
  * @param transactionId - The ID of the transaction to approve.
1258
1264
  * @param traceContext - The parent context for any new traces.
1259
- * @param publishHookOverride - Custom logic to publish the transaction.
1260
1265
  * @returns The state of the approval.
1261
1266
  */
1262
- async approveTransaction(transactionId, traceContext, publishHookOverride) {
1263
- let clearApprovingTransactionId;
1264
- let clearNonceLock;
1267
+ async approveTransaction(transactionId, traceContext) {
1268
+ const cleanupTasks = new Array();
1269
+ cleanupTasks.push(await this.mutex.acquire());
1265
1270
  let transactionMeta = this.getTransactionOrThrow(transactionId);
1266
- (0, logger_1.projectLogger)('Approving transaction', transactionMeta);
1267
1271
  try {
1268
1272
  if (!this.sign) {
1269
1273
  this.failTransaction(transactionMeta, new Error('No sign method defined.'));
@@ -1278,9 +1282,10 @@ class TransactionController extends base_controller_1.BaseController {
1278
1282
  return ApprovalState.NotApproved;
1279
1283
  }
1280
1284
  this.approvingTransactionIds.add(transactionId);
1281
- clearApprovingTransactionId = () => this.approvingTransactionIds.delete(transactionId);
1285
+ cleanupTasks.push(() => this.approvingTransactionIds.delete(transactionId));
1282
1286
  const [nonce, releaseNonce] = await (0, nonce_1.getNextNonce)(transactionMeta, (address) => __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").getNonceLock(address, transactionMeta.networkClientId));
1283
- clearNonceLock = releaseNonce;
1287
+ // must set transaction to submitted/failed before releasing lock
1288
+ releaseNonce && cleanupTasks.push(releaseNonce);
1284
1289
  transactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
1285
1290
  transactionId,
1286
1291
  note: 'TransactionController#approveTransaction - Transaction approved',
@@ -1317,19 +1322,8 @@ class TransactionController extends base_controller_1.BaseController {
1317
1322
  }
1318
1323
  (0, logger_1.projectLogger)('Publishing transaction', transactionMeta.txParams);
1319
1324
  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
1325
  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));
1326
+ ({ transactionHash: hash } = await this.publish(transactionMeta, rawTx));
1333
1327
  if (hash === undefined) {
1334
1328
  hash = await this.publishTransaction(ethQuery, {
1335
1329
  ...transactionMeta,
@@ -1365,8 +1359,7 @@ class TransactionController extends base_controller_1.BaseController {
1365
1359
  return ApprovalState.NotApproved;
1366
1360
  }
1367
1361
  finally {
1368
- clearApprovingTransactionId?.();
1369
- clearNonceLock?.();
1362
+ cleanupTasks.forEach((task) => task());
1370
1363
  }
1371
1364
  }
1372
1365
  async publishTransaction(ethQuery, transactionMeta, { skipSubmitHistory } = {}) {
@@ -1721,8 +1714,8 @@ class TransactionController extends base_controller_1.BaseController {
1721
1714
  transactionMeta,
1722
1715
  });
1723
1716
  }
1724
- getNonceTrackerTransactions(statuses, address, chainId) {
1725
- return (0, nonce_1.getAndFormatTransactionsForNonceTracker)(chainId, address, statuses, this.state.transactions);
1717
+ getNonceTrackerTransactions(status, address, chainId) {
1718
+ return (0, nonce_1.getAndFormatTransactionsForNonceTracker)(chainId, address, status, this.state.transactions);
1726
1719
  }
1727
1720
  onConfirmedTransaction(transactionMeta) {
1728
1721
  (0, logger_1.projectLogger)('Processing confirmed transaction', transactionMeta.id);
@@ -1783,7 +1776,7 @@ class TransactionController extends base_controller_1.BaseController {
1783
1776
  }
1784
1777
  }
1785
1778
  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, }) {
1779
+ _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
1780
  // If transaction is found for same action id, do not create a new transaction.
1788
1781
  if (this.getTransactionWithActionId(actionId)) {
1789
1782
  return;
@@ -1873,7 +1866,7 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
1873
1866
  // TODO: Fix types
1874
1867
  blockTracker,
1875
1868
  getPendingTransactions: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getNonceTrackerPendingTransactions).bind(this, chainId),
1876
- getConfirmedTransactions: this.getNonceTrackerTransactions.bind(this, [types_1.TransactionStatus.confirmed], chainId),
1869
+ getConfirmedTransactions: this.getNonceTrackerTransactions.bind(this, types_1.TransactionStatus.confirmed, chainId),
1877
1870
  });
1878
1871
  }, _TransactionController_createPendingTransactionTracker = function _TransactionController_createPendingTransactionTracker({ provider, blockTracker, chainId, networkClientId, }) {
1879
1872
  const ethQuery = new eth_query_1.default(provider);
@@ -1912,11 +1905,7 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
1912
1905
  pendingTransactionTracker.hub.on('transaction-failed', this.failTransaction.bind(this));
1913
1906
  pendingTransactionTracker.hub.on('transaction-updated', this.updateTransaction.bind(this));
1914
1907
  }, _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);
1908
+ const standardPendingTransactions = this.getNonceTrackerTransactions(types_1.TransactionStatus.submitted, address, chainId);
1920
1909
  const externalPendingTransactions = this.getExternalPendingTransactions(address, chainId);
1921
1910
  return [...standardPendingTransactions, ...externalPendingTransactions];
1922
1911
  }, _TransactionController_getGasFeeFlows = function _TransactionController_getGasFeeFlows() {
@@ -1930,6 +1919,9 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
1930
1919
  let resimulateResponse;
1931
1920
  this.update((state) => {
1932
1921
  const index = state.transactions.findIndex(({ id }) => id === transactionId);
1922
+ if (index === -1) {
1923
+ throw new Error(`Cannot update transaction as ID not found - ${transactionId}`);
1924
+ }
1933
1925
  let transactionMeta = state.transactions[index];
1934
1926
  const originalTransactionMeta = (0, lodash_1.cloneDeep)(transactionMeta);
1935
1927
  transactionMeta = callback(transactionMeta) ?? transactionMeta;