@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
package/CHANGELOG.md CHANGED
@@ -7,16 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
- ### Changed
11
-
12
- - **BREAKING:** Remove deprecated `TransactionController` constructor options and unused hooks, and replace them with direct messenger calls ([#8983](https://github.com/MetaMask/core/pull/8983))
13
- - Removed options: `disableHistory`, `disableSendFlowHistory`, `getCurrentAccountEIP1559Compatibility`, `getCurrentNetworkEIP1559Compatibility`, `getExternalPendingTransactions`, `getGasFeeEstimates`, `getNetworkClientRegistry`, `getNetworkState`, `pendingTransactions`, `securityProviderRequest`, `sign`, `transactionHistoryLimit`
14
- - Removed hooks: `afterSign`, `afterSimulate`, `getAdditionalSignArguments`
15
- - Moved hook: `isTimeoutEnabled` is now a root constructor option instead of a hook
16
- - Removed types: `AfterSimulateHook`, `PendingTransactionOptions`, `SecurityProviderRequest`; `AfterAddHook` parameter `skipSimulation` removed
17
- - Added required `AllowedActions`: `GasFeeController:fetchGasFeeEstimates`, `KeyringController:signTransaction`, `NetworkController:getEIP1559Compatibility`, `NetworkController:getNetworkClientRegistry`, `NetworkController:getState`
18
- - Removed resubmit logic from `PendingTransactionTracker`
19
-
20
10
  ## [66.0.1]
21
11
 
22
12
  ### Changed
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  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");
11
11
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
12
  };
13
- 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;
13
+ 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;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.TransactionController = exports.ApprovalState = exports.SPEED_UP_RATE = exports.CANCEL_RATE = void 0;
16
16
  const base_controller_1 = require("@metamask/base-controller");
@@ -178,7 +178,7 @@ class TransactionController extends base_controller_1.BaseController {
178
178
  * @param options - The controller options.
179
179
  */
180
180
  constructor(options) {
181
- const { disableSwaps, getPermittedAccounts, getSavedGasFees, getSimulationConfig, hooks, incomingTransactions = {}, isAutomaticGasFeeUpdateEnabled, isEIP7702GasFeeTokensEnabled, isFirstTimeInteractionEnabled, isSimulationEnabled, isTimeoutEnabled, messenger, publicKeyEIP7702, state, testGasFeeFlows, trace, } = options;
181
+ 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;
182
182
  super({
183
183
  name: controllerName,
184
184
  metadata,
@@ -190,11 +190,19 @@ class TransactionController extends base_controller_1.BaseController {
190
190
  });
191
191
  _TransactionController_instances.add(this);
192
192
  _TransactionController_afterAdd.set(this, void 0);
193
+ _TransactionController_afterSign.set(this, void 0);
194
+ _TransactionController_afterSimulate.set(this, void 0);
193
195
  _TransactionController_approvingTransactionIds.set(this, new Set());
194
196
  _TransactionController_beforeCheckPendingTransaction.set(this, void 0);
195
197
  _TransactionController_beforePublish.set(this, void 0);
196
198
  _TransactionController_beforeSign.set(this, void 0);
197
199
  _TransactionController_gasFeeFlows.set(this, void 0);
200
+ _TransactionController_getAdditionalSignArguments.set(this, void 0);
201
+ _TransactionController_getCurrentAccountEIP1559Compatibility.set(this, void 0);
202
+ _TransactionController_getCurrentNetworkEIP1559Compatibility.set(this, void 0);
203
+ _TransactionController_getExternalPendingTransactions.set(this, void 0);
204
+ _TransactionController_getGasFeeEstimates.set(this, void 0);
205
+ _TransactionController_getNetworkState.set(this, void 0);
198
206
  _TransactionController_getPermittedAccounts.set(this, void 0);
199
207
  _TransactionController_getSavedGasFees.set(this, void 0);
200
208
  _TransactionController_getSimulationConfig.set(this, void 0);
@@ -210,9 +218,12 @@ class TransactionController extends base_controller_1.BaseController {
210
218
  _TransactionController_layer1GasFeeFlows.set(this, void 0);
211
219
  _TransactionController_methodDataHelper.set(this, void 0);
212
220
  _TransactionController_multichainTrackingHelper.set(this, void 0);
221
+ _TransactionController_pendingTransactionOptions.set(this, void 0);
213
222
  _TransactionController_publicKeyEIP7702.set(this, void 0);
214
223
  _TransactionController_publish.set(this, void 0);
215
224
  _TransactionController_publishBatchHook.set(this, void 0);
225
+ _TransactionController_securityProviderRequest.set(this, void 0);
226
+ _TransactionController_sign.set(this, void 0);
216
227
  _TransactionController_signAbortCallbacks.set(this, new Map());
217
228
  _TransactionController_skipSimulationTransactionIds.set(this, new Set());
218
229
  _TransactionController_testGasFeeFlows.set(this, void 0);
@@ -222,6 +233,9 @@ class TransactionController extends base_controller_1.BaseController {
222
233
  });
223
234
  this.messenger = messenger;
224
235
  __classPrivateFieldSet(this, _TransactionController_afterAdd, hooks?.afterAdd ?? (() => Promise.resolve({})), "f");
236
+ __classPrivateFieldSet(this, _TransactionController_afterSign, hooks?.afterSign ?? (() => true), "f");
237
+ __classPrivateFieldSet(this, _TransactionController_afterSimulate, hooks?.afterSimulate ??
238
+ (() => Promise.resolve({})), "f");
225
239
  __classPrivateFieldSet(this, _TransactionController_beforeCheckPendingTransaction,
226
240
  /* istanbul ignore next */
227
241
  hooks?.beforeCheckPendingTransaction ??
@@ -229,6 +243,15 @@ class TransactionController extends base_controller_1.BaseController {
229
243
  __classPrivateFieldSet(this, _TransactionController_beforePublish, hooks?.beforePublish ?? (() => Promise.resolve(true)), "f");
230
244
  __classPrivateFieldSet(this, _TransactionController_beforeSign, hooks?.beforeSign ??
231
245
  (() => Promise.resolve({})), "f");
246
+ __classPrivateFieldSet(this, _TransactionController_getAdditionalSignArguments, hooks?.getAdditionalSignArguments ??
247
+ (() => []), "f");
248
+ __classPrivateFieldSet(this, _TransactionController_getCurrentAccountEIP1559Compatibility, getCurrentAccountEIP1559Compatibility ??
249
+ (() => Promise.resolve(true)), "f");
250
+ __classPrivateFieldSet(this, _TransactionController_getCurrentNetworkEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, "f");
251
+ __classPrivateFieldSet(this, _TransactionController_getExternalPendingTransactions, getExternalPendingTransactions ?? (() => []), "f");
252
+ __classPrivateFieldSet(this, _TransactionController_getGasFeeEstimates, getGasFeeEstimates ??
253
+ (() => Promise.resolve({})), "f");
254
+ __classPrivateFieldSet(this, _TransactionController_getNetworkState, getNetworkState, "f");
232
255
  __classPrivateFieldSet(this, _TransactionController_getPermittedAccounts, getPermittedAccounts, "f");
233
256
  __classPrivateFieldSet(this, _TransactionController_getSavedGasFees, getSavedGasFees ?? ((_chainId) => undefined), "f");
234
257
  __classPrivateFieldSet(this, _TransactionController_getSimulationConfig, getSimulationConfig ??
@@ -241,11 +264,14 @@ class TransactionController extends base_controller_1.BaseController {
241
264
  __classPrivateFieldSet(this, _TransactionController_isFirstTimeInteractionEnabled, isFirstTimeInteractionEnabled ?? (() => true), "f");
242
265
  __classPrivateFieldSet(this, _TransactionController_isSimulationEnabled, isSimulationEnabled ?? (() => true), "f");
243
266
  __classPrivateFieldSet(this, _TransactionController_isSwapsDisabled, disableSwaps ?? false, "f");
244
- __classPrivateFieldSet(this, _TransactionController_isTimeoutEnabled, isTimeoutEnabled ?? (() => true), "f");
267
+ __classPrivateFieldSet(this, _TransactionController_isTimeoutEnabled, hooks?.isTimeoutEnabled ?? (() => true), "f");
268
+ __classPrivateFieldSet(this, _TransactionController_pendingTransactionOptions, pendingTransactions, "f");
245
269
  __classPrivateFieldSet(this, _TransactionController_publicKeyEIP7702, publicKeyEIP7702, "f");
246
270
  __classPrivateFieldSet(this, _TransactionController_publish, hooks?.publish ??
247
271
  (() => Promise.resolve({ transactionHash: undefined })), "f");
248
272
  __classPrivateFieldSet(this, _TransactionController_publishBatchHook, hooks?.publishBatch, "f");
273
+ __classPrivateFieldSet(this, _TransactionController_securityProviderRequest, securityProviderRequest, "f");
274
+ __classPrivateFieldSet(this, _TransactionController_sign, sign, "f");
249
275
  __classPrivateFieldSet(this, _TransactionController_testGasFeeFlows, testGasFeeFlows === true, "f");
250
276
  __classPrivateFieldSet(this, _TransactionController_trace, trace ?? ((_request, fn) => fn?.()), "f");
251
277
  const findNetworkClientIdByChainId = (chainId) => {
@@ -256,7 +282,7 @@ class TransactionController extends base_controller_1.BaseController {
256
282
  getNetworkClientById: ((networkClientId) => {
257
283
  return this.messenger.call(`NetworkController:getNetworkClientById`, networkClientId);
258
284
  }),
259
- getNetworkClientRegistry: (() => this.messenger.call('NetworkController:getNetworkClientRegistry')),
285
+ getNetworkClientRegistry,
260
286
  removePendingTransactionTrackerListeners: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_removePendingTransactionTrackerListeners).bind(this),
261
287
  createNonceTracker: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createNonceTracker).bind(this),
262
288
  createPendingTransactionTracker: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createPendingTransactionTracker).bind(this),
@@ -269,7 +295,7 @@ class TransactionController extends base_controller_1.BaseController {
269
295
  __classPrivateFieldSet(this, _TransactionController_layer1GasFeeFlows, __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getLayer1GasFeeFlows).call(this), "f");
270
296
  const gasFeePoller = new GasFeePoller_1.GasFeePoller({
271
297
  gasFeeFlows: __classPrivateFieldGet(this, _TransactionController_gasFeeFlows, "f"),
272
- getGasFeeControllerEstimates: (gasFeeOpts) => this.messenger.call('GasFeeController:fetchGasFeeEstimates', gasFeeOpts),
298
+ getGasFeeControllerEstimates: __classPrivateFieldGet(this, _TransactionController_getGasFeeEstimates, "f"),
273
299
  getTransactions: () => this.state.transactions,
274
300
  getTransactionBatches: () => this.state.transactionBatches,
275
301
  layer1GasFeeFlows: __classPrivateFieldGet(this, _TransactionController_layer1GasFeeFlows, "f"),
@@ -343,7 +369,7 @@ class TransactionController extends base_controller_1.BaseController {
343
369
  return await (0, batch_1.addTransactionBatch)({
344
370
  addTransaction: this.addTransaction.bind(this),
345
371
  estimateGas: this.estimateGas.bind(this),
346
- getGasFeeEstimates: (options) => this.messenger.call('GasFeeController:fetchGasFeeEstimates', options),
372
+ getGasFeeEstimates: __classPrivateFieldGet(this, _TransactionController_getGasFeeEstimates, "f"),
347
373
  getInternalAccounts: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getInternalAccounts).bind(this),
348
374
  getSimulationConfig: __classPrivateFieldGet(this, _TransactionController_getSimulationConfig, "f").bind(this),
349
375
  getPendingTransactionTracker: (networkClientId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createPendingTransactionTracker).call(this, {
@@ -386,7 +412,7 @@ class TransactionController extends base_controller_1.BaseController {
386
412
  */
387
413
  async addTransaction(txParams, options) {
388
414
  (0, logger_1.projectLogger)('Adding transaction', txParams, options);
389
- 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;
415
+ 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;
390
416
  // eslint-disable-next-line no-param-reassign
391
417
  txParams = (0, utils_2.normalizeTransactionParams)(txParams);
392
418
  if (!__classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").has(networkClientId)) {
@@ -498,6 +524,12 @@ class TransactionController extends base_controller_1.BaseController {
498
524
  })
499
525
  .catch(lodash_1.noop);
500
526
  }
527
+ // Set security provider response
528
+ if (method && __classPrivateFieldGet(this, _TransactionController_securityProviderRequest, "f")) {
529
+ const securityProviderResponse = await __classPrivateFieldGet(this, _TransactionController_securityProviderRequest, "f").call(this, addedTransactionMeta, method);
530
+ // eslint-disable-next-line require-atomic-updates
531
+ addedTransactionMeta.securityProviderResponse = securityProviderResponse;
532
+ }
501
533
  addedTransactionMeta = (0, swaps_1.updateSwapsTransaction)(addedTransactionMeta, transactionType, swaps, {
502
534
  isSwapsDisabled: __classPrivateFieldGet(this, _TransactionController_isSwapsDisabled, "f"),
503
535
  cancelTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_rejectTransaction).bind(this),
@@ -1021,7 +1053,7 @@ class TransactionController extends base_controller_1.BaseController {
1021
1053
  chainId,
1022
1054
  });
1023
1055
  const initialTxAsEthTx = (0, prepare_1.prepareTransaction)(chainId, initialTx);
1024
- const initialTxAsSerializedHex = (0, prepare_1.serializeTransaction)(chainId, initialTxAsEthTx);
1056
+ const initialTxAsSerializedHex = (0, prepare_1.serializeTransaction)(initialTxAsEthTx);
1025
1057
  if (__classPrivateFieldGet(this, _TransactionController_approvingTransactionIds, "f").has(initialTxAsSerializedHex)) {
1026
1058
  return '';
1027
1059
  }
@@ -1209,7 +1241,9 @@ class TransactionController extends base_controller_1.BaseController {
1209
1241
  };
1210
1242
  // Guaranteed as the default gas fee flow matches all transactions.
1211
1243
  const gasFeeFlow = (0, gas_flow_1.getGasFeeFlow)(transactionMeta, __classPrivateFieldGet(this, _TransactionController_gasFeeFlows, "f"), this.messenger);
1212
- const gasFeeControllerData = await this.messenger.call('GasFeeController:fetchGasFeeEstimates', { networkClientId });
1244
+ const gasFeeControllerData = await __classPrivateFieldGet(this, _TransactionController_getGasFeeEstimates, "f").call(this, {
1245
+ networkClientId,
1246
+ });
1213
1247
  return gasFeeFlow.getGasFees({
1214
1248
  gasFeeControllerData,
1215
1249
  messenger: this.messenger,
@@ -1442,7 +1476,7 @@ class TransactionController extends base_controller_1.BaseController {
1442
1476
  }
1443
1477
  }
1444
1478
  exports.TransactionController = TransactionController;
1445
- _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, }) {
1479
+ _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, }) {
1446
1480
  if (gasValues) {
1447
1481
  // Not good practice to reassign a parameter but temporarily avoiding a larger refactor.
1448
1482
  // eslint-disable-next-line no-param-reassign
@@ -1455,12 +1489,16 @@ _TransactionController_afterAdd = new WeakMap(), _TransactionController_approvin
1455
1489
  if (!transactionMeta) {
1456
1490
  return;
1457
1491
  }
1492
+ /* istanbul ignore next */
1493
+ if (!__classPrivateFieldGet(this, _TransactionController_sign, "f")) {
1494
+ throw new Error('No sign method defined.');
1495
+ }
1458
1496
  const newTxParams = (0, retry_1.getTransactionParamsWithIncreasedGasFee)(transactionMeta.txParams, rate, gasValues);
1459
1497
  prepareTransactionParams?.(newTxParams);
1460
1498
  const unsignedEthTx = (0, prepare_1.prepareTransaction)(transactionMeta.chainId, newTxParams);
1461
- const signedTxData = await this.messenger.call('KeyringController:signTransaction', unsignedEthTx, transactionMeta.txParams.from);
1462
- const transactionMetaWithRsv = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionMetaRSV).call(this, transactionMeta, signedTxData);
1463
- const rawTx = (0, prepare_1.serializeTransaction)(transactionMeta.chainId, signedTxData);
1499
+ const signedTx = await __classPrivateFieldGet(this, _TransactionController_sign, "f").call(this, unsignedEthTx, transactionMeta.txParams.from);
1500
+ const transactionMetaWithRsv = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionMetaRSV).call(this, transactionMeta, signedTx);
1501
+ const rawTx = (0, prepare_1.serializeTransaction)(signedTx);
1464
1502
  const newFee = newTxParams.maxFeePerGas ?? newTxParams.gasPrice;
1465
1503
  const oldFee = newTxParams.maxFeePerGas
1466
1504
  ? transactionMetaWithRsv.txParams.maxFeePerGas
@@ -1499,6 +1537,9 @@ _TransactionController_afterAdd = new WeakMap(), _TransactionController_approvin
1499
1537
  });
1500
1538
  afterSubmit?.(newTransactionMeta);
1501
1539
  }, _TransactionController_signExternalTransaction = async function _TransactionController_signExternalTransaction(chainId, transactionParams) {
1540
+ if (!__classPrivateFieldGet(this, _TransactionController_sign, "f")) {
1541
+ throw new Error('No sign method defined.');
1542
+ }
1502
1543
  const normalizedTransactionParams = (0, utils_2.normalizeTransactionParams)(transactionParams);
1503
1544
  const type = (0, utils_2.isEIP1559Transaction)(normalizedTransactionParams)
1504
1545
  ? types_1.TransactionEnvelopeType.feeMarket
@@ -1511,8 +1552,8 @@ _TransactionController_afterAdd = new WeakMap(), _TransactionController_approvin
1511
1552
  };
1512
1553
  const { from } = updatedTransactionParams;
1513
1554
  const unsignedTransaction = (0, prepare_1.prepareTransaction)(chainId, updatedTransactionParams);
1514
- const signedTxData = await this.messenger.call('KeyringController:signTransaction', unsignedTransaction, from);
1515
- const rawTransaction = (0, prepare_1.serializeTransaction)(chainId, signedTxData);
1555
+ const signedTransaction = await __classPrivateFieldGet(this, _TransactionController_sign, "f").call(this, unsignedTransaction, from);
1556
+ const rawTransaction = (0, prepare_1.serializeTransaction)(signedTransaction);
1516
1557
  return rawTransaction;
1517
1558
  }, _TransactionController_addMetadata = function _TransactionController_addMetadata(transactionMeta) {
1518
1559
  (0, validation_1.validateTxParams)(transactionMeta.txParams);
@@ -1531,7 +1572,7 @@ _TransactionController_afterAdd = new WeakMap(), _TransactionController_approvin
1531
1572
  await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Update Gas Fees', parentContext: traceContext }, async () => await (0, gas_fees_1.updateGasFees)({
1532
1573
  eip1559: isEIP1559Compatible,
1533
1574
  gasFeeFlows: __classPrivateFieldGet(this, _TransactionController_gasFeeFlows, "f"),
1534
- getGasFeeEstimates: (options) => this.messenger.call('GasFeeController:fetchGasFeeEstimates', options),
1575
+ getGasFeeEstimates: __classPrivateFieldGet(this, _TransactionController_getGasFeeEstimates, "f"),
1535
1576
  getSavedGasFees: __classPrivateFieldGet(this, _TransactionController_getSavedGasFees, "f").bind(this),
1536
1577
  messenger: this.messenger,
1537
1578
  txMeta: transactionMeta,
@@ -1664,7 +1705,11 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
1664
1705
  let transactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransactionOrThrow).call(this, transactionId);
1665
1706
  (0, logger_1.projectLogger)('Approving transaction', transactionMeta);
1666
1707
  try {
1667
- if (!transactionMeta.chainId) {
1708
+ if (!__classPrivateFieldGet(this, _TransactionController_sign, "f")) {
1709
+ __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_failTransaction).call(this, transactionMeta, new Error('No sign method defined.'));
1710
+ return ApprovalState.NotApproved;
1711
+ }
1712
+ else if (!transactionMeta.chainId) {
1668
1713
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_failTransaction).call(this, transactionMeta, new Error('No chainId defined.'));
1669
1714
  return ApprovalState.NotApproved;
1670
1715
  }
@@ -2000,11 +2045,13 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2000
2045
  if (value === undefined || value === null) {
2001
2046
  continue;
2002
2047
  }
2003
- transactionMetaWithRsv[key] = (0, utils_1.add0x)(BigInt(value).toString(16));
2048
+ transactionMetaWithRsv[key] = (0, utils_1.add0x)(value.toString(16));
2004
2049
  }
2005
2050
  return transactionMetaWithRsv;
2006
2051
  }, _TransactionController_getEIP1559Compatibility = async function _TransactionController_getEIP1559Compatibility(networkClientId) {
2007
- return ((await this.messenger.call('NetworkController:getEIP1559Compatibility', networkClientId)) ?? false);
2052
+ const currentNetworkIsEIP1559Compatible = await __classPrivateFieldGet(this, _TransactionController_getCurrentNetworkEIP1559Compatibility, "f").call(this, networkClientId);
2053
+ const currentAccountIsEIP1559Compatible = await __classPrivateFieldGet(this, _TransactionController_getCurrentAccountEIP1559Compatibility, "f").call(this);
2054
+ return (currentNetworkIsEIP1559Compatible && currentAccountIsEIP1559Compatible);
2008
2055
  }, _TransactionController_signTransaction = async function _TransactionController_signTransaction(originalTransactionMeta) {
2009
2056
  let transactionMeta = originalTransactionMeta;
2010
2057
  const { id: transactionId } = transactionMeta;
@@ -2046,23 +2093,29 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2046
2093
  const unsignedEthTx = (0, prepare_1.prepareTransaction)(chainId, finalTxParams);
2047
2094
  __classPrivateFieldGet(this, _TransactionController_approvingTransactionIds, "f").add(transactionId);
2048
2095
  (0, logger_1.projectLogger)('Signing transaction', finalTxParams);
2049
- const signedTxData = await new Promise((resolve, reject) => {
2050
- // eslint-disable-next-line promise/catch-or-return
2051
- this.messenger
2052
- .call('KeyringController:signTransaction', unsignedEthTx, from)
2053
- .then(resolve, reject);
2096
+ const signedTx = await new Promise((resolve, reject) => {
2097
+ __classPrivateFieldGet(this, _TransactionController_sign, "f")?.call(this, unsignedEthTx, from, ...__classPrivateFieldGet(this, _TransactionController_getAdditionalSignArguments, "f").call(this, finalTransactionMeta)).then(resolve, reject);
2054
2098
  __classPrivateFieldGet(this, _TransactionController_signAbortCallbacks, "f").set(transactionId, () => reject(new Error('Signing aborted by user')));
2055
2099
  });
2056
2100
  __classPrivateFieldGet(this, _TransactionController_signAbortCallbacks, "f").delete(transactionId);
2101
+ if (!signedTx) {
2102
+ (0, logger_1.projectLogger)('Skipping signed status as no signed transaction');
2103
+ return undefined;
2104
+ }
2057
2105
  const transactionMetaFromHook = (0, lodash_1.cloneDeep)(finalTransactionMeta);
2106
+ if (!__classPrivateFieldGet(this, _TransactionController_afterSign, "f").call(this, transactionMetaFromHook, signedTx)) {
2107
+ this.updateTransaction(transactionMetaFromHook, 'TransactionController#signTransaction - Update after sign');
2108
+ (0, logger_1.projectLogger)('Skipping signed status based on hook');
2109
+ return undefined;
2110
+ }
2058
2111
  const transactionMetaWithRsv = {
2059
- ...__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionMetaRSV).call(this, transactionMetaFromHook, signedTxData),
2112
+ ...__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionMetaRSV).call(this, transactionMetaFromHook, signedTx),
2060
2113
  status: types_1.TransactionStatus.signed,
2061
2114
  txParams: finalTxParams,
2062
2115
  };
2063
2116
  this.updateTransaction(transactionMetaWithRsv, 'TransactionController#approveTransaction - Transaction signed');
2064
2117
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_onTransactionStatusChange).call(this, transactionMetaWithRsv);
2065
- const rawTx = (0, prepare_1.serializeTransaction)(chainId, signedTxData);
2118
+ const rawTx = (0, prepare_1.serializeTransaction)(signedTx);
2066
2119
  const transactionMetaWithRawTx = (0, lodash_1.merge)({}, transactionMetaWithRsv, {
2067
2120
  rawTx,
2068
2121
  });
@@ -2126,9 +2179,13 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2126
2179
  hooks: {
2127
2180
  beforeCheckPendingTransaction: __classPrivateFieldGet(this, _TransactionController_beforeCheckPendingTransaction, "f").bind(this),
2128
2181
  },
2182
+ isResubmitEnabled: __classPrivateFieldGet(this, _TransactionController_pendingTransactionOptions, "f").isResubmitEnabled,
2129
2183
  isTimeoutEnabled: __classPrivateFieldGet(this, _TransactionController_isTimeoutEnabled, "f"),
2130
2184
  messenger: this.messenger,
2131
2185
  networkClientId,
2186
+ publishTransaction: (transactionMeta) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_publishTransaction).call(this, transactionMeta, {
2187
+ skipSubmitHistory: true,
2188
+ }),
2132
2189
  });
2133
2190
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addPendingTransactionTrackerListeners).call(this, pendingTransactionTracker);
2134
2191
  return pendingTransactionTracker;
@@ -2152,7 +2209,8 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2152
2209
  types_1.TransactionStatus.signed,
2153
2210
  types_1.TransactionStatus.submitted,
2154
2211
  ], address, chainId);
2155
- return standardPendingTransactions;
2212
+ const externalPendingTransactions = __classPrivateFieldGet(this, _TransactionController_getExternalPendingTransactions, "f").call(this, address, chainId);
2213
+ return [...standardPendingTransactions, ...externalPendingTransactions];
2156
2214
  }, _TransactionController_publishTransactionForRetry = async function _TransactionController_publishTransactionForRetry(transactionMeta) {
2157
2215
  try {
2158
2216
  return await __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_publishTransaction).call(this, transactionMeta);
@@ -2281,6 +2339,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2281
2339
  }
2282
2340
  });
2283
2341
  (0, logger_1.projectLogger)('Updated simulation data', transactionId, updatedTransactionMeta);
2342
+ await __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_runAfterSimulateHook).call(this, updatedTransactionMeta);
2284
2343
  }, _TransactionController_onGasFeePollerTransactionUpdate = function _TransactionController_onGasFeePollerTransactionUpdate({ transactionId, gasFeeEstimates, gasFeeEstimatesLoaded, layer1GasFee, }) {
2285
2344
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId }, (txMeta) => {
2286
2345
  (0, GasFeePoller_1.updateTransactionGasProperties)({
@@ -2314,7 +2373,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2314
2373
  .map((account) => account.address);
2315
2374
  }, _TransactionController_updateSubmitHistory = function _TransactionController_updateSubmitHistory(transactionMeta, hash) {
2316
2375
  const { chainId, networkClientId, origin, rawTx, txParams } = transactionMeta;
2317
- const { networkConfigurationsByChainId } = this.messenger.call('NetworkController:getState');
2376
+ const { networkConfigurationsByChainId } = __classPrivateFieldGet(this, _TransactionController_getNetworkState, "f").call(this);
2318
2377
  const networkConfiguration = networkConfigurationsByChainId[chainId];
2319
2378
  const endpoint = networkConfiguration?.rpcEndpoints.find((currentEndpoint) => currentEndpoint.networkClientId === networkClientId);
2320
2379
  const networkUrl = endpoint?.url;
@@ -2413,6 +2472,30 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2413
2472
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_onTransactionStatusChange).call(this, newTransactionMeta);
2414
2473
  this.messenger.publish(`${controllerName}:transactionFinished`, newTransactionMeta);
2415
2474
  __classPrivateFieldGet(this, _TransactionController_internalEvents, "f").emit(`${transactionMeta.id}:finished`, newTransactionMeta);
2475
+ }, _TransactionController_runAfterSimulateHook = async function _TransactionController_runAfterSimulateHook(transactionMeta) {
2476
+ (0, logger_1.projectLogger)('Calling afterSimulate hook', transactionMeta);
2477
+ const { id: transactionId } = transactionMeta;
2478
+ const result = await __classPrivateFieldGet(this, _TransactionController_afterSimulate, "f").call(this, {
2479
+ transactionMeta,
2480
+ });
2481
+ const { skipSimulation, updateTransaction } = result ?? {};
2482
+ if (skipSimulation) {
2483
+ __classPrivateFieldGet(this, _TransactionController_skipSimulationTransactionIds, "f").add(transactionId);
2484
+ }
2485
+ else if (skipSimulation === false) {
2486
+ __classPrivateFieldGet(this, _TransactionController_skipSimulationTransactionIds, "f").delete(transactionId);
2487
+ }
2488
+ if (!updateTransaction) {
2489
+ return;
2490
+ }
2491
+ const updatedTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
2492
+ transactionId,
2493
+ skipResimulateCheck: true,
2494
+ }, (txMeta) => {
2495
+ txMeta.txParamsOriginal = (0, lodash_1.cloneDeep)(txMeta.txParams);
2496
+ updateTransaction(txMeta);
2497
+ });
2498
+ (0, logger_1.projectLogger)('Updated transaction with afterSimulate data', updatedTransactionMeta);
2416
2499
  }, _TransactionController_defaultPublishHook = async function _TransactionController_defaultPublishHook({ networkClientId, publishHookOverride, traceContext, }, transactionMeta, signedTx) {
2417
2500
  let transactionHash;
2418
2501
  await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Publish', parentContext: traceContext }, async () => {