@metamask-previews/transaction-controller 57.2.0-preview-53749f1 → 57.2.0-preview-4d46a3e9

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 (48) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/TransactionController.cjs +72 -19
  3. package/dist/TransactionController.cjs.map +1 -1
  4. package/dist/TransactionController.d.cts +17 -3
  5. package/dist/TransactionController.d.cts.map +1 -1
  6. package/dist/TransactionController.d.mts +17 -3
  7. package/dist/TransactionController.d.mts.map +1 -1
  8. package/dist/TransactionController.mjs +72 -19
  9. package/dist/TransactionController.mjs.map +1 -1
  10. package/dist/api/simulation-api.cjs +28 -2
  11. package/dist/api/simulation-api.cjs.map +1 -1
  12. package/dist/api/simulation-api.d.cts.map +1 -1
  13. package/dist/api/simulation-api.d.mts.map +1 -1
  14. package/dist/api/simulation-api.mjs +29 -2
  15. package/dist/api/simulation-api.mjs.map +1 -1
  16. package/dist/constants.cjs +5 -1
  17. package/dist/constants.cjs.map +1 -1
  18. package/dist/constants.d.cts +2 -0
  19. package/dist/constants.d.cts.map +1 -1
  20. package/dist/constants.d.mts +2 -0
  21. package/dist/constants.d.mts.map +1 -1
  22. package/dist/constants.mjs +4 -0
  23. package/dist/constants.mjs.map +1 -1
  24. package/dist/index.cjs +2 -1
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.d.cts +3 -3
  27. package/dist/index.d.cts.map +1 -1
  28. package/dist/index.d.mts +3 -3
  29. package/dist/index.d.mts.map +1 -1
  30. package/dist/index.mjs +1 -1
  31. package/dist/index.mjs.map +1 -1
  32. package/dist/types.cjs +6 -1
  33. package/dist/types.cjs.map +1 -1
  34. package/dist/types.d.cts +28 -0
  35. package/dist/types.d.cts.map +1 -1
  36. package/dist/types.d.mts +28 -0
  37. package/dist/types.d.mts.map +1 -1
  38. package/dist/types.mjs +5 -0
  39. package/dist/types.mjs.map +1 -1
  40. package/dist/utils/gas.cjs +11 -1
  41. package/dist/utils/gas.cjs.map +1 -1
  42. package/dist/utils/gas.d.cts +3 -1
  43. package/dist/utils/gas.d.cts.map +1 -1
  44. package/dist/utils/gas.d.mts +3 -1
  45. package/dist/utils/gas.d.mts.map +1 -1
  46. package/dist/utils/gas.mjs +11 -1
  47. package/dist/utils/gas.mjs.map +1 -1
  48. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,16 @@ 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
+ - Add optional `afterSimulate` and `beforeSign` hooks to constructor ([#5503](https://github.com/MetaMask/core/pull/5503))
13
+ - Add `AfterSimulateHook` type.
14
+ - Add `BeforeSignHook` type.
15
+ - Add `TransactionContainerType` enum.
16
+ - Add `TransactionControllerEstimateGasAction` type.
17
+ - Add optional `containerTypes` property to `TransactionMeta`.
18
+ - Add optional `ignoreDelegationSignatures` boolean to `estimateGas` method.
19
+
10
20
  ## [57.2.0]
11
21
 
12
22
  ### Added
@@ -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_approvingTransactionIds, _TransactionController_beforeCheckPendingTransaction, _TransactionController_beforePublish, _TransactionController_gasFeeFlows, _TransactionController_getAdditionalSignArguments, _TransactionController_getCurrentAccountEIP1559Compatibility, _TransactionController_getCurrentNetworkEIP1559Compatibility, _TransactionController_getExternalPendingTransactions, _TransactionController_getGasFeeEstimates, _TransactionController_getNetworkState, _TransactionController_getPermittedAccounts, _TransactionController_getSavedGasFees, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_internalEvents, _TransactionController_isAutomaticGasFeeUpdateEnabled, _TransactionController_isEIP7702GasFeeTokensEnabled, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isHistoryDisabled, _TransactionController_isSendFlowHistoryDisabled, _TransactionController_isSimulationEnabled, _TransactionController_isSwapsDisabled, _TransactionController_layer1GasFeeFlows, _TransactionController_methodDataHelper, _TransactionController_multichainTrackingHelper, _TransactionController_pendingTransactionOptions, _TransactionController_publicKeyEIP7702, _TransactionController_publish, _TransactionController_publishBatchHook, _TransactionController_securityProviderRequest, _TransactionController_sign, _TransactionController_signAbortCallbacks, _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_updateFirstTimeInteraction, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_registerActionHandlers, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow, _TransactionController_failTransaction;
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_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_internalEvents, _TransactionController_isAutomaticGasFeeUpdateEnabled, _TransactionController_isEIP7702GasFeeTokensEnabled, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isHistoryDisabled, _TransactionController_isSendFlowHistoryDisabled, _TransactionController_isSimulationEnabled, _TransactionController_isSwapsDisabled, _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_updateFirstTimeInteraction, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_registerActionHandlers, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow, _TransactionController_failTransaction, _TransactionController_runAfterSimulateHook;
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");
@@ -147,9 +147,11 @@ class TransactionController extends base_controller_1.BaseController {
147
147
  _TransactionController_instances.add(this);
148
148
  _TransactionController_afterAdd.set(this, void 0);
149
149
  _TransactionController_afterSign.set(this, void 0);
150
+ _TransactionController_afterSimulate.set(this, void 0);
150
151
  _TransactionController_approvingTransactionIds.set(this, new Set());
151
152
  _TransactionController_beforeCheckPendingTransaction.set(this, void 0);
152
153
  _TransactionController_beforePublish.set(this, void 0);
154
+ _TransactionController_beforeSign.set(this, void 0);
153
155
  _TransactionController_gasFeeFlows.set(this, void 0);
154
156
  _TransactionController_getAdditionalSignArguments.set(this, void 0);
155
157
  _TransactionController_getCurrentAccountEIP1559Compatibility.set(this, void 0);
@@ -179,6 +181,7 @@ class TransactionController extends base_controller_1.BaseController {
179
181
  _TransactionController_securityProviderRequest.set(this, void 0);
180
182
  _TransactionController_sign.set(this, void 0);
181
183
  _TransactionController_signAbortCallbacks.set(this, new Map());
184
+ _TransactionController_skipSimulationTransactionIds.set(this, new Set());
182
185
  _TransactionController_testGasFeeFlows.set(this, void 0);
183
186
  _TransactionController_trace.set(this, void 0);
184
187
  _TransactionController_transactionHistoryLimit.set(this, void 0);
@@ -188,10 +191,12 @@ class TransactionController extends base_controller_1.BaseController {
188
191
  this.messagingSystem = messenger;
189
192
  __classPrivateFieldSet(this, _TransactionController_afterAdd, hooks?.afterAdd ?? (() => Promise.resolve({})), "f");
190
193
  __classPrivateFieldSet(this, _TransactionController_afterSign, hooks?.afterSign ?? (() => true), "f");
194
+ __classPrivateFieldSet(this, _TransactionController_afterSimulate, hooks?.afterSimulate ?? (() => Promise.resolve({})), "f");
191
195
  __classPrivateFieldSet(this, _TransactionController_beforeCheckPendingTransaction,
192
196
  /* istanbul ignore next */
193
197
  hooks?.beforeCheckPendingTransaction ?? (() => Promise.resolve(true)), "f");
194
198
  __classPrivateFieldSet(this, _TransactionController_beforePublish, hooks?.beforePublish ?? (() => Promise.resolve(true)), "f");
199
+ __classPrivateFieldSet(this, _TransactionController_beforeSign, hooks?.beforeSign ?? (() => Promise.resolve({})), "f");
195
200
  __classPrivateFieldSet(this, _TransactionController_getAdditionalSignArguments, hooks?.getAdditionalSignArguments ?? (() => []), "f");
196
201
  __classPrivateFieldSet(this, _TransactionController_getCurrentAccountEIP1559Compatibility, getCurrentAccountEIP1559Compatibility ?? (() => Promise.resolve(true)), "f");
197
202
  __classPrivateFieldSet(this, _TransactionController_getCurrentNetworkEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, "f");
@@ -577,15 +582,18 @@ class TransactionController extends base_controller_1.BaseController {
577
582
  *
578
583
  * @param transaction - The transaction to estimate gas for.
579
584
  * @param networkClientId - The network client id to use for the estimate.
585
+ * @param options - Additional options for the estimate.
586
+ * @param options.ignoreDelegationSignatures - Ignore signature errors if submitting delegations to the DelegationManager.
580
587
  * @returns The gas and gas price.
581
588
  */
582
- async estimateGas(transaction, networkClientId) {
589
+ async estimateGas(transaction, networkClientId, { ignoreDelegationSignatures, } = {}) {
583
590
  const ethQuery = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, {
584
591
  networkClientId,
585
592
  });
586
593
  const { estimatedGas, simulationFails } = await (0, gas_1.estimateGas)({
587
594
  chainId: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getChainId).call(this, networkClientId),
588
595
  ethQuery,
596
+ ignoreDelegationSignatures,
589
597
  isSimulationEnabled: __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this),
590
598
  messenger: this.messagingSystem,
591
599
  txParams: transaction,
@@ -1267,7 +1275,7 @@ class TransactionController extends base_controller_1.BaseController {
1267
1275
  }
1268
1276
  }
1269
1277
  exports.TransactionController = TransactionController;
1270
- _TransactionController_afterAdd = new WeakMap(), _TransactionController_afterSign = new WeakMap(), _TransactionController_approvingTransactionIds = new WeakMap(), _TransactionController_beforeCheckPendingTransaction = new WeakMap(), _TransactionController_beforePublish = 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_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_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_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, }) {
1278
+ _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_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_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, }) {
1271
1279
  // If transaction is found for same action id, do not create a new transaction.
1272
1280
  if (__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransactionWithActionId).call(this, actionId)) {
1273
1281
  return;
@@ -1442,6 +1450,9 @@ _TransactionController_afterAdd = new WeakMap(), _TransactionController_afterSig
1442
1450
  }
1443
1451
  }
1444
1452
  }
1453
+ finally {
1454
+ __classPrivateFieldGet(this, _TransactionController_skipSimulationTransactionIds, "f").delete(transactionId);
1455
+ }
1445
1456
  }
1446
1457
  const finalMeta = await finishedPromise;
1447
1458
  switch (finalMeta?.status) {
@@ -1818,31 +1829,43 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
1818
1829
  const currentAccountIsEIP1559Compatible = await __classPrivateFieldGet(this, _TransactionController_getCurrentAccountEIP1559Compatibility, "f").call(this);
1819
1830
  return (currentNetworkIsEIP1559Compatible && currentAccountIsEIP1559Compatible);
1820
1831
  }, _TransactionController_signTransaction = async function _TransactionController_signTransaction(transactionMeta) {
1821
- const { isExternalSign, txParams } = transactionMeta;
1832
+ const { chainId, id: transactionId, isExternalSign, txParams, } = transactionMeta;
1822
1833
  if (isExternalSign) {
1823
1834
  (0, logger_1.projectLogger)('Skipping sign as signed externally');
1824
1835
  return undefined;
1825
1836
  }
1826
- (0, logger_1.projectLogger)('Signing transaction', txParams);
1827
1837
  const { authorizationList, from } = txParams;
1828
- const finalTxParams = { ...txParams };
1829
- finalTxParams.authorizationList = await (0, eip7702_1.signAuthorizationList)({
1838
+ const signedAuthorizationList = await (0, eip7702_1.signAuthorizationList)({
1830
1839
  authorizationList,
1831
1840
  messenger: this.messagingSystem,
1832
1841
  transactionMeta,
1833
1842
  });
1834
- const unsignedEthTx = (0, prepare_1.prepareTransaction)(transactionMeta.chainId, finalTxParams);
1835
- __classPrivateFieldGet(this, _TransactionController_approvingTransactionIds, "f").add(transactionMeta.id);
1843
+ if (signedAuthorizationList) {
1844
+ __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId }, (txMeta) => {
1845
+ txMeta.txParams.authorizationList = signedAuthorizationList;
1846
+ });
1847
+ }
1848
+ (0, logger_1.projectLogger)('Calling before sign hook', transactionMeta);
1849
+ const { updateTransaction } = (await __classPrivateFieldGet(this, _TransactionController_beforeSign, "f").call(this, { transactionMeta })) ?? {};
1850
+ if (updateTransaction) {
1851
+ __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId, skipResimulateCheck: true, note: 'beforeSign Hook' }, updateTransaction);
1852
+ (0, logger_1.projectLogger)('Updated transaction after before sign hook');
1853
+ }
1854
+ const finalTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransactionOrThrow).call(this, transactionId);
1855
+ const { txParams: finalTxParams } = finalTransactionMeta;
1856
+ const unsignedEthTx = (0, prepare_1.prepareTransaction)(chainId, finalTxParams);
1857
+ __classPrivateFieldGet(this, _TransactionController_approvingTransactionIds, "f").add(transactionId);
1858
+ (0, logger_1.projectLogger)('Signing transaction', finalTxParams);
1836
1859
  const signedTx = await new Promise((resolve, reject) => {
1837
- __classPrivateFieldGet(this, _TransactionController_sign, "f")?.call(this, unsignedEthTx, from, ...__classPrivateFieldGet(this, _TransactionController_getAdditionalSignArguments, "f").call(this, transactionMeta)).then(resolve, reject);
1838
- __classPrivateFieldGet(this, _TransactionController_signAbortCallbacks, "f").set(transactionMeta.id, () => reject(new Error('Signing aborted by user')));
1860
+ __classPrivateFieldGet(this, _TransactionController_sign, "f")?.call(this, unsignedEthTx, from, ...__classPrivateFieldGet(this, _TransactionController_getAdditionalSignArguments, "f").call(this, finalTransactionMeta)).then(resolve, reject);
1861
+ __classPrivateFieldGet(this, _TransactionController_signAbortCallbacks, "f").set(transactionId, () => reject(new Error('Signing aborted by user')));
1839
1862
  });
1840
- __classPrivateFieldGet(this, _TransactionController_signAbortCallbacks, "f").delete(transactionMeta.id);
1863
+ __classPrivateFieldGet(this, _TransactionController_signAbortCallbacks, "f").delete(transactionId);
1841
1864
  if (!signedTx) {
1842
1865
  (0, logger_1.projectLogger)('Skipping signed status as no signed transaction');
1843
1866
  return undefined;
1844
1867
  }
1845
- const transactionMetaFromHook = (0, lodash_1.cloneDeep)(transactionMeta);
1868
+ const transactionMetaFromHook = (0, lodash_1.cloneDeep)(finalTransactionMeta);
1846
1869
  if (!__classPrivateFieldGet(this, _TransactionController_afterSign, "f").call(this, transactionMetaFromHook, signedTx)) {
1847
1870
  this.updateTransaction(transactionMetaFromHook, 'TransactionController#signTransaction - Update after sign');
1848
1871
  (0, logger_1.projectLogger)('Skipping signed status based on hook');
@@ -2061,7 +2084,8 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2061
2084
  tokenBalanceChanges: [],
2062
2085
  };
2063
2086
  let gasFeeTokens = [];
2064
- if (__classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this)) {
2087
+ const isBalanceChangesSkipped = __classPrivateFieldGet(this, _TransactionController_skipSimulationTransactionIds, "f").has(transactionId);
2088
+ if (__classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this) && !isBalanceChangesSkipped) {
2065
2089
  simulationData = await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Simulate', parentContext: traceContext }, () => (0, balance_changes_1.getBalanceChanges)({
2066
2090
  blockTime,
2067
2091
  chainId,
@@ -2085,21 +2109,24 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2085
2109
  transactionMeta,
2086
2110
  });
2087
2111
  }
2088
- const finalTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId);
2112
+ const latestTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId);
2089
2113
  /* istanbul ignore if */
2090
- if (!finalTransactionMeta) {
2114
+ if (!latestTransactionMeta) {
2091
2115
  (0, logger_1.projectLogger)('Cannot update simulation data as transaction not found', transactionId, simulationData);
2092
2116
  return;
2093
2117
  }
2094
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
2118
+ const updatedTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
2095
2119
  transactionId,
2096
2120
  note: 'TransactionController#updateSimulationData - Update simulation data',
2097
2121
  skipResimulateCheck: Boolean(blockTime),
2098
2122
  }, (txMeta) => {
2099
2123
  txMeta.gasFeeTokens = gasFeeTokens;
2100
- txMeta.simulationData = simulationData;
2124
+ if (!isBalanceChangesSkipped) {
2125
+ txMeta.simulationData = simulationData;
2126
+ }
2101
2127
  });
2102
- (0, logger_1.projectLogger)('Updated simulation data', transactionId, simulationData);
2128
+ (0, logger_1.projectLogger)('Updated simulation data', transactionId, updatedTransactionMeta);
2129
+ await __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_runAfterSimulateHook).call(this, updatedTransactionMeta);
2103
2130
  }, _TransactionController_onGasFeePollerTransactionUpdate = function _TransactionController_onGasFeePollerTransactionUpdate({ transactionId, gasFeeEstimates, gasFeeEstimatesLoaded, layer1GasFee, }) {
2104
2131
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId, skipHistory: true }, (txMeta) => {
2105
2132
  (0, GasFeePoller_1.updateTransactionGasProperties)({
@@ -2156,6 +2183,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2156
2183
  txMeta: transactionMeta,
2157
2184
  });
2158
2185
  }, _TransactionController_registerActionHandlers = function _TransactionController_registerActionHandlers() {
2186
+ this.messagingSystem.registerActionHandler(`${controllerName}:estimateGas`, this.estimateGas.bind(this));
2159
2187
  this.messagingSystem.registerActionHandler(`${controllerName}:updateCustodialTransaction`, this.updateCustodialTransaction.bind(this));
2160
2188
  }, _TransactionController_deleteTransaction = function _TransactionController_deleteTransaction(transactionId) {
2161
2189
  this.update((state) => {
@@ -2204,5 +2232,30 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2204
2232
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_onTransactionStatusChange).call(this, newTransactionMeta);
2205
2233
  this.messagingSystem.publish(`${controllerName}:transactionFinished`, newTransactionMeta);
2206
2234
  __classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${transactionMeta.id}:finished`, newTransactionMeta);
2235
+ }, _TransactionController_runAfterSimulateHook = async function _TransactionController_runAfterSimulateHook(transactionMeta) {
2236
+ (0, logger_1.projectLogger)('Calling afterSimulate hook', transactionMeta);
2237
+ const { id: transactionId } = transactionMeta;
2238
+ const result = await __classPrivateFieldGet(this, _TransactionController_afterSimulate, "f").call(this, {
2239
+ transactionMeta,
2240
+ });
2241
+ const { skipSimulation, updateTransaction } = result || {};
2242
+ if (skipSimulation) {
2243
+ __classPrivateFieldGet(this, _TransactionController_skipSimulationTransactionIds, "f").add(transactionId);
2244
+ }
2245
+ else if (skipSimulation === false) {
2246
+ __classPrivateFieldGet(this, _TransactionController_skipSimulationTransactionIds, "f").delete(transactionId);
2247
+ }
2248
+ if (!updateTransaction) {
2249
+ return;
2250
+ }
2251
+ const updatedTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
2252
+ transactionId,
2253
+ skipResimulateCheck: true,
2254
+ note: 'afterSimulate Hook',
2255
+ }, (txMeta) => {
2256
+ txMeta.txParamsOriginal = (0, lodash_1.cloneDeep)(txMeta.txParams);
2257
+ updateTransaction(txMeta);
2258
+ });
2259
+ (0, logger_1.projectLogger)('Updated transaction with afterSimulate data', updatedTransactionMeta);
2207
2260
  };
2208
2261
  //# sourceMappingURL=TransactionController.cjs.map