@metamask-previews/transaction-controller 50.0.0-preview-b69c669 → 50.0.0-preview-39c90ec

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.
@@ -13,7 +13,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
13
13
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
15
  };
16
- var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_methodDataHelper, _TransactionController_incomingTransactionChainIds, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_publicKeyEIP7702, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _TransactionController_rejectTransaction, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateFirstTimeInteraction, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow;
16
+ var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_methodDataHelper, _TransactionController_incomingTransactionChainIds, _TransactionController_incomingTransactionHelper, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_publicKeyEIP7702, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_afterSimulate, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _TransactionController_rejectTransaction, _TransactionController_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateFirstTimeInteraction, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getSelectedAccount, _TransactionController_getInternalAccounts, _TransactionController_updateSubmitHistory, _TransactionController_updateGasEstimate, _TransactionController_deleteTransaction, _TransactionController_isRejectError, _TransactionController_rejectTransactionAndThrow;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.TransactionController = exports.ApprovalState = exports.SPEED_UP_RATE = exports.CANCEL_RATE = void 0;
19
19
  const base_controller_1 = require("@metamask/base-controller");
@@ -182,6 +182,7 @@ class TransactionController extends base_controller_1.BaseController {
182
182
  _TransactionController_isFirstTimeInteractionEnabled.set(this, void 0);
183
183
  _TransactionController_isSimulationEnabled.set(this, void 0);
184
184
  _TransactionController_testGasFeeFlows.set(this, void 0);
185
+ _TransactionController_afterSimulate.set(this, void 0);
185
186
  _TransactionController_multichainTrackingHelper.set(this, void 0);
186
187
  _TransactionController_checkForPendingTransactionAndStartPolling.set(this, () => {
187
188
  __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").checkForPendingTransactionAndStartPolling();
@@ -212,6 +213,7 @@ class TransactionController extends base_controller_1.BaseController {
212
213
  __classPrivateFieldSet(this, _TransactionController_testGasFeeFlows, testGasFeeFlows === true, "f");
213
214
  __classPrivateFieldSet(this, _TransactionController_trace, trace ?? ((_request, fn) => fn?.()), "f");
214
215
  this.afterSign = hooks?.afterSign ?? (() => true);
216
+ __classPrivateFieldSet(this, _TransactionController_afterSimulate, hooks?.afterSimulate ?? (() => Promise.resolve(undefined)), "f");
215
217
  this.beforeCheckPendingTransaction =
216
218
  hooks?.beforeCheckPendingTransaction ??
217
219
  /* istanbul ignore next */
@@ -452,6 +454,7 @@ class TransactionController extends base_controller_1.BaseController {
452
454
  this.addMetadata(addedTransactionMeta);
453
455
  if (requireApproval !== false) {
454
456
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateSimulationData).call(this, addedTransactionMeta, {
457
+ ethQuery,
455
458
  traceContext,
456
459
  }).catch((error) => {
457
460
  (0, logger_1.projectLogger)('Error while updating simulation data', error);
@@ -1769,7 +1772,7 @@ class TransactionController extends base_controller_1.BaseController {
1769
1772
  }
1770
1773
  }
1771
1774
  exports.TransactionController = TransactionController;
1772
- _TransactionController_internalEvents = new WeakMap(), _TransactionController_methodDataHelper = new WeakMap(), _TransactionController_incomingTransactionChainIds = new WeakMap(), _TransactionController_incomingTransactionHelper = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(), _TransactionController_publicKeyEIP7702 = new WeakMap(), _TransactionController_trace = new WeakMap(), _TransactionController_transactionHistoryLimit = new WeakMap(), _TransactionController_isFirstTimeInteractionEnabled = new WeakMap(), _TransactionController_isSimulationEnabled = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_multichainTrackingHelper = new WeakMap(), _TransactionController_checkForPendingTransactionAndStartPolling = new WeakMap(), _TransactionController_instances = new WeakSet(), _TransactionController_retryTransaction = async function _TransactionController_retryTransaction({ actionId, afterSubmit, estimatedBaseFee, gasValues, label, prepareTransactionParams, rate, transactionId, transactionType, }) {
1775
+ _TransactionController_internalEvents = new WeakMap(), _TransactionController_methodDataHelper = new WeakMap(), _TransactionController_incomingTransactionChainIds = new WeakMap(), _TransactionController_incomingTransactionHelper = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(), _TransactionController_publicKeyEIP7702 = new WeakMap(), _TransactionController_trace = new WeakMap(), _TransactionController_transactionHistoryLimit = new WeakMap(), _TransactionController_isFirstTimeInteractionEnabled = new WeakMap(), _TransactionController_isSimulationEnabled = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_afterSimulate = new WeakMap(), _TransactionController_multichainTrackingHelper = new WeakMap(), _TransactionController_checkForPendingTransactionAndStartPolling = new WeakMap(), _TransactionController_instances = new WeakSet(), _TransactionController_retryTransaction = async function _TransactionController_retryTransaction({ actionId, afterSubmit, estimatedBaseFee, gasValues, label, prepareTransactionParams, rate, transactionId, transactionType, }) {
1773
1776
  // If transaction is found for same action id, do not create a new transaction.
1774
1777
  if (this.getTransactionWithActionId(actionId)) {
1775
1778
  return;
@@ -2001,7 +2004,7 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
2001
2004
  catch (error) {
2002
2005
  (0, logger_1.projectLogger)('Error fetching account address relationship, skipping first time interaction update', error);
2003
2006
  }
2004
- }, _TransactionController_updateSimulationData = async function _TransactionController_updateSimulationData(transactionMeta, { blockTime, traceContext, } = {}) {
2007
+ }, _TransactionController_updateSimulationData = async function _TransactionController_updateSimulationData(transactionMeta, { blockTime, ethQuery, traceContext, } = {}) {
2005
2008
  const { id: transactionId, chainId, txParams, simulationData: prevSimulationData, } = transactionMeta;
2006
2009
  const { from, to, value, data } = txParams;
2007
2010
  let simulationData = {
@@ -2030,20 +2033,35 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_me
2030
2033
  };
2031
2034
  }
2032
2035
  }
2033
- const finalTransactionMeta = this.getTransaction(transactionId);
2036
+ let finalTransactionMeta = this.getTransaction(transactionId);
2034
2037
  /* istanbul ignore if */
2035
2038
  if (!finalTransactionMeta) {
2036
2039
  (0, logger_1.projectLogger)('Cannot update simulation data as transaction not found', transactionId, simulationData);
2037
2040
  return;
2038
2041
  }
2039
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
2042
+ finalTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
2040
2043
  transactionId,
2041
2044
  note: 'TransactionController#updateSimulationData - Update simulation data',
2042
2045
  skipResimulateCheck: Boolean(blockTime),
2043
2046
  }, (txMeta) => {
2044
2047
  txMeta.simulationData = simulationData;
2045
2048
  });
2046
- (0, logger_1.projectLogger)('Updated simulation data', transactionId, simulationData);
2049
+ if (ethQuery) {
2050
+ (0, logger_1.projectLogger)('Calling afterSimulate hook', finalTransactionMeta);
2051
+ const result = await __classPrivateFieldGet(this, _TransactionController_afterSimulate, "f").call(this, {
2052
+ transactionMeta: finalTransactionMeta,
2053
+ });
2054
+ if (result?.updateTransaction) {
2055
+ (0, logger_1.projectLogger)('Updating transaction with afterSimulate data');
2056
+ finalTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId }, result.updateTransaction);
2057
+ const { estimatedGas } = await (0, gas_1.estimateGas)({ ...finalTransactionMeta.txParams, gas: undefined }, ethQuery);
2058
+ (0, logger_1.projectLogger)('Updating gas following afterSimulate hook', estimatedGas);
2059
+ finalTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId }, (txMeta) => {
2060
+ txMeta.txParams.gas = estimatedGas;
2061
+ });
2062
+ }
2063
+ }
2064
+ (0, logger_1.projectLogger)('Updated simulation data', transactionId, finalTransactionMeta);
2047
2065
  }, _TransactionController_onGasFeePollerTransactionUpdate = function _TransactionController_onGasFeePollerTransactionUpdate({ transactionId, gasFeeEstimates, gasFeeEstimatesLoaded, layer1GasFee, }) {
2048
2066
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId, skipHistory: true }, (txMeta) => {
2049
2067
  if (gasFeeEstimates) {