@metamask-previews/transaction-controller 57.3.0-preview-cf465cec → 57.3.0-preview-8e80bb02

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 +7 -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
@@ -9,6 +9,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  ### Added
11
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.
12
19
  - Add `gasFeeEstimates` property to `TransactionBatchMeta`, populated using `DefaultGasFeeFlow` ([#5886](https://github.com/MetaMask/core/pull/5886))
13
20
 
14
21
  ## [57.3.0]
@@ -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");
@@ -578,15 +583,18 @@ class TransactionController extends base_controller_1.BaseController {
578
583
  *
579
584
  * @param transaction - The transaction to estimate gas for.
580
585
  * @param networkClientId - The network client id to use for the estimate.
586
+ * @param options - Additional options for the estimate.
587
+ * @param options.ignoreDelegationSignatures - Ignore signature errors if submitting delegations to the DelegationManager.
581
588
  * @returns The gas and gas price.
582
589
  */
583
- async estimateGas(transaction, networkClientId) {
590
+ async estimateGas(transaction, networkClientId, { ignoreDelegationSignatures, } = {}) {
584
591
  const ethQuery = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, {
585
592
  networkClientId,
586
593
  });
587
594
  const { estimatedGas, simulationFails } = await (0, gas_1.estimateGas)({
588
595
  chainId: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getChainId).call(this, networkClientId),
589
596
  ethQuery,
597
+ ignoreDelegationSignatures,
590
598
  isSimulationEnabled: __classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this),
591
599
  messenger: this.messagingSystem,
592
600
  txParams: transaction,
@@ -1268,7 +1276,7 @@ class TransactionController extends base_controller_1.BaseController {
1268
1276
  }
1269
1277
  }
1270
1278
  exports.TransactionController = TransactionController;
1271
- _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, }) {
1279
+ _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, }) {
1272
1280
  // If transaction is found for same action id, do not create a new transaction.
1273
1281
  if (__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransactionWithActionId).call(this, actionId)) {
1274
1282
  return;
@@ -1443,6 +1451,9 @@ _TransactionController_afterAdd = new WeakMap(), _TransactionController_afterSig
1443
1451
  }
1444
1452
  }
1445
1453
  }
1454
+ finally {
1455
+ __classPrivateFieldGet(this, _TransactionController_skipSimulationTransactionIds, "f").delete(transactionId);
1456
+ }
1446
1457
  }
1447
1458
  const finalMeta = await finishedPromise;
1448
1459
  switch (finalMeta?.status) {
@@ -1819,31 +1830,43 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
1819
1830
  const currentAccountIsEIP1559Compatible = await __classPrivateFieldGet(this, _TransactionController_getCurrentAccountEIP1559Compatibility, "f").call(this);
1820
1831
  return (currentNetworkIsEIP1559Compatible && currentAccountIsEIP1559Compatible);
1821
1832
  }, _TransactionController_signTransaction = async function _TransactionController_signTransaction(transactionMeta) {
1822
- const { isExternalSign, txParams } = transactionMeta;
1833
+ const { chainId, id: transactionId, isExternalSign, txParams, } = transactionMeta;
1823
1834
  if (isExternalSign) {
1824
1835
  (0, logger_1.projectLogger)('Skipping sign as signed externally');
1825
1836
  return undefined;
1826
1837
  }
1827
- (0, logger_1.projectLogger)('Signing transaction', txParams);
1828
1838
  const { authorizationList, from } = txParams;
1829
- const finalTxParams = { ...txParams };
1830
- finalTxParams.authorizationList = await (0, eip7702_1.signAuthorizationList)({
1839
+ const signedAuthorizationList = await (0, eip7702_1.signAuthorizationList)({
1831
1840
  authorizationList,
1832
1841
  messenger: this.messagingSystem,
1833
1842
  transactionMeta,
1834
1843
  });
1835
- const unsignedEthTx = (0, prepare_1.prepareTransaction)(transactionMeta.chainId, finalTxParams);
1836
- __classPrivateFieldGet(this, _TransactionController_approvingTransactionIds, "f").add(transactionMeta.id);
1844
+ if (signedAuthorizationList) {
1845
+ __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId }, (txMeta) => {
1846
+ txMeta.txParams.authorizationList = signedAuthorizationList;
1847
+ });
1848
+ }
1849
+ (0, logger_1.projectLogger)('Calling before sign hook', transactionMeta);
1850
+ const { updateTransaction } = (await __classPrivateFieldGet(this, _TransactionController_beforeSign, "f").call(this, { transactionMeta })) ?? {};
1851
+ if (updateTransaction) {
1852
+ __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId, skipResimulateCheck: true, note: 'beforeSign Hook' }, updateTransaction);
1853
+ (0, logger_1.projectLogger)('Updated transaction after before sign hook');
1854
+ }
1855
+ const finalTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransactionOrThrow).call(this, transactionId);
1856
+ const { txParams: finalTxParams } = finalTransactionMeta;
1857
+ const unsignedEthTx = (0, prepare_1.prepareTransaction)(chainId, finalTxParams);
1858
+ __classPrivateFieldGet(this, _TransactionController_approvingTransactionIds, "f").add(transactionId);
1859
+ (0, logger_1.projectLogger)('Signing transaction', finalTxParams);
1837
1860
  const signedTx = await new Promise((resolve, reject) => {
1838
- __classPrivateFieldGet(this, _TransactionController_sign, "f")?.call(this, unsignedEthTx, from, ...__classPrivateFieldGet(this, _TransactionController_getAdditionalSignArguments, "f").call(this, transactionMeta)).then(resolve, reject);
1839
- __classPrivateFieldGet(this, _TransactionController_signAbortCallbacks, "f").set(transactionMeta.id, () => reject(new Error('Signing aborted by user')));
1861
+ __classPrivateFieldGet(this, _TransactionController_sign, "f")?.call(this, unsignedEthTx, from, ...__classPrivateFieldGet(this, _TransactionController_getAdditionalSignArguments, "f").call(this, finalTransactionMeta)).then(resolve, reject);
1862
+ __classPrivateFieldGet(this, _TransactionController_signAbortCallbacks, "f").set(transactionId, () => reject(new Error('Signing aborted by user')));
1840
1863
  });
1841
- __classPrivateFieldGet(this, _TransactionController_signAbortCallbacks, "f").delete(transactionMeta.id);
1864
+ __classPrivateFieldGet(this, _TransactionController_signAbortCallbacks, "f").delete(transactionId);
1842
1865
  if (!signedTx) {
1843
1866
  (0, logger_1.projectLogger)('Skipping signed status as no signed transaction');
1844
1867
  return undefined;
1845
1868
  }
1846
- const transactionMetaFromHook = (0, lodash_1.cloneDeep)(transactionMeta);
1869
+ const transactionMetaFromHook = (0, lodash_1.cloneDeep)(finalTransactionMeta);
1847
1870
  if (!__classPrivateFieldGet(this, _TransactionController_afterSign, "f").call(this, transactionMetaFromHook, signedTx)) {
1848
1871
  this.updateTransaction(transactionMetaFromHook, 'TransactionController#signTransaction - Update after sign');
1849
1872
  (0, logger_1.projectLogger)('Skipping signed status based on hook');
@@ -2062,7 +2085,8 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2062
2085
  tokenBalanceChanges: [],
2063
2086
  };
2064
2087
  let gasFeeTokens = [];
2065
- if (__classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this)) {
2088
+ const isBalanceChangesSkipped = __classPrivateFieldGet(this, _TransactionController_skipSimulationTransactionIds, "f").has(transactionId);
2089
+ if (__classPrivateFieldGet(this, _TransactionController_isSimulationEnabled, "f").call(this) && !isBalanceChangesSkipped) {
2066
2090
  simulationData = await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Simulate', parentContext: traceContext }, () => (0, balance_changes_1.getBalanceChanges)({
2067
2091
  blockTime,
2068
2092
  chainId,
@@ -2086,21 +2110,24 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2086
2110
  transactionMeta,
2087
2111
  });
2088
2112
  }
2089
- const finalTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId);
2113
+ const latestTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId);
2090
2114
  /* istanbul ignore if */
2091
- if (!finalTransactionMeta) {
2115
+ if (!latestTransactionMeta) {
2092
2116
  (0, logger_1.projectLogger)('Cannot update simulation data as transaction not found', transactionId, simulationData);
2093
2117
  return;
2094
2118
  }
2095
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
2119
+ const updatedTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
2096
2120
  transactionId,
2097
2121
  note: 'TransactionController#updateSimulationData - Update simulation data',
2098
2122
  skipResimulateCheck: Boolean(blockTime),
2099
2123
  }, (txMeta) => {
2100
2124
  txMeta.gasFeeTokens = gasFeeTokens;
2101
- txMeta.simulationData = simulationData;
2125
+ if (!isBalanceChangesSkipped) {
2126
+ txMeta.simulationData = simulationData;
2127
+ }
2102
2128
  });
2103
- (0, logger_1.projectLogger)('Updated simulation data', transactionId, simulationData);
2129
+ (0, logger_1.projectLogger)('Updated simulation data', transactionId, updatedTransactionMeta);
2130
+ await __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_runAfterSimulateHook).call(this, updatedTransactionMeta);
2104
2131
  }, _TransactionController_onGasFeePollerTransactionUpdate = function _TransactionController_onGasFeePollerTransactionUpdate({ transactionId, gasFeeEstimates, gasFeeEstimatesLoaded, layer1GasFee, }) {
2105
2132
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId, skipHistory: true }, (txMeta) => {
2106
2133
  (0, GasFeePoller_1.updateTransactionGasProperties)({
@@ -2157,6 +2184,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2157
2184
  txMeta: transactionMeta,
2158
2185
  });
2159
2186
  }, _TransactionController_registerActionHandlers = function _TransactionController_registerActionHandlers() {
2187
+ this.messagingSystem.registerActionHandler(`${controllerName}:estimateGas`, this.estimateGas.bind(this));
2160
2188
  this.messagingSystem.registerActionHandler(`${controllerName}:updateCustodialTransaction`, this.updateCustodialTransaction.bind(this));
2161
2189
  }, _TransactionController_deleteTransaction = function _TransactionController_deleteTransaction(transactionId) {
2162
2190
  this.update((state) => {
@@ -2205,5 +2233,30 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2205
2233
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_onTransactionStatusChange).call(this, newTransactionMeta);
2206
2234
  this.messagingSystem.publish(`${controllerName}:transactionFinished`, newTransactionMeta);
2207
2235
  __classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${transactionMeta.id}:finished`, newTransactionMeta);
2236
+ }, _TransactionController_runAfterSimulateHook = async function _TransactionController_runAfterSimulateHook(transactionMeta) {
2237
+ (0, logger_1.projectLogger)('Calling afterSimulate hook', transactionMeta);
2238
+ const { id: transactionId } = transactionMeta;
2239
+ const result = await __classPrivateFieldGet(this, _TransactionController_afterSimulate, "f").call(this, {
2240
+ transactionMeta,
2241
+ });
2242
+ const { skipSimulation, updateTransaction } = result || {};
2243
+ if (skipSimulation) {
2244
+ __classPrivateFieldGet(this, _TransactionController_skipSimulationTransactionIds, "f").add(transactionId);
2245
+ }
2246
+ else if (skipSimulation === false) {
2247
+ __classPrivateFieldGet(this, _TransactionController_skipSimulationTransactionIds, "f").delete(transactionId);
2248
+ }
2249
+ if (!updateTransaction) {
2250
+ return;
2251
+ }
2252
+ const updatedTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
2253
+ transactionId,
2254
+ skipResimulateCheck: true,
2255
+ note: 'afterSimulate Hook',
2256
+ }, (txMeta) => {
2257
+ txMeta.txParamsOriginal = (0, lodash_1.cloneDeep)(txMeta.txParams);
2258
+ updateTransaction(txMeta);
2259
+ });
2260
+ (0, logger_1.projectLogger)('Updated transaction with afterSimulate data', updatedTransactionMeta);
2208
2261
  };
2209
2262
  //# sourceMappingURL=TransactionController.cjs.map