@metamask-previews/transaction-controller 66.0.1-preview-45c30b7 → 66.0.1-preview-e37aff3

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 (38) hide show
  1. package/CHANGELOG.md +0 -10
  2. package/dist/TransactionController.cjs +111 -28
  3. package/dist/TransactionController.cjs.map +1 -1
  4. package/dist/TransactionController.d.cts +55 -8
  5. package/dist/TransactionController.d.cts.map +1 -1
  6. package/dist/TransactionController.d.mts +55 -8
  7. package/dist/TransactionController.d.mts.map +1 -1
  8. package/dist/TransactionController.mjs +111 -28
  9. package/dist/TransactionController.mjs.map +1 -1
  10. package/dist/helpers/PendingTransactionTracker.cjs +82 -4
  11. package/dist/helpers/PendingTransactionTracker.cjs.map +1 -1
  12. package/dist/helpers/PendingTransactionTracker.d.cts +3 -1
  13. package/dist/helpers/PendingTransactionTracker.d.cts.map +1 -1
  14. package/dist/helpers/PendingTransactionTracker.d.mts +3 -1
  15. package/dist/helpers/PendingTransactionTracker.d.mts.map +1 -1
  16. package/dist/helpers/PendingTransactionTracker.mjs +83 -5
  17. package/dist/helpers/PendingTransactionTracker.mjs.map +1 -1
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.d.cts +1 -1
  20. package/dist/index.d.cts.map +1 -1
  21. package/dist/index.d.mts +1 -1
  22. package/dist/index.d.mts.map +1 -1
  23. package/dist/index.mjs.map +1 -1
  24. package/dist/types.cjs.map +1 -1
  25. package/dist/types.d.cts +14 -0
  26. package/dist/types.d.cts.map +1 -1
  27. package/dist/types.d.mts +14 -0
  28. package/dist/types.d.mts.map +1 -1
  29. package/dist/types.mjs.map +1 -1
  30. package/dist/utils/prepare.cjs +4 -8
  31. package/dist/utils/prepare.cjs.map +1 -1
  32. package/dist/utils/prepare.d.cts +4 -5
  33. package/dist/utils/prepare.d.cts.map +1 -1
  34. package/dist/utils/prepare.d.mts +4 -5
  35. package/dist/utils/prepare.d.mts.map +1 -1
  36. package/dist/utils/prepare.mjs +4 -8
  37. package/dist/utils/prepare.mjs.map +1 -1
  38. package/package.json +1 -1
@@ -9,7 +9,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _TransactionController_instances, _TransactionController_afterAdd, _TransactionController_approvingTransactionIds, _TransactionController_beforeCheckPendingTransaction, _TransactionController_beforePublish, _TransactionController_beforeSign, _TransactionController_gasFeeFlows, _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_publicKeyEIP7702, _TransactionController_publish, _TransactionController_publishBatchHook, _TransactionController_signAbortCallbacks, _TransactionController_skipSimulationTransactionIds, _TransactionController_testGasFeeFlows, _TransactionController_trace, _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_onIncomingTransactions, _TransactionController_generateDappSuggestedGasFees, _TransactionController_addExternalTransaction, _TransactionController_markNonceDuplicatesDropped, _TransactionController_setTransactionStatusDropped, _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_isBalanceChangesSkipped, _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_defaultPublishHook, _TransactionController_getGasFeeTokens;
12
+ 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_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_onIncomingTransactions, _TransactionController_generateDappSuggestedGasFees, _TransactionController_addExternalTransaction, _TransactionController_markNonceDuplicatesDropped, _TransactionController_setTransactionStatusDropped, _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_isBalanceChangesSkipped, _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;
13
13
  import { BaseController } from "@metamask/base-controller";
14
14
  import { ApprovalType, ORIGIN_METAMASK, convertHexToDecimal } from "@metamask/controller-utils";
15
15
  import { NetworkClientType } from "@metamask/network-controller";
@@ -176,7 +176,7 @@ export class TransactionController extends BaseController {
176
176
  * @param options - The controller options.
177
177
  */
178
178
  constructor(options) {
179
- const { disableSwaps, getPermittedAccounts, getSavedGasFees, getSimulationConfig, hooks, incomingTransactions = {}, isAutomaticGasFeeUpdateEnabled, isEIP7702GasFeeTokensEnabled, isFirstTimeInteractionEnabled, isSimulationEnabled, isTimeoutEnabled, messenger, publicKeyEIP7702, state, testGasFeeFlows, trace, } = options;
179
+ 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, } = options;
180
180
  super({
181
181
  name: controllerName,
182
182
  metadata,
@@ -188,11 +188,19 @@ export class TransactionController extends BaseController {
188
188
  });
189
189
  _TransactionController_instances.add(this);
190
190
  _TransactionController_afterAdd.set(this, void 0);
191
+ _TransactionController_afterSign.set(this, void 0);
192
+ _TransactionController_afterSimulate.set(this, void 0);
191
193
  _TransactionController_approvingTransactionIds.set(this, new Set());
192
194
  _TransactionController_beforeCheckPendingTransaction.set(this, void 0);
193
195
  _TransactionController_beforePublish.set(this, void 0);
194
196
  _TransactionController_beforeSign.set(this, void 0);
195
197
  _TransactionController_gasFeeFlows.set(this, void 0);
198
+ _TransactionController_getAdditionalSignArguments.set(this, void 0);
199
+ _TransactionController_getCurrentAccountEIP1559Compatibility.set(this, void 0);
200
+ _TransactionController_getCurrentNetworkEIP1559Compatibility.set(this, void 0);
201
+ _TransactionController_getExternalPendingTransactions.set(this, void 0);
202
+ _TransactionController_getGasFeeEstimates.set(this, void 0);
203
+ _TransactionController_getNetworkState.set(this, void 0);
196
204
  _TransactionController_getPermittedAccounts.set(this, void 0);
197
205
  _TransactionController_getSavedGasFees.set(this, void 0);
198
206
  _TransactionController_getSimulationConfig.set(this, void 0);
@@ -208,9 +216,12 @@ export class TransactionController extends BaseController {
208
216
  _TransactionController_layer1GasFeeFlows.set(this, void 0);
209
217
  _TransactionController_methodDataHelper.set(this, void 0);
210
218
  _TransactionController_multichainTrackingHelper.set(this, void 0);
219
+ _TransactionController_pendingTransactionOptions.set(this, void 0);
211
220
  _TransactionController_publicKeyEIP7702.set(this, void 0);
212
221
  _TransactionController_publish.set(this, void 0);
213
222
  _TransactionController_publishBatchHook.set(this, void 0);
223
+ _TransactionController_securityProviderRequest.set(this, void 0);
224
+ _TransactionController_sign.set(this, void 0);
214
225
  _TransactionController_signAbortCallbacks.set(this, new Map());
215
226
  _TransactionController_skipSimulationTransactionIds.set(this, new Set());
216
227
  _TransactionController_testGasFeeFlows.set(this, void 0);
@@ -220,6 +231,9 @@ export class TransactionController extends BaseController {
220
231
  });
221
232
  this.messenger = messenger;
222
233
  __classPrivateFieldSet(this, _TransactionController_afterAdd, hooks?.afterAdd ?? (() => Promise.resolve({})), "f");
234
+ __classPrivateFieldSet(this, _TransactionController_afterSign, hooks?.afterSign ?? (() => true), "f");
235
+ __classPrivateFieldSet(this, _TransactionController_afterSimulate, hooks?.afterSimulate ??
236
+ (() => Promise.resolve({})), "f");
223
237
  __classPrivateFieldSet(this, _TransactionController_beforeCheckPendingTransaction,
224
238
  /* istanbul ignore next */
225
239
  hooks?.beforeCheckPendingTransaction ??
@@ -227,6 +241,15 @@ export class TransactionController extends BaseController {
227
241
  __classPrivateFieldSet(this, _TransactionController_beforePublish, hooks?.beforePublish ?? (() => Promise.resolve(true)), "f");
228
242
  __classPrivateFieldSet(this, _TransactionController_beforeSign, hooks?.beforeSign ??
229
243
  (() => Promise.resolve({})), "f");
244
+ __classPrivateFieldSet(this, _TransactionController_getAdditionalSignArguments, hooks?.getAdditionalSignArguments ??
245
+ (() => []), "f");
246
+ __classPrivateFieldSet(this, _TransactionController_getCurrentAccountEIP1559Compatibility, getCurrentAccountEIP1559Compatibility ??
247
+ (() => Promise.resolve(true)), "f");
248
+ __classPrivateFieldSet(this, _TransactionController_getCurrentNetworkEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, "f");
249
+ __classPrivateFieldSet(this, _TransactionController_getExternalPendingTransactions, getExternalPendingTransactions ?? (() => []), "f");
250
+ __classPrivateFieldSet(this, _TransactionController_getGasFeeEstimates, getGasFeeEstimates ??
251
+ (() => Promise.resolve({})), "f");
252
+ __classPrivateFieldSet(this, _TransactionController_getNetworkState, getNetworkState, "f");
230
253
  __classPrivateFieldSet(this, _TransactionController_getPermittedAccounts, getPermittedAccounts, "f");
231
254
  __classPrivateFieldSet(this, _TransactionController_getSavedGasFees, getSavedGasFees ?? ((_chainId) => undefined), "f");
232
255
  __classPrivateFieldSet(this, _TransactionController_getSimulationConfig, getSimulationConfig ??
@@ -239,11 +262,14 @@ export class TransactionController extends BaseController {
239
262
  __classPrivateFieldSet(this, _TransactionController_isFirstTimeInteractionEnabled, isFirstTimeInteractionEnabled ?? (() => true), "f");
240
263
  __classPrivateFieldSet(this, _TransactionController_isSimulationEnabled, isSimulationEnabled ?? (() => true), "f");
241
264
  __classPrivateFieldSet(this, _TransactionController_isSwapsDisabled, disableSwaps ?? false, "f");
242
- __classPrivateFieldSet(this, _TransactionController_isTimeoutEnabled, isTimeoutEnabled ?? (() => true), "f");
265
+ __classPrivateFieldSet(this, _TransactionController_isTimeoutEnabled, hooks?.isTimeoutEnabled ?? (() => true), "f");
266
+ __classPrivateFieldSet(this, _TransactionController_pendingTransactionOptions, pendingTransactions, "f");
243
267
  __classPrivateFieldSet(this, _TransactionController_publicKeyEIP7702, publicKeyEIP7702, "f");
244
268
  __classPrivateFieldSet(this, _TransactionController_publish, hooks?.publish ??
245
269
  (() => Promise.resolve({ transactionHash: undefined })), "f");
246
270
  __classPrivateFieldSet(this, _TransactionController_publishBatchHook, hooks?.publishBatch, "f");
271
+ __classPrivateFieldSet(this, _TransactionController_securityProviderRequest, securityProviderRequest, "f");
272
+ __classPrivateFieldSet(this, _TransactionController_sign, sign, "f");
247
273
  __classPrivateFieldSet(this, _TransactionController_testGasFeeFlows, testGasFeeFlows === true, "f");
248
274
  __classPrivateFieldSet(this, _TransactionController_trace, trace ?? ((_request, fn) => fn?.()), "f");
249
275
  const findNetworkClientIdByChainId = (chainId) => {
@@ -254,7 +280,7 @@ export class TransactionController extends BaseController {
254
280
  getNetworkClientById: ((networkClientId) => {
255
281
  return this.messenger.call(`NetworkController:getNetworkClientById`, networkClientId);
256
282
  }),
257
- getNetworkClientRegistry: (() => this.messenger.call('NetworkController:getNetworkClientRegistry')),
283
+ getNetworkClientRegistry,
258
284
  removePendingTransactionTrackerListeners: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_removePendingTransactionTrackerListeners).bind(this),
259
285
  createNonceTracker: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createNonceTracker).bind(this),
260
286
  createPendingTransactionTracker: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createPendingTransactionTracker).bind(this),
@@ -267,7 +293,7 @@ export class TransactionController extends BaseController {
267
293
  __classPrivateFieldSet(this, _TransactionController_layer1GasFeeFlows, __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getLayer1GasFeeFlows).call(this), "f");
268
294
  const gasFeePoller = new GasFeePoller({
269
295
  gasFeeFlows: __classPrivateFieldGet(this, _TransactionController_gasFeeFlows, "f"),
270
- getGasFeeControllerEstimates: (gasFeeOpts) => this.messenger.call('GasFeeController:fetchGasFeeEstimates', gasFeeOpts),
296
+ getGasFeeControllerEstimates: __classPrivateFieldGet(this, _TransactionController_getGasFeeEstimates, "f"),
271
297
  getTransactions: () => this.state.transactions,
272
298
  getTransactionBatches: () => this.state.transactionBatches,
273
299
  layer1GasFeeFlows: __classPrivateFieldGet(this, _TransactionController_layer1GasFeeFlows, "f"),
@@ -341,7 +367,7 @@ export class TransactionController extends BaseController {
341
367
  return await addTransactionBatch({
342
368
  addTransaction: this.addTransaction.bind(this),
343
369
  estimateGas: this.estimateGas.bind(this),
344
- getGasFeeEstimates: (options) => this.messenger.call('GasFeeController:fetchGasFeeEstimates', options),
370
+ getGasFeeEstimates: __classPrivateFieldGet(this, _TransactionController_getGasFeeEstimates, "f"),
345
371
  getInternalAccounts: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getInternalAccounts).bind(this),
346
372
  getSimulationConfig: __classPrivateFieldGet(this, _TransactionController_getSimulationConfig, "f").bind(this),
347
373
  getPendingTransactionTracker: (networkClientId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createPendingTransactionTracker).call(this, {
@@ -384,7 +410,7 @@ export class TransactionController extends BaseController {
384
410
  */
385
411
  async addTransaction(txParams, options) {
386
412
  log('Adding transaction', txParams, options);
387
- const { actionId, assetsFiatValues, batchId, deviceConfirmedOn, disableGasBuffer, gasFeeToken, excludeNativeTokenForFee, isGasFeeIncluded, isGasFeeSponsored, isInternal = false, isStateOnly, nestedTransactions, networkClientId, origin, publishHook, requestId, requiredAssets, requireApproval, securityAlertResponse, skipInitialGasEstimate, swaps = {}, traceContext, type, } = options;
413
+ const { actionId, assetsFiatValues, batchId, deviceConfirmedOn, disableGasBuffer, gasFeeToken, excludeNativeTokenForFee, isGasFeeIncluded, isGasFeeSponsored, isInternal = false, isStateOnly, method, nestedTransactions, networkClientId, origin, publishHook, requestId, requiredAssets, requireApproval, securityAlertResponse, skipInitialGasEstimate, swaps = {}, traceContext, type, } = options;
388
414
  // eslint-disable-next-line no-param-reassign
389
415
  txParams = normalizeTransactionParams(txParams);
390
416
  if (!__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").has(networkClientId)) {
@@ -496,6 +522,12 @@ export class TransactionController extends BaseController {
496
522
  })
497
523
  .catch(noop);
498
524
  }
525
+ // Set security provider response
526
+ if (method && __classPrivateFieldGet(this, _TransactionController_securityProviderRequest, "f")) {
527
+ const securityProviderResponse = await __classPrivateFieldGet(this, _TransactionController_securityProviderRequest, "f").call(this, addedTransactionMeta, method);
528
+ // eslint-disable-next-line require-atomic-updates
529
+ addedTransactionMeta.securityProviderResponse = securityProviderResponse;
530
+ }
499
531
  addedTransactionMeta = updateSwapsTransaction(addedTransactionMeta, transactionType, swaps, {
500
532
  isSwapsDisabled: __classPrivateFieldGet(this, _TransactionController_isSwapsDisabled, "f"),
501
533
  cancelTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_rejectTransaction).bind(this),
@@ -1019,7 +1051,7 @@ export class TransactionController extends BaseController {
1019
1051
  chainId,
1020
1052
  });
1021
1053
  const initialTxAsEthTx = prepareTransaction(chainId, initialTx);
1022
- const initialTxAsSerializedHex = serializeTransaction(chainId, initialTxAsEthTx);
1054
+ const initialTxAsSerializedHex = serializeTransaction(initialTxAsEthTx);
1023
1055
  if (__classPrivateFieldGet(this, _TransactionController_approvingTransactionIds, "f").has(initialTxAsSerializedHex)) {
1024
1056
  return '';
1025
1057
  }
@@ -1207,7 +1239,9 @@ export class TransactionController extends BaseController {
1207
1239
  };
1208
1240
  // Guaranteed as the default gas fee flow matches all transactions.
1209
1241
  const gasFeeFlow = getGasFeeFlow(transactionMeta, __classPrivateFieldGet(this, _TransactionController_gasFeeFlows, "f"), this.messenger);
1210
- const gasFeeControllerData = await this.messenger.call('GasFeeController:fetchGasFeeEstimates', { networkClientId });
1242
+ const gasFeeControllerData = await __classPrivateFieldGet(this, _TransactionController_getGasFeeEstimates, "f").call(this, {
1243
+ networkClientId,
1244
+ });
1211
1245
  return gasFeeFlow.getGasFees({
1212
1246
  gasFeeControllerData,
1213
1247
  messenger: this.messenger,
@@ -1439,7 +1473,7 @@ export class TransactionController extends BaseController {
1439
1473
  return result.gasFeeTokens;
1440
1474
  }
1441
1475
  }
1442
- _TransactionController_afterAdd = new WeakMap(), _TransactionController_approvingTransactionIds = new WeakMap(), _TransactionController_beforeCheckPendingTransaction = new WeakMap(), _TransactionController_beforePublish = new WeakMap(), _TransactionController_beforeSign = new WeakMap(), _TransactionController_gasFeeFlows = 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_publicKeyEIP7702 = new WeakMap(), _TransactionController_publish = new WeakMap(), _TransactionController_publishBatchHook = new WeakMap(), _TransactionController_signAbortCallbacks = new WeakMap(), _TransactionController_skipSimulationTransactionIds = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_trace = 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, }) {
1476
+ _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_checkForPendingTransactionAndStartPolling = new WeakMap(), _TransactionController_instances = new WeakSet(), _TransactionController_retryTransaction = async function _TransactionController_retryTransaction({ actionId, afterSubmit, estimatedBaseFee, gasValues, label, prepareTransactionParams, rate, transactionId, transactionType, }) {
1443
1477
  if (gasValues) {
1444
1478
  // Not good practice to reassign a parameter but temporarily avoiding a larger refactor.
1445
1479
  // eslint-disable-next-line no-param-reassign
@@ -1452,12 +1486,16 @@ _TransactionController_afterAdd = new WeakMap(), _TransactionController_approvin
1452
1486
  if (!transactionMeta) {
1453
1487
  return;
1454
1488
  }
1489
+ /* istanbul ignore next */
1490
+ if (!__classPrivateFieldGet(this, _TransactionController_sign, "f")) {
1491
+ throw new Error('No sign method defined.');
1492
+ }
1455
1493
  const newTxParams = getTransactionParamsWithIncreasedGasFee(transactionMeta.txParams, rate, gasValues);
1456
1494
  prepareTransactionParams?.(newTxParams);
1457
1495
  const unsignedEthTx = prepareTransaction(transactionMeta.chainId, newTxParams);
1458
- const signedTxData = await this.messenger.call('KeyringController:signTransaction', unsignedEthTx, transactionMeta.txParams.from);
1459
- const transactionMetaWithRsv = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionMetaRSV).call(this, transactionMeta, signedTxData);
1460
- const rawTx = serializeTransaction(transactionMeta.chainId, signedTxData);
1496
+ const signedTx = await __classPrivateFieldGet(this, _TransactionController_sign, "f").call(this, unsignedEthTx, transactionMeta.txParams.from);
1497
+ const transactionMetaWithRsv = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionMetaRSV).call(this, transactionMeta, signedTx);
1498
+ const rawTx = serializeTransaction(signedTx);
1461
1499
  const newFee = newTxParams.maxFeePerGas ?? newTxParams.gasPrice;
1462
1500
  const oldFee = newTxParams.maxFeePerGas
1463
1501
  ? transactionMetaWithRsv.txParams.maxFeePerGas
@@ -1496,6 +1534,9 @@ _TransactionController_afterAdd = new WeakMap(), _TransactionController_approvin
1496
1534
  });
1497
1535
  afterSubmit?.(newTransactionMeta);
1498
1536
  }, _TransactionController_signExternalTransaction = async function _TransactionController_signExternalTransaction(chainId, transactionParams) {
1537
+ if (!__classPrivateFieldGet(this, _TransactionController_sign, "f")) {
1538
+ throw new Error('No sign method defined.');
1539
+ }
1499
1540
  const normalizedTransactionParams = normalizeTransactionParams(transactionParams);
1500
1541
  const type = isEIP1559Transaction(normalizedTransactionParams)
1501
1542
  ? TransactionEnvelopeType.feeMarket
@@ -1508,8 +1549,8 @@ _TransactionController_afterAdd = new WeakMap(), _TransactionController_approvin
1508
1549
  };
1509
1550
  const { from } = updatedTransactionParams;
1510
1551
  const unsignedTransaction = prepareTransaction(chainId, updatedTransactionParams);
1511
- const signedTxData = await this.messenger.call('KeyringController:signTransaction', unsignedTransaction, from);
1512
- const rawTransaction = serializeTransaction(chainId, signedTxData);
1552
+ const signedTransaction = await __classPrivateFieldGet(this, _TransactionController_sign, "f").call(this, unsignedTransaction, from);
1553
+ const rawTransaction = serializeTransaction(signedTransaction);
1513
1554
  return rawTransaction;
1514
1555
  }, _TransactionController_addMetadata = function _TransactionController_addMetadata(transactionMeta) {
1515
1556
  validateTxParams(transactionMeta.txParams);
@@ -1528,7 +1569,7 @@ _TransactionController_afterAdd = new WeakMap(), _TransactionController_approvin
1528
1569
  await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Update Gas Fees', parentContext: traceContext }, async () => await updateGasFees({
1529
1570
  eip1559: isEIP1559Compatible,
1530
1571
  gasFeeFlows: __classPrivateFieldGet(this, _TransactionController_gasFeeFlows, "f"),
1531
- getGasFeeEstimates: (options) => this.messenger.call('GasFeeController:fetchGasFeeEstimates', options),
1572
+ getGasFeeEstimates: __classPrivateFieldGet(this, _TransactionController_getGasFeeEstimates, "f"),
1532
1573
  getSavedGasFees: __classPrivateFieldGet(this, _TransactionController_getSavedGasFees, "f").bind(this),
1533
1574
  messenger: this.messenger,
1534
1575
  txMeta: transactionMeta,
@@ -1661,7 +1702,11 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
1661
1702
  let transactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransactionOrThrow).call(this, transactionId);
1662
1703
  log('Approving transaction', transactionMeta);
1663
1704
  try {
1664
- if (!transactionMeta.chainId) {
1705
+ if (!__classPrivateFieldGet(this, _TransactionController_sign, "f")) {
1706
+ __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_failTransaction).call(this, transactionMeta, new Error('No sign method defined.'));
1707
+ return ApprovalState.NotApproved;
1708
+ }
1709
+ else if (!transactionMeta.chainId) {
1665
1710
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_failTransaction).call(this, transactionMeta, new Error('No chainId defined.'));
1666
1711
  return ApprovalState.NotApproved;
1667
1712
  }
@@ -1997,11 +2042,13 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
1997
2042
  if (value === undefined || value === null) {
1998
2043
  continue;
1999
2044
  }
2000
- transactionMetaWithRsv[key] = add0x(BigInt(value).toString(16));
2045
+ transactionMetaWithRsv[key] = add0x(value.toString(16));
2001
2046
  }
2002
2047
  return transactionMetaWithRsv;
2003
2048
  }, _TransactionController_getEIP1559Compatibility = async function _TransactionController_getEIP1559Compatibility(networkClientId) {
2004
- return ((await this.messenger.call('NetworkController:getEIP1559Compatibility', networkClientId)) ?? false);
2049
+ const currentNetworkIsEIP1559Compatible = await __classPrivateFieldGet(this, _TransactionController_getCurrentNetworkEIP1559Compatibility, "f").call(this, networkClientId);
2050
+ const currentAccountIsEIP1559Compatible = await __classPrivateFieldGet(this, _TransactionController_getCurrentAccountEIP1559Compatibility, "f").call(this);
2051
+ return (currentNetworkIsEIP1559Compatible && currentAccountIsEIP1559Compatible);
2005
2052
  }, _TransactionController_signTransaction = async function _TransactionController_signTransaction(originalTransactionMeta) {
2006
2053
  let transactionMeta = originalTransactionMeta;
2007
2054
  const { id: transactionId } = transactionMeta;
@@ -2043,23 +2090,29 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2043
2090
  const unsignedEthTx = prepareTransaction(chainId, finalTxParams);
2044
2091
  __classPrivateFieldGet(this, _TransactionController_approvingTransactionIds, "f").add(transactionId);
2045
2092
  log('Signing transaction', finalTxParams);
2046
- const signedTxData = await new Promise((resolve, reject) => {
2047
- // eslint-disable-next-line promise/catch-or-return
2048
- this.messenger
2049
- .call('KeyringController:signTransaction', unsignedEthTx, from)
2050
- .then(resolve, reject);
2093
+ const signedTx = await new Promise((resolve, reject) => {
2094
+ __classPrivateFieldGet(this, _TransactionController_sign, "f")?.call(this, unsignedEthTx, from, ...__classPrivateFieldGet(this, _TransactionController_getAdditionalSignArguments, "f").call(this, finalTransactionMeta)).then(resolve, reject);
2051
2095
  __classPrivateFieldGet(this, _TransactionController_signAbortCallbacks, "f").set(transactionId, () => reject(new Error('Signing aborted by user')));
2052
2096
  });
2053
2097
  __classPrivateFieldGet(this, _TransactionController_signAbortCallbacks, "f").delete(transactionId);
2098
+ if (!signedTx) {
2099
+ log('Skipping signed status as no signed transaction');
2100
+ return undefined;
2101
+ }
2054
2102
  const transactionMetaFromHook = cloneDeep(finalTransactionMeta);
2103
+ if (!__classPrivateFieldGet(this, _TransactionController_afterSign, "f").call(this, transactionMetaFromHook, signedTx)) {
2104
+ this.updateTransaction(transactionMetaFromHook, 'TransactionController#signTransaction - Update after sign');
2105
+ log('Skipping signed status based on hook');
2106
+ return undefined;
2107
+ }
2055
2108
  const transactionMetaWithRsv = {
2056
- ...__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionMetaRSV).call(this, transactionMetaFromHook, signedTxData),
2109
+ ...__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionMetaRSV).call(this, transactionMetaFromHook, signedTx),
2057
2110
  status: TransactionStatus.signed,
2058
2111
  txParams: finalTxParams,
2059
2112
  };
2060
2113
  this.updateTransaction(transactionMetaWithRsv, 'TransactionController#approveTransaction - Transaction signed');
2061
2114
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_onTransactionStatusChange).call(this, transactionMetaWithRsv);
2062
- const rawTx = serializeTransaction(chainId, signedTxData);
2115
+ const rawTx = serializeTransaction(signedTx);
2063
2116
  const transactionMetaWithRawTx = merge({}, transactionMetaWithRsv, {
2064
2117
  rawTx,
2065
2118
  });
@@ -2123,9 +2176,13 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2123
2176
  hooks: {
2124
2177
  beforeCheckPendingTransaction: __classPrivateFieldGet(this, _TransactionController_beforeCheckPendingTransaction, "f").bind(this),
2125
2178
  },
2179
+ isResubmitEnabled: __classPrivateFieldGet(this, _TransactionController_pendingTransactionOptions, "f").isResubmitEnabled,
2126
2180
  isTimeoutEnabled: __classPrivateFieldGet(this, _TransactionController_isTimeoutEnabled, "f"),
2127
2181
  messenger: this.messenger,
2128
2182
  networkClientId,
2183
+ publishTransaction: (transactionMeta) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_publishTransaction).call(this, transactionMeta, {
2184
+ skipSubmitHistory: true,
2185
+ }),
2129
2186
  });
2130
2187
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addPendingTransactionTrackerListeners).call(this, pendingTransactionTracker);
2131
2188
  return pendingTransactionTracker;
@@ -2149,7 +2206,8 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2149
2206
  TransactionStatus.signed,
2150
2207
  TransactionStatus.submitted,
2151
2208
  ], address, chainId);
2152
- return standardPendingTransactions;
2209
+ const externalPendingTransactions = __classPrivateFieldGet(this, _TransactionController_getExternalPendingTransactions, "f").call(this, address, chainId);
2210
+ return [...standardPendingTransactions, ...externalPendingTransactions];
2153
2211
  }, _TransactionController_publishTransactionForRetry = async function _TransactionController_publishTransactionForRetry(transactionMeta) {
2154
2212
  try {
2155
2213
  return await __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_publishTransaction).call(this, transactionMeta);
@@ -2278,6 +2336,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2278
2336
  }
2279
2337
  });
2280
2338
  log('Updated simulation data', transactionId, updatedTransactionMeta);
2339
+ await __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_runAfterSimulateHook).call(this, updatedTransactionMeta);
2281
2340
  }, _TransactionController_onGasFeePollerTransactionUpdate = function _TransactionController_onGasFeePollerTransactionUpdate({ transactionId, gasFeeEstimates, gasFeeEstimatesLoaded, layer1GasFee, }) {
2282
2341
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId }, (txMeta) => {
2283
2342
  updateTransactionGasProperties({
@@ -2311,7 +2370,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2311
2370
  .map((account) => account.address);
2312
2371
  }, _TransactionController_updateSubmitHistory = function _TransactionController_updateSubmitHistory(transactionMeta, hash) {
2313
2372
  const { chainId, networkClientId, origin, rawTx, txParams } = transactionMeta;
2314
- const { networkConfigurationsByChainId } = this.messenger.call('NetworkController:getState');
2373
+ const { networkConfigurationsByChainId } = __classPrivateFieldGet(this, _TransactionController_getNetworkState, "f").call(this);
2315
2374
  const networkConfiguration = networkConfigurationsByChainId[chainId];
2316
2375
  const endpoint = networkConfiguration?.rpcEndpoints.find((currentEndpoint) => currentEndpoint.networkClientId === networkClientId);
2317
2376
  const networkUrl = endpoint?.url;
@@ -2410,6 +2469,30 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2410
2469
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_onTransactionStatusChange).call(this, newTransactionMeta);
2411
2470
  this.messenger.publish(`${controllerName}:transactionFinished`, newTransactionMeta);
2412
2471
  __classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${transactionMeta.id}:finished`, newTransactionMeta);
2472
+ }, _TransactionController_runAfterSimulateHook = async function _TransactionController_runAfterSimulateHook(transactionMeta) {
2473
+ log('Calling afterSimulate hook', transactionMeta);
2474
+ const { id: transactionId } = transactionMeta;
2475
+ const result = await __classPrivateFieldGet(this, _TransactionController_afterSimulate, "f").call(this, {
2476
+ transactionMeta,
2477
+ });
2478
+ const { skipSimulation, updateTransaction } = result ?? {};
2479
+ if (skipSimulation) {
2480
+ __classPrivateFieldGet(this, _TransactionController_skipSimulationTransactionIds, "f").add(transactionId);
2481
+ }
2482
+ else if (skipSimulation === false) {
2483
+ __classPrivateFieldGet(this, _TransactionController_skipSimulationTransactionIds, "f").delete(transactionId);
2484
+ }
2485
+ if (!updateTransaction) {
2486
+ return;
2487
+ }
2488
+ const updatedTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
2489
+ transactionId,
2490
+ skipResimulateCheck: true,
2491
+ }, (txMeta) => {
2492
+ txMeta.txParamsOriginal = cloneDeep(txMeta.txParams);
2493
+ updateTransaction(txMeta);
2494
+ });
2495
+ log('Updated transaction with afterSimulate data', updatedTransactionMeta);
2413
2496
  }, _TransactionController_defaultPublishHook = async function _TransactionController_defaultPublishHook({ networkClientId, publishHookOverride, traceContext, }, transactionMeta, signedTx) {
2414
2497
  let transactionHash;
2415
2498
  await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Publish', parentContext: traceContext }, async () => {