@metamask-previews/transaction-controller 62.7.0-preview-e776a73 → 62.7.0-preview-42084fe4

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 (46) hide show
  1. package/CHANGELOG.md +0 -3
  2. package/dist/TransactionController.cjs +72 -23
  3. package/dist/TransactionController.cjs.map +1 -1
  4. package/dist/TransactionController.d.cts +13 -12
  5. package/dist/TransactionController.d.cts.map +1 -1
  6. package/dist/TransactionController.d.mts +13 -12
  7. package/dist/TransactionController.d.mts.map +1 -1
  8. package/dist/TransactionController.mjs +72 -23
  9. package/dist/TransactionController.mjs.map +1 -1
  10. package/dist/helpers/PendingTransactionTracker.cjs +24 -36
  11. package/dist/helpers/PendingTransactionTracker.cjs.map +1 -1
  12. package/dist/helpers/PendingTransactionTracker.d.cts.map +1 -1
  13. package/dist/helpers/PendingTransactionTracker.d.mts.map +1 -1
  14. package/dist/helpers/PendingTransactionTracker.mjs +25 -37
  15. package/dist/helpers/PendingTransactionTracker.mjs.map +1 -1
  16. package/dist/index.cjs +4 -1
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +1 -0
  19. package/dist/index.d.cts.map +1 -1
  20. package/dist/index.d.mts +1 -0
  21. package/dist/index.d.mts.map +1 -1
  22. package/dist/index.mjs +1 -0
  23. package/dist/index.mjs.map +1 -1
  24. package/dist/types.cjs.map +1 -1
  25. package/dist/types.d.cts +4 -5
  26. package/dist/types.d.cts.map +1 -1
  27. package/dist/types.d.mts +4 -5
  28. package/dist/types.d.mts.map +1 -1
  29. package/dist/types.mjs.map +1 -1
  30. package/dist/utils/feature-flags.cjs +1 -4
  31. package/dist/utils/feature-flags.cjs.map +1 -1
  32. package/dist/utils/feature-flags.d.cts +0 -5
  33. package/dist/utils/feature-flags.d.cts.map +1 -1
  34. package/dist/utils/feature-flags.d.mts +0 -5
  35. package/dist/utils/feature-flags.d.mts.map +1 -1
  36. package/dist/utils/feature-flags.mjs +1 -4
  37. package/dist/utils/feature-flags.mjs.map +1 -1
  38. package/dist/utils/history.cjs +164 -0
  39. package/dist/utils/history.cjs.map +1 -0
  40. package/dist/utils/history.d.cts +29 -0
  41. package/dist/utils/history.d.cts.map +1 -0
  42. package/dist/utils/history.d.mts +29 -0
  43. package/dist/utils/history.d.mts.map +1 -0
  44. package/dist/utils/history.mjs +164 -0
  45. package/dist/utils/history.mjs.map +1 -0
  46. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -9,9 +9,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  ### Changed
11
11
 
12
- - Update transaction timeout to check time since submission or when transaction was last seen on network ([#7464](https://github.com/MetaMask/core/pull/7464))
13
- - Uses `blockTime` from `acceleratedPolling` feature flag.
14
- - Deprecate `history` and `sendFlowHistory` properties from `TransactionMeta` and `TransactionController` options ([#7326](https://github.com/MetaMask/core/pull/7326))
15
12
  - Bump `@metamask/remote-feature-flag-controller` from `^3.0.0` to `^3.1.0` ([#7519](https://github.com/MetaMask/core/pull/7519))
16
13
  - Bump `@metamask/network-controller` from `^27.0.0` to `^27.1.0` ([#7534](https://github.com/MetaMask/core/pull/7534))
17
14
  - Bump `@metamask/controller-utils` from `^11.16.0` to `^11.17.0` ([#7534](https://github.com/MetaMask/core/pull/7534))
@@ -13,7 +13,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
13
13
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
15
  };
16
- var _TransactionController_instances, _TransactionController_afterAdd, _TransactionController_afterSign, _TransactionController_afterSimulate, _TransactionController_approvingTransactionIds, _TransactionController_beforeCheckPendingTransaction, _TransactionController_beforePublish, _TransactionController_beforeSign, _TransactionController_gasFeeFlows, _TransactionController_getAdditionalSignArguments, _TransactionController_getCurrentAccountEIP1559Compatibility, _TransactionController_getCurrentNetworkEIP1559Compatibility, _TransactionController_getExternalPendingTransactions, _TransactionController_getGasFeeEstimates, _TransactionController_getNetworkState, _TransactionController_getPermittedAccounts, _TransactionController_getSavedGasFees, _TransactionController_getSimulationConfig, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_internalEvents, _TransactionController_isAutomaticGasFeeUpdateEnabled, _TransactionController_isEIP7702GasFeeTokensEnabled, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_isSwapsDisabled, _TransactionController_isTimeoutEnabled, _TransactionController_layer1GasFeeFlows, _TransactionController_methodDataHelper, _TransactionController_multichainTrackingHelper, _TransactionController_pendingTransactionOptions, _TransactionController_publicKeyEIP7702, _TransactionController_publish, _TransactionController_publishBatchHook, _TransactionController_securityProviderRequest, _TransactionController_sign, _TransactionController_signAbortCallbacks, _TransactionController_skipSimulationTransactionIds, _TransactionController_testGasFeeFlows, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_retryTransaction, _TransactionController_signExternalTransaction, _TransactionController_addMetadata, _TransactionController_updateGasProperties, _TransactionController_onBootCleanup, _TransactionController_failIncompleteTransactions, _TransactionController_processApproval, _TransactionController_approveTransaction, _TransactionController_publishTransaction, _TransactionController_rejectTransaction, _TransactionController_trimTransactionsForState, _TransactionController_isFinalState, _TransactionController_isLocalFinalState, _TransactionController_requestApproval, _TransactionController_getTransaction, _TransactionController_getTransactionOrThrow, _TransactionController_getApprovalId, _TransactionController_isTransactionCompleted, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_onIncomingTransactions, _TransactionController_generateDappSuggestedGasFees, _TransactionController_addExternalTransaction, _TransactionController_markNonceDuplicatesDropped, _TransactionController_setTransactionStatusDropped, _TransactionController_getTransactionWithActionId, _TransactionController_waitForTransactionFinished, _TransactionController_updateTransactionMetaRSV, _TransactionController_getEIP1559Compatibility, _TransactionController_signTransaction, _TransactionController_onTransactionStatusChange, _TransactionController_getNonceTrackerTransactions, _TransactionController_onConfirmedTransaction, _TransactionController_updatePostBalance, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_publishTransactionForRetry, _TransactionController_isTransactionAlreadyConfirmedError, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_onGasFeePollerTransactionBatchUpdate, _TransactionController_updateTransactionBatch, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_registerActionHandlers, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow, _TransactionController_failTransaction, _TransactionController_runAfterSimulateHook, _TransactionController_defaultPublishHook, _TransactionController_getGasFeeTokens, _TransactionController_getGasFeeTokensAction;
16
+ var _TransactionController_instances, _TransactionController_afterAdd, _TransactionController_afterSign, _TransactionController_afterSimulate, _TransactionController_approvingTransactionIds, _TransactionController_beforeCheckPendingTransaction, _TransactionController_beforePublish, _TransactionController_beforeSign, _TransactionController_gasFeeFlows, _TransactionController_getAdditionalSignArguments, _TransactionController_getCurrentAccountEIP1559Compatibility, _TransactionController_getCurrentNetworkEIP1559Compatibility, _TransactionController_getExternalPendingTransactions, _TransactionController_getGasFeeEstimates, _TransactionController_getNetworkState, _TransactionController_getPermittedAccounts, _TransactionController_getSavedGasFees, _TransactionController_getSimulationConfig, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_internalEvents, _TransactionController_isAutomaticGasFeeUpdateEnabled, _TransactionController_isEIP7702GasFeeTokensEnabled, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isHistoryDisabled, _TransactionController_isSendFlowHistoryDisabled, _TransactionController_isSimulationEnabled, _TransactionController_isSwapsDisabled, _TransactionController_isTimeoutEnabled, _TransactionController_layer1GasFeeFlows, _TransactionController_methodDataHelper, _TransactionController_multichainTrackingHelper, _TransactionController_pendingTransactionOptions, _TransactionController_publicKeyEIP7702, _TransactionController_publish, _TransactionController_publishBatchHook, _TransactionController_securityProviderRequest, _TransactionController_sign, _TransactionController_signAbortCallbacks, _TransactionController_skipSimulationTransactionIds, _TransactionController_testGasFeeFlows, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_retryTransaction, _TransactionController_signExternalTransaction, _TransactionController_addMetadata, _TransactionController_updateGasProperties, _TransactionController_onBootCleanup, _TransactionController_failIncompleteTransactions, _TransactionController_processApproval, _TransactionController_approveTransaction, _TransactionController_publishTransaction, _TransactionController_rejectTransaction, _TransactionController_trimTransactionsForState, _TransactionController_isFinalState, _TransactionController_isLocalFinalState, _TransactionController_requestApproval, _TransactionController_getTransaction, _TransactionController_getTransactionOrThrow, _TransactionController_getApprovalId, _TransactionController_isTransactionCompleted, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_onIncomingTransactions, _TransactionController_generateDappSuggestedGasFees, _TransactionController_addExternalTransaction, _TransactionController_markNonceDuplicatesDropped, _TransactionController_setTransactionStatusDropped, _TransactionController_getTransactionWithActionId, _TransactionController_waitForTransactionFinished, _TransactionController_updateTransactionMetaRSV, _TransactionController_getEIP1559Compatibility, _TransactionController_signTransaction, _TransactionController_onTransactionStatusChange, _TransactionController_getNonceTrackerTransactions, _TransactionController_onConfirmedTransaction, _TransactionController_updatePostBalance, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_publishTransactionForRetry, _TransactionController_isTransactionAlreadyConfirmedError, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_onGasFeePollerTransactionBatchUpdate, _TransactionController_updateTransactionBatch, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_registerActionHandlers, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow, _TransactionController_failTransaction, _TransactionController_runAfterSimulateHook, _TransactionController_defaultPublishHook, _TransactionController_getGasFeeTokens, _TransactionController_getGasFeeTokensAction;
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");
@@ -53,6 +53,7 @@ const gas_1 = require("./utils/gas.cjs");
53
53
  const gas_fee_tokens_1 = require("./utils/gas-fee-tokens.cjs");
54
54
  const gas_fees_1 = require("./utils/gas-fees.cjs");
55
55
  const gas_flow_1 = require("./utils/gas-flow.cjs");
56
+ const history_1 = require("./utils/history.cjs");
56
57
  const layer1_gas_fee_flow_1 = require("./utils/layer1-gas-fee-flow.cjs");
57
58
  const nonce_1 = require("./utils/nonce.cjs");
58
59
  const prepare_1 = require("./utils/prepare.cjs");
@@ -143,7 +144,7 @@ class TransactionController extends base_controller_1.BaseController {
143
144
  * @param options - The controller options.
144
145
  */
145
146
  constructor(options) {
146
- const { disableSwaps, getCurrentAccountEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, getExternalPendingTransactions, getGasFeeEstimates, getNetworkClientRegistry, getNetworkState, getPermittedAccounts, getSavedGasFees, getSimulationConfig, hooks, incomingTransactions = {}, isAutomaticGasFeeUpdateEnabled, isEIP7702GasFeeTokensEnabled, isFirstTimeInteractionEnabled, isSimulationEnabled, messenger, pendingTransactions = {}, publicKeyEIP7702, securityProviderRequest, sign, state, testGasFeeFlows, trace, transactionHistoryLimit = 40, } = options;
147
+ const { disableHistory, disableSendFlowHistory, disableSwaps, getCurrentAccountEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, getExternalPendingTransactions, getGasFeeEstimates, getNetworkClientRegistry, getNetworkState, getPermittedAccounts, getSavedGasFees, getSimulationConfig, hooks, incomingTransactions = {}, isAutomaticGasFeeUpdateEnabled, isEIP7702GasFeeTokensEnabled, isFirstTimeInteractionEnabled, isSimulationEnabled, messenger, pendingTransactions = {}, publicKeyEIP7702, securityProviderRequest, sign, state, testGasFeeFlows, trace, transactionHistoryLimit = 40, } = options;
147
148
  super({
148
149
  name: controllerName,
149
150
  metadata,
@@ -177,6 +178,8 @@ class TransactionController extends base_controller_1.BaseController {
177
178
  _TransactionController_isAutomaticGasFeeUpdateEnabled.set(this, void 0);
178
179
  _TransactionController_isEIP7702GasFeeTokensEnabled.set(this, void 0);
179
180
  _TransactionController_isFirstTimeInteractionEnabled.set(this, void 0);
181
+ _TransactionController_isHistoryDisabled.set(this, void 0);
182
+ _TransactionController_isSendFlowHistoryDisabled.set(this, void 0);
180
183
  _TransactionController_isSimulationEnabled.set(this, void 0);
181
184
  _TransactionController_isSwapsDisabled.set(this, void 0);
182
185
  _TransactionController_isTimeoutEnabled.set(this, void 0);
@@ -228,6 +231,8 @@ class TransactionController extends base_controller_1.BaseController {
228
231
  __classPrivateFieldSet(this, _TransactionController_isEIP7702GasFeeTokensEnabled, isEIP7702GasFeeTokensEnabled ??
229
232
  (() => Promise.resolve(false)), "f");
230
233
  __classPrivateFieldSet(this, _TransactionController_isFirstTimeInteractionEnabled, isFirstTimeInteractionEnabled ?? (() => true), "f");
234
+ __classPrivateFieldSet(this, _TransactionController_isHistoryDisabled, disableHistory ?? false, "f");
235
+ __classPrivateFieldSet(this, _TransactionController_isSendFlowHistoryDisabled, disableSendFlowHistory ?? false, "f");
231
236
  __classPrivateFieldSet(this, _TransactionController_isSimulationEnabled, isSimulationEnabled ?? (() => true), "f");
232
237
  __classPrivateFieldSet(this, _TransactionController_isSwapsDisabled, disableSwaps ?? false, "f");
233
238
  __classPrivateFieldSet(this, _TransactionController_isTimeoutEnabled, hooks?.isTimeoutEnabled ?? (() => true), "f");
@@ -386,7 +391,7 @@ class TransactionController extends base_controller_1.BaseController {
386
391
  */
387
392
  async addTransaction(txParams, options) {
388
393
  (0, logger_1.projectLogger)('Adding transaction', txParams, options);
389
- const { actionId, assetsFiatValues, batchId, deviceConfirmedOn, disableGasBuffer, gasFeeToken, isGasFeeIncluded, isGasFeeSponsored, method, nestedTransactions, networkClientId, origin, publishHook, requestId, requireApproval, securityAlertResponse, skipInitialGasEstimate, swaps = {}, traceContext, type, } = options;
394
+ const { actionId, assetsFiatValues, batchId, deviceConfirmedOn, disableGasBuffer, gasFeeToken, isGasFeeIncluded, isGasFeeSponsored, method, nestedTransactions, networkClientId, origin, publishHook, requestId, requireApproval, securityAlertResponse, sendFlowHistory, skipInitialGasEstimate, swaps = {}, traceContext, type, } = options;
390
395
  // eslint-disable-next-line no-param-reassign
391
396
  txParams = (0, utils_2.normalizeTransactionParams)(txParams);
392
397
  if (!__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").has(networkClientId)) {
@@ -474,6 +479,7 @@ class TransactionController extends base_controller_1.BaseController {
474
479
  .then(() => {
475
480
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
476
481
  transactionId: newTransactionMeta.id,
482
+ skipHistory: true,
477
483
  skipResimulateCheck: true,
478
484
  skipValidation: true,
479
485
  }, (tx) => {
@@ -497,6 +503,14 @@ class TransactionController extends base_controller_1.BaseController {
497
503
  addedTransactionMeta.securityProviderResponse =
498
504
  securityProviderResponse;
499
505
  }
506
+ if (!__classPrivateFieldGet(this, _TransactionController_isSendFlowHistoryDisabled, "f")) {
507
+ // eslint-disable-next-line require-atomic-updates
508
+ addedTransactionMeta.sendFlowHistory = sendFlowHistory ?? [];
509
+ }
510
+ // Initial history push
511
+ if (!__classPrivateFieldGet(this, _TransactionController_isHistoryDisabled, "f")) {
512
+ addedTransactionMeta = (0, history_1.addInitialHistorySnapshot)(addedTransactionMeta);
513
+ }
500
514
  addedTransactionMeta = (0, swaps_1.updateSwapsTransaction)(addedTransactionMeta, transactionType, swaps, {
501
515
  isSwapsDisabled: __classPrivateFieldGet(this, _TransactionController_isSwapsDisabled, "f"),
502
516
  cancelTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_rejectTransaction).bind(this),
@@ -507,6 +521,7 @@ class TransactionController extends base_controller_1.BaseController {
507
521
  .then((delegationAddress) => {
508
522
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
509
523
  transactionId: addedTransactionMeta.id,
524
+ skipHistory: true,
510
525
  skipResimulateCheck: true,
511
526
  skipValidation: true,
512
527
  }, (tx) => {
@@ -696,14 +711,13 @@ class TransactionController extends base_controller_1.BaseController {
696
711
  * Updates an existing transaction in state.
697
712
  *
698
713
  * @param transactionMeta - The new transaction to store in state.
699
- * @param note - A note or update reason to be logged.
714
+ * @param note - A note or update reason to include in the transaction history.
700
715
  */
701
716
  updateTransaction(transactionMeta, note) {
702
717
  const { id: transactionId } = transactionMeta;
703
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId }, () => ({
718
+ __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId, note }, () => ({
704
719
  ...transactionMeta,
705
720
  }));
706
- (0, logger_1.projectLogger)('Transaction updated', { transactionId, note });
707
721
  }
708
722
  /**
709
723
  * Update the security alert response for a transaction.
@@ -754,17 +768,6 @@ class TransactionController extends base_controller_1.BaseController {
754
768
  state.transactions = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_trimTransactionsForState).call(this, newTransactions);
755
769
  });
756
770
  }
757
- /**
758
- * @deprecated No longer used. Kept only to avoid breaking changes. It now performs no operations.
759
- * @param transactionID - The ID of the transaction to update.
760
- * @param _currentSendFlowHistoryLength - The length of the current sendFlowHistory array.
761
- * @param _sendFlowHistoryToAdd - The sendFlowHistory entries to add.
762
- * @returns The transactionMeta.
763
- */
764
- updateTransactionSendFlowHistory(transactionID, _currentSendFlowHistoryLength, _sendFlowHistoryToAdd) {
765
- // Return the transaction unchanged
766
- return __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransactionOrThrow).call(this, transactionID);
767
- }
768
771
  /**
769
772
  * Adds external provided transaction to state as confirmed transaction.
770
773
  *
@@ -803,6 +806,33 @@ class TransactionController extends base_controller_1.BaseController {
803
806
  console.error('Failed to confirm external transaction', error);
804
807
  }
805
808
  }
809
+ /**
810
+ * Append new send flow history to a transaction.
811
+ *
812
+ * @param transactionID - The ID of the transaction to update.
813
+ * @param currentSendFlowHistoryLength - The length of the current sendFlowHistory array.
814
+ * @param sendFlowHistoryToAdd - The sendFlowHistory entries to add.
815
+ * @returns The updated transactionMeta.
816
+ */
817
+ updateTransactionSendFlowHistory(transactionID, currentSendFlowHistoryLength, sendFlowHistoryToAdd) {
818
+ if (__classPrivateFieldGet(this, _TransactionController_isSendFlowHistoryDisabled, "f")) {
819
+ throw new Error('Send flow history is disabled for the current transaction controller');
820
+ }
821
+ const transactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionID);
822
+ if (!transactionMeta) {
823
+ throw new Error(`Cannot update send flow history as no transaction metadata found`);
824
+ }
825
+ (0, utils_2.validateIfTransactionUnapproved)(transactionMeta, 'updateTransactionSendFlowHistory');
826
+ const sendFlowHistory = transactionMeta.sendFlowHistory ?? [];
827
+ if (currentSendFlowHistoryLength === sendFlowHistory.length) {
828
+ const updatedTransactionMeta = {
829
+ ...transactionMeta,
830
+ sendFlowHistory: [...sendFlowHistory, ...sendFlowHistoryToAdd],
831
+ };
832
+ this.updateTransaction(updatedTransactionMeta, `${controllerName}:updateTransactionSendFlowHistory - sendFlowHistory updated`);
833
+ }
834
+ return __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionID);
835
+ }
806
836
  /**
807
837
  * Update the gas values of a transaction.
808
838
  *
@@ -872,6 +902,7 @@ class TransactionController extends base_controller_1.BaseController {
872
902
  const filteredTransactionGasFees = (0, lodash_1.pickBy)(transactionGasFees);
873
903
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
874
904
  transactionId,
905
+ note: `${controllerName}:updateTransactionGasFees - gas values updated`,
875
906
  skipResimulateCheck: true,
876
907
  }, (draftTxMeta) => {
877
908
  const { txParams, ...otherProps } = filteredTransactionGasFees;
@@ -986,6 +1017,8 @@ class TransactionController extends base_controller_1.BaseController {
986
1017
  }
987
1018
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
988
1019
  transactionId,
1020
+ note: 'TransactionController#setTransactionActive - Transaction isActive updated',
1021
+ skipHistory: true,
989
1022
  skipValidation: true,
990
1023
  skipResimulateCheck: true,
991
1024
  }, (updatedTransactionMeta) => {
@@ -1269,6 +1302,7 @@ class TransactionController extends base_controller_1.BaseController {
1269
1302
  });
1270
1303
  const updatedTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
1271
1304
  transactionId,
1305
+ note: 'TransactionController#updateAtomicBatchData - Atomic batch data updated',
1272
1306
  }, (transactionMeta) => {
1273
1307
  const { nestedTransactions, txParams } = transactionMeta;
1274
1308
  const from = txParams.from;
@@ -1291,6 +1325,7 @@ class TransactionController extends base_controller_1.BaseController {
1291
1325
  await __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateGasEstimate).call(this, draftTransaction);
1292
1326
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
1293
1327
  transactionId,
1328
+ note: 'TransactionController#updateAtomicBatchData - Gas estimate updated',
1294
1329
  }, (transactionMeta) => {
1295
1330
  transactionMeta.txParams.gas = draftTransaction.txParams.gas;
1296
1331
  transactionMeta.simulationFails = draftTransaction.simulationFails;
@@ -1310,6 +1345,7 @@ class TransactionController extends base_controller_1.BaseController {
1310
1345
  (0, logger_1.projectLogger)('Updating batch transactions', { transactionId, batchTransactions });
1311
1346
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
1312
1347
  transactionId,
1348
+ note: 'TransactionController#updateBatchTransactions - Batch transactions updated',
1313
1349
  }, (transactionMeta) => {
1314
1350
  transactionMeta.batchTransactions = batchTransactions;
1315
1351
  });
@@ -1392,7 +1428,7 @@ class TransactionController extends base_controller_1.BaseController {
1392
1428
  }
1393
1429
  }
1394
1430
  exports.TransactionController = TransactionController;
1395
- _TransactionController_afterAdd = new WeakMap(), _TransactionController_afterSign = new WeakMap(), _TransactionController_afterSimulate = new WeakMap(), _TransactionController_approvingTransactionIds = new WeakMap(), _TransactionController_beforeCheckPendingTransaction = new WeakMap(), _TransactionController_beforePublish = new WeakMap(), _TransactionController_beforeSign = new WeakMap(), _TransactionController_gasFeeFlows = new WeakMap(), _TransactionController_getAdditionalSignArguments = new WeakMap(), _TransactionController_getCurrentAccountEIP1559Compatibility = new WeakMap(), _TransactionController_getCurrentNetworkEIP1559Compatibility = new WeakMap(), _TransactionController_getExternalPendingTransactions = new WeakMap(), _TransactionController_getGasFeeEstimates = new WeakMap(), _TransactionController_getNetworkState = new WeakMap(), _TransactionController_getPermittedAccounts = new WeakMap(), _TransactionController_getSavedGasFees = new WeakMap(), _TransactionController_getSimulationConfig = new WeakMap(), _TransactionController_incomingTransactionHelper = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_internalEvents = new WeakMap(), _TransactionController_isAutomaticGasFeeUpdateEnabled = new WeakMap(), _TransactionController_isEIP7702GasFeeTokensEnabled = new WeakMap(), _TransactionController_isFirstTimeInteractionEnabled = new WeakMap(), _TransactionController_isSimulationEnabled = new WeakMap(), _TransactionController_isSwapsDisabled = new WeakMap(), _TransactionController_isTimeoutEnabled = new WeakMap(), _TransactionController_layer1GasFeeFlows = new WeakMap(), _TransactionController_methodDataHelper = new WeakMap(), _TransactionController_multichainTrackingHelper = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(), _TransactionController_publicKeyEIP7702 = new WeakMap(), _TransactionController_publish = new WeakMap(), _TransactionController_publishBatchHook = new WeakMap(), _TransactionController_securityProviderRequest = new WeakMap(), _TransactionController_sign = new WeakMap(), _TransactionController_signAbortCallbacks = new WeakMap(), _TransactionController_skipSimulationTransactionIds = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_trace = new WeakMap(), _TransactionController_transactionHistoryLimit = 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, }) {
1431
+ _TransactionController_afterAdd = new WeakMap(), _TransactionController_afterSign = new WeakMap(), _TransactionController_afterSimulate = new WeakMap(), _TransactionController_approvingTransactionIds = new WeakMap(), _TransactionController_beforeCheckPendingTransaction = new WeakMap(), _TransactionController_beforePublish = new WeakMap(), _TransactionController_beforeSign = new WeakMap(), _TransactionController_gasFeeFlows = new WeakMap(), _TransactionController_getAdditionalSignArguments = new WeakMap(), _TransactionController_getCurrentAccountEIP1559Compatibility = new WeakMap(), _TransactionController_getCurrentNetworkEIP1559Compatibility = new WeakMap(), _TransactionController_getExternalPendingTransactions = new WeakMap(), _TransactionController_getGasFeeEstimates = new WeakMap(), _TransactionController_getNetworkState = new WeakMap(), _TransactionController_getPermittedAccounts = new WeakMap(), _TransactionController_getSavedGasFees = new WeakMap(), _TransactionController_getSimulationConfig = new WeakMap(), _TransactionController_incomingTransactionHelper = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_internalEvents = new WeakMap(), _TransactionController_isAutomaticGasFeeUpdateEnabled = new WeakMap(), _TransactionController_isEIP7702GasFeeTokensEnabled = new WeakMap(), _TransactionController_isFirstTimeInteractionEnabled = new WeakMap(), _TransactionController_isHistoryDisabled = new WeakMap(), _TransactionController_isSendFlowHistoryDisabled = new WeakMap(), _TransactionController_isSimulationEnabled = new WeakMap(), _TransactionController_isSwapsDisabled = new WeakMap(), _TransactionController_isTimeoutEnabled = new WeakMap(), _TransactionController_layer1GasFeeFlows = new WeakMap(), _TransactionController_methodDataHelper = new WeakMap(), _TransactionController_multichainTrackingHelper = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(), _TransactionController_publicKeyEIP7702 = new WeakMap(), _TransactionController_publish = new WeakMap(), _TransactionController_publishBatchHook = new WeakMap(), _TransactionController_securityProviderRequest = new WeakMap(), _TransactionController_sign = new WeakMap(), _TransactionController_signAbortCallbacks = new WeakMap(), _TransactionController_skipSimulationTransactionIds = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_trace = new WeakMap(), _TransactionController_transactionHistoryLimit = 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, }) {
1396
1432
  // If transaction is found for same action id, do not create a new transaction.
1397
1433
  if (__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransactionWithActionId).call(this, actionId)) {
1398
1434
  return;
@@ -1638,6 +1674,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
1638
1674
  // eslint-disable-next-line require-atomic-updates
1639
1675
  transactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
1640
1676
  transactionId,
1677
+ note: 'TransactionController#approveTransaction - Transaction approved',
1641
1678
  }, (draftTxMeta) => {
1642
1679
  const { chainId, txParams } = draftTxMeta;
1643
1680
  const { gas, type } = txParams;
@@ -1690,6 +1727,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
1690
1727
  // eslint-disable-next-line require-atomic-updates
1691
1728
  transactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
1692
1729
  transactionId,
1730
+ note: 'TransactionController#approveTransaction - Transaction submitted',
1693
1731
  }, (draftTxMeta) => {
1694
1732
  draftTxMeta.hash = hash;
1695
1733
  draftTxMeta.status = types_1.TransactionStatus.submitted;
@@ -1898,13 +1936,17 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
1898
1936
  const confirmedTxs = sameFromAndNetworkTransactions.filter((transaction) => transaction.status === types_1.TransactionStatus.confirmed);
1899
1937
  const pendingTxs = sameFromAndNetworkTransactions.filter((transaction) => transaction.status === types_1.TransactionStatus.submitted);
1900
1938
  (0, external_transactions_1.validateConfirmedExternalTransaction)(transactionMeta, confirmedTxs, pendingTxs);
1939
+ // Make sure provided external transaction has non empty history array
1940
+ const newTransactionMeta = (transactionMeta.history ?? []).length === 0 && !__classPrivateFieldGet(this, _TransactionController_isHistoryDisabled, "f")
1941
+ ? (0, history_1.addInitialHistorySnapshot)(transactionMeta)
1942
+ : transactionMeta;
1901
1943
  this.update((state) => {
1902
1944
  state.transactions = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_trimTransactionsForState).call(this, [
1903
1945
  ...state.transactions,
1904
- transactionMeta,
1946
+ newTransactionMeta,
1905
1947
  ]);
1906
1948
  });
1907
- return transactionMeta;
1949
+ return newTransactionMeta;
1908
1950
  }, _TransactionController_markNonceDuplicatesDropped = function _TransactionController_markNonceDuplicatesDropped(transactionId) {
1909
1951
  const transactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId);
1910
1952
  if (!transactionMeta) {
@@ -1975,7 +2017,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
1975
2017
  (0, logger_1.projectLogger)('Calling before sign hook', transactionMeta);
1976
2018
  const { updateTransaction } = (await __classPrivateFieldGet(this, _TransactionController_beforeSign, "f").call(this, { transactionMeta })) ?? {};
1977
2019
  if (updateTransaction) {
1978
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId, skipResimulateCheck: true }, updateTransaction);
2020
+ __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId, skipResimulateCheck: true, note: 'beforeSign Hook' }, updateTransaction);
1979
2021
  (0, logger_1.projectLogger)('Updated transaction after before sign hook');
1980
2022
  }
1981
2023
  transactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransactionOrThrow).call(this, transactionId);
@@ -2154,7 +2196,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2154
2196
  ];
2155
2197
  }, _TransactionController_getLayer1GasFeeFlows = function _TransactionController_getLayer1GasFeeFlows() {
2156
2198
  return [new OptimismLayer1GasFeeFlow_1.OptimismLayer1GasFeeFlow(), new ScrollLayer1GasFeeFlow_1.ScrollLayer1GasFeeFlow()];
2157
- }, _TransactionController_updateTransactionInternal = function _TransactionController_updateTransactionInternal({ transactionId, skipValidation, skipResimulateCheck, }, callback) {
2199
+ }, _TransactionController_updateTransactionInternal = function _TransactionController_updateTransactionInternal({ transactionId, note, skipHistory, skipValidation, skipResimulateCheck, }, callback) {
2158
2200
  let resimulateResponse;
2159
2201
  this.update((state) => {
2160
2202
  const index = state.transactions.findIndex(({ id }) => id === transactionId);
@@ -2171,6 +2213,10 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2171
2213
  if (!skipResimulateCheck && __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this)) {
2172
2214
  resimulateResponse = (0, ResimulateHelper_1.shouldResimulate)(originalTransactionMeta, transactionMeta);
2173
2215
  }
2216
+ const shouldSkipHistory = __classPrivateFieldGet(this, _TransactionController_isHistoryDisabled, "f") || skipHistory;
2217
+ if (!shouldSkipHistory) {
2218
+ transactionMeta = (0, history_1.updateTransactionHistory)(transactionMeta, note ?? 'Transaction updated');
2219
+ }
2174
2220
  state.transactions[index] = transactionMeta;
2175
2221
  });
2176
2222
  const transactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId);
@@ -2232,6 +2278,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2232
2278
  }
2233
2279
  const updatedTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
2234
2280
  transactionId,
2281
+ note: 'TransactionController#updateSimulationData - Update simulation data',
2235
2282
  skipResimulateCheck: Boolean(blockTime),
2236
2283
  }, (txMeta) => {
2237
2284
  txMeta.gasFeeTokens = gasFeeTokens;
@@ -2244,7 +2291,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2244
2291
  (0, logger_1.projectLogger)('Updated simulation data', transactionId, updatedTransactionMeta);
2245
2292
  await __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_runAfterSimulateHook).call(this, updatedTransactionMeta);
2246
2293
  }, _TransactionController_onGasFeePollerTransactionUpdate = function _TransactionController_onGasFeePollerTransactionUpdate({ transactionId, gasFeeEstimates, gasFeeEstimatesLoaded, layer1GasFee, }) {
2247
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId }, (txMeta) => {
2294
+ __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId, skipHistory: true }, (txMeta) => {
2248
2295
  (0, GasFeePoller_1.updateTransactionGasProperties)({
2249
2296
  txMeta,
2250
2297
  gasFeeEstimates,
@@ -2350,6 +2397,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2350
2397
  try {
2351
2398
  newTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
2352
2399
  transactionId: transactionMeta.id,
2400
+ note: 'TransactionController#failTransaction - Add error message and set status to failed',
2353
2401
  skipValidation: true,
2354
2402
  }, (draftTransactionMeta) => {
2355
2403
  draftTransactionMeta.status = types_1.TransactionStatus.failed;
@@ -2391,6 +2439,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2391
2439
  const updatedTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
2392
2440
  transactionId,
2393
2441
  skipResimulateCheck: true,
2442
+ note: 'afterSimulate Hook',
2394
2443
  }, (txMeta) => {
2395
2444
  txMeta.txParamsOriginal = (0, lodash_1.cloneDeep)(txMeta.txParams);
2396
2445
  updateTransaction(txMeta);