@metamask/transaction-controller 62.22.0 → 63.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,7 +13,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
13
13
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
15
  };
16
- var _TransactionController_instances, _TransactionController_afterAdd, _TransactionController_afterSign, _TransactionController_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_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _TransactionController_onIncomingTransactions, _TransactionController_generateDappSuggestedGasFees, _TransactionController_addExternalTransaction, _TransactionController_markNonceDuplicatesDropped, _TransactionController_setTransactionStatusDropped, _TransactionController_getTransactionWithActionId, _TransactionController_waitForTransactionFinished, _TransactionController_updateTransactionMetaRSV, _TransactionController_getEIP1559Compatibility, _TransactionController_signTransaction, _TransactionController_onTransactionStatusChange, _TransactionController_getNonceTrackerTransactions, _TransactionController_onConfirmedTransaction, _TransactionController_updatePostBalance, _TransactionController_createNonceTracker, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_publishTransactionForRetry, _TransactionController_isTransactionAlreadyConfirmedError, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_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, _TransactionController_getGasFeeTokensAction;
16
+ var _TransactionController_instances, _TransactionController_afterAdd, _TransactionController_afterSign, _TransactionController_afterSimulate, _TransactionController_approvingTransactionIds, _TransactionController_beforeCheckPendingTransaction, _TransactionController_beforePublish, _TransactionController_beforeSign, _TransactionController_gasFeeFlows, _TransactionController_getAdditionalSignArguments, _TransactionController_getCurrentAccountEIP1559Compatibility, _TransactionController_getCurrentNetworkEIP1559Compatibility, _TransactionController_getExternalPendingTransactions, _TransactionController_getGasFeeEstimates, _TransactionController_getNetworkState, _TransactionController_getPermittedAccounts, _TransactionController_getSavedGasFees, _TransactionController_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_getChainId, _TransactionController_getNetworkClientId, _TransactionController_getEthQuery, _TransactionController_getProvider, _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_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;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.TransactionController = exports.ApprovalState = exports.SPEED_UP_RATE = exports.CANCEL_RATE = void 0;
19
19
  const base_controller_1 = require("@metamask/base-controller");
@@ -133,6 +133,37 @@ function getDefaultTransactionControllerState() {
133
133
  submitHistory: [],
134
134
  };
135
135
  }
136
+ // === MESSENGER ===
137
+ const MESSENGER_EXPOSED_METHODS = [
138
+ 'abortTransactionSigning',
139
+ 'addTransaction',
140
+ 'addTransactionBatch',
141
+ 'approveTransactionsWithSameNonce',
142
+ 'clearUnapprovedTransactions',
143
+ 'confirmExternalTransaction',
144
+ 'emulateNewTransaction',
145
+ 'emulateTransactionUpdate',
146
+ 'estimateGas',
147
+ 'estimateGasBatch',
148
+ 'estimateGasBuffered',
149
+ 'estimateGasFee',
150
+ 'getGasFeeTokens',
151
+ 'getLayer1GasFee',
152
+ 'getNonceLock',
153
+ 'getTransactions',
154
+ 'handleMethodData',
155
+ 'isAtomicBatchSupported',
156
+ 'setTransactionActive',
157
+ 'speedUpTransaction',
158
+ 'startIncomingTransactionPolling',
159
+ 'stopIncomingTransactionPolling',
160
+ 'stopTransaction',
161
+ 'updateAtomicBatchData',
162
+ 'updateCustodialTransaction',
163
+ 'updateEditableParams',
164
+ 'updateIncomingTransactions',
165
+ 'updateTransaction',
166
+ ];
136
167
  /**
137
168
  * Controller responsible for submitting and managing transactions.
138
169
  */
@@ -421,39 +452,34 @@ class TransactionController extends base_controller_1.BaseController {
421
452
  }
422
453
  const dappSuggestedGasFees = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_generateDappSuggestedGasFees).call(this, txParams, origin);
423
454
  const transactionType = type ?? (await (0, transaction_type_1.determineTransactionType)(txParams, ethQuery)).type;
424
- const existingTransactionMeta = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransactionWithActionId).call(this, actionId);
425
- // If a request to add a transaction with the same actionId is submitted again, a new transaction will not be created for it.
426
- let addedTransactionMeta = existingTransactionMeta
427
- ? (0, lodash_1.cloneDeep)(existingTransactionMeta)
428
- : {
429
- // Add actionId to txMeta to check if same actionId is seen again
430
- actionId,
431
- assetsFiatValues,
432
- batchId,
433
- chainId,
434
- dappSuggestedGasFees,
435
- deviceConfirmedOn,
436
- disableGasBuffer,
437
- id: (0, uuid_1.v1)(),
438
- isGasFeeTokenIgnoredIfBalance: Boolean(gasFeeToken),
439
- isGasFeeIncluded,
440
- isGasFeeSponsored,
441
- isFirstTimeInteraction: undefined,
442
- isStateOnly,
443
- nestedTransactions,
444
- networkClientId,
445
- origin,
446
- requestId,
447
- requiredAssets,
448
- securityAlertResponse,
449
- selectedGasFeeToken: gasFeeToken,
450
- status: types_1.TransactionStatus.unapproved,
451
- time: Date.now(),
452
- txParams,
453
- type: transactionType,
454
- userEditedGasLimit: false,
455
- verifiedOnBlockchain: false,
456
- };
455
+ let addedTransactionMeta = {
456
+ actionId,
457
+ assetsFiatValues,
458
+ batchId,
459
+ chainId,
460
+ dappSuggestedGasFees,
461
+ deviceConfirmedOn,
462
+ disableGasBuffer,
463
+ id: (0, uuid_1.v1)(),
464
+ isGasFeeTokenIgnoredIfBalance: Boolean(gasFeeToken),
465
+ isGasFeeIncluded,
466
+ isGasFeeSponsored,
467
+ isFirstTimeInteraction: undefined,
468
+ isStateOnly,
469
+ nestedTransactions,
470
+ networkClientId,
471
+ origin,
472
+ requestId,
473
+ requiredAssets,
474
+ securityAlertResponse,
475
+ selectedGasFeeToken: gasFeeToken,
476
+ status: types_1.TransactionStatus.unapproved,
477
+ time: Date.now(),
478
+ txParams,
479
+ type: transactionType,
480
+ userEditedGasLimit: false,
481
+ verifiedOnBlockchain: false,
482
+ };
457
483
  const { updateTransaction } = await __classPrivateFieldGet(this, _TransactionController_afterAdd, "f").call(this, {
458
484
  transactionMeta: addedTransactionMeta,
459
485
  });
@@ -488,61 +514,56 @@ class TransactionController extends base_controller_1.BaseController {
488
514
  })
489
515
  .catch(lodash_1.noop);
490
516
  }
491
- // Checks if a transaction already exists with a given actionId
492
- if (!existingTransactionMeta) {
493
- // Set security provider response
494
- if (method && __classPrivateFieldGet(this, _TransactionController_securityProviderRequest, "f")) {
495
- const securityProviderResponse = await __classPrivateFieldGet(this, _TransactionController_securityProviderRequest, "f").call(this, addedTransactionMeta, method);
496
- // eslint-disable-next-line require-atomic-updates
497
- addedTransactionMeta.securityProviderResponse =
498
- securityProviderResponse;
499
- }
500
- addedTransactionMeta = (0, swaps_1.updateSwapsTransaction)(addedTransactionMeta, transactionType, swaps, {
501
- isSwapsDisabled: __classPrivateFieldGet(this, _TransactionController_isSwapsDisabled, "f"),
502
- cancelTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_rejectTransaction).bind(this),
503
- messenger: this.messenger,
517
+ // Set security provider response
518
+ if (method && __classPrivateFieldGet(this, _TransactionController_securityProviderRequest, "f")) {
519
+ const securityProviderResponse = await __classPrivateFieldGet(this, _TransactionController_securityProviderRequest, "f").call(this, addedTransactionMeta, method);
520
+ // eslint-disable-next-line require-atomic-updates
521
+ addedTransactionMeta.securityProviderResponse = securityProviderResponse;
522
+ }
523
+ addedTransactionMeta = (0, swaps_1.updateSwapsTransaction)(addedTransactionMeta, transactionType, swaps, {
524
+ isSwapsDisabled: __classPrivateFieldGet(this, _TransactionController_isSwapsDisabled, "f"),
525
+ cancelTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_rejectTransaction).bind(this),
526
+ messenger: this.messenger,
527
+ });
528
+ __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addMetadata).call(this, addedTransactionMeta);
529
+ delegationAddressPromise
530
+ .then((delegationAddress) => {
531
+ __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
532
+ transactionId: addedTransactionMeta.id,
533
+ skipResimulateCheck: true,
534
+ skipValidation: true,
535
+ }, (tx) => {
536
+ tx.delegationAddress = delegationAddress;
504
537
  });
505
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addMetadata).call(this, addedTransactionMeta);
506
- delegationAddressPromise
507
- .then((delegationAddress) => {
508
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
509
- transactionId: addedTransactionMeta.id,
510
- skipResimulateCheck: true,
511
- skipValidation: true,
512
- }, (tx) => {
513
- tx.delegationAddress = delegationAddress;
514
- });
515
- return undefined;
516
- })
517
- .catch(lodash_1.noop);
518
- if (requireApproval !== false && !isStateOnly) {
519
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateSimulationData).call(this, addedTransactionMeta, {
520
- traceContext,
521
- }).catch((error) => {
522
- (0, logger_1.projectLogger)('Error while updating simulation data', error);
523
- throw error;
524
- });
525
- (0, first_time_interaction_1.updateFirstTimeInteraction)({
526
- existingTransactions: this.state.transactions,
527
- getTransaction: (transactionId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId),
528
- isFirstTimeInteractionEnabled: __classPrivateFieldGet(this, _TransactionController_isFirstTimeInteractionEnabled, "f"),
529
- trace: __classPrivateFieldGet(this, _TransactionController_trace, "f"),
530
- traceContext,
531
- transactionMeta: addedTransactionMeta,
532
- updateTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).bind(this),
533
- }).catch((error) => {
534
- (0, logger_1.projectLogger)('Error while updating first interaction properties', error);
535
- });
536
- }
537
- else {
538
- (0, logger_1.projectLogger)('Skipping simulation & first interaction update as approval not required');
539
- }
540
- this.messenger.publish(`${controllerName}:unapprovedTransactionAdded`, addedTransactionMeta);
538
+ return undefined;
539
+ })
540
+ .catch(lodash_1.noop);
541
+ if (requireApproval !== false && !isStateOnly) {
542
+ __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateSimulationData).call(this, addedTransactionMeta, {
543
+ traceContext,
544
+ }).catch((error) => {
545
+ (0, logger_1.projectLogger)('Error while updating simulation data', error);
546
+ throw error;
547
+ });
548
+ (0, first_time_interaction_1.updateFirstTimeInteraction)({
549
+ existingTransactions: this.state.transactions,
550
+ getTransaction: (transactionId) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId),
551
+ isFirstTimeInteractionEnabled: __classPrivateFieldGet(this, _TransactionController_isFirstTimeInteractionEnabled, "f"),
552
+ trace: __classPrivateFieldGet(this, _TransactionController_trace, "f"),
553
+ traceContext,
554
+ transactionMeta: addedTransactionMeta,
555
+ updateTransaction: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).bind(this),
556
+ }).catch((error) => {
557
+ (0, logger_1.projectLogger)('Error while updating first interaction properties', error);
558
+ });
559
+ }
560
+ else {
561
+ (0, logger_1.projectLogger)('Skipping simulation & first interaction update as approval not required');
541
562
  }
563
+ this.messenger.publish(`${controllerName}:unapprovedTransactionAdded`, addedTransactionMeta);
542
564
  return {
543
565
  result: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_processApproval).call(this, addedTransactionMeta, {
544
566
  actionId,
545
- isExisting: Boolean(existingTransactionMeta),
546
567
  publishHook,
547
568
  requireApproval,
548
569
  traceContext,
@@ -550,9 +571,15 @@ class TransactionController extends base_controller_1.BaseController {
550
571
  transactionMeta: addedTransactionMeta,
551
572
  };
552
573
  }
574
+ /**
575
+ * Starts polling for incoming transactions from the remote transaction source.
576
+ */
553
577
  startIncomingTransactionPolling() {
554
578
  __classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f").start();
555
579
  }
580
+ /**
581
+ * Stops polling for incoming transactions from the remote transaction source.
582
+ */
556
583
  stopIncomingTransactionPolling() {
557
584
  __classPrivateFieldGet(this, _TransactionController_incomingTransactionHelper, "f").stop();
558
585
  }
@@ -572,7 +599,7 @@ class TransactionController extends base_controller_1.BaseController {
572
599
  * @param transactionId - The ID of the transaction to cancel.
573
600
  * @param gasValues - The gas values to use for the cancellation transaction.
574
601
  * @param options - The options for the cancellation transaction.
575
- * @param options.actionId - Unique ID to prevent duplicate requests.
602
+ * @param options.actionId - Unique ID persisted on transaction metadata.
576
603
  * @param options.estimatedBaseFee - The estimated base fee of the transaction.
577
604
  */
578
605
  async stopTransaction(transactionId, gasValues, { estimatedBaseFee, actionId, } = {}) {
@@ -601,7 +628,7 @@ class TransactionController extends base_controller_1.BaseController {
601
628
  * @param transactionId - The ID of the transaction to speed up.
602
629
  * @param gasValues - The gas values to use for the speed up transaction.
603
630
  * @param options - The options for the speed up transaction.
604
- * @param options.actionId - Unique ID to prevent duplicate requests
631
+ * @param options.actionId - Unique ID persisted on transaction metadata.
605
632
  * @param options.estimatedBaseFee - The estimated base fee of the transaction.
606
633
  */
607
634
  async speedUpTransaction(transactionId, gasValues, { actionId, estimatedBaseFee, } = {}) {
@@ -913,6 +940,14 @@ class TransactionController extends base_controller_1.BaseController {
913
940
  this.updateTransaction(updatedMeta, `${controllerName}:updatePreviousGasParams - Previous gas values updated`);
914
941
  return __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransaction).call(this, transactionId);
915
942
  }
943
+ /**
944
+ * Acquires a nonce lock for the given address on the specified network,
945
+ * ensuring that nonces are assigned sequentially without conflicts.
946
+ *
947
+ * @param address - The account address for which to acquire the nonce lock.
948
+ * @param networkClientId - The ID of the network client to use.
949
+ * @returns A promise that resolves to a nonce lock containing the next nonce and a release function.
950
+ */
916
951
  async getNonceLock(address, networkClientId) {
917
952
  return __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").getNonceLock(address, networkClientId);
918
953
  }
@@ -1177,6 +1212,15 @@ class TransactionController extends base_controller_1.BaseController {
1177
1212
  }
1178
1213
  return filteredTransactions;
1179
1214
  }
1215
+ /**
1216
+ * Estimates the gas fees for a transaction.
1217
+ *
1218
+ * @param args - The arguments for estimating gas fees.
1219
+ * @param args.transactionParams - The transaction parameters to estimate fees for.
1220
+ * @param args.chainId - The chain ID to use. If not provided, the network client ID is used to determine the chain.
1221
+ * @param args.networkClientId - The network client ID to use for the estimation.
1222
+ * @returns A promise that resolves to the estimated gas fee response.
1223
+ */
1180
1224
  async estimateGasFee({ transactionParams, chainId, networkClientId: requestNetworkClientId, }) {
1181
1225
  const { id: networkClientId, provider } = __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").getNetworkClient({
1182
1226
  chainId,
@@ -1389,13 +1433,33 @@ class TransactionController extends base_controller_1.BaseController {
1389
1433
  transactionMeta: updatedTransactionMeta,
1390
1434
  });
1391
1435
  }
1436
+ /**
1437
+ * Retrieve available gas fee tokens for a transaction.
1438
+ *
1439
+ * @param request - The request object containing transaction details.
1440
+ * @returns The list of available gas fee tokens.
1441
+ */
1442
+ async getGasFeeTokens(request) {
1443
+ const { chainId, data, from, to, value } = request;
1444
+ const ethQuery = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, { chainId });
1445
+ const delegationAddress = await (0, eip7702_1.getDelegationAddress)(from, ethQuery);
1446
+ const transaction = {
1447
+ chainId,
1448
+ delegationAddress,
1449
+ isExternalSign: true,
1450
+ txParams: {
1451
+ data,
1452
+ from,
1453
+ to,
1454
+ value,
1455
+ },
1456
+ };
1457
+ const result = await __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getGasFeeTokens).call(this, transaction);
1458
+ return result.gasFeeTokens;
1459
+ }
1392
1460
  }
1393
1461
  exports.TransactionController = TransactionController;
1394
1462
  _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, }) {
1395
- // If transaction is found for same action id, do not create a new transaction.
1396
- if (__classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getTransactionWithActionId).call(this, actionId)) {
1397
- return;
1398
- }
1399
1463
  if (gasValues) {
1400
1464
  // Not good practice to reassign a parameter but temporarily avoiding a larger refactor.
1401
1465
  // eslint-disable-next-line no-param-reassign
@@ -1533,7 +1597,7 @@ _TransactionController_afterAdd = new WeakMap(), _TransactionController_afterSig
1533
1597
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_failTransaction).call(this, requiredTransactionMeta, new Error('Parent transaction incomplete at startup'));
1534
1598
  }
1535
1599
  }
1536
- }, _TransactionController_processApproval = async function _TransactionController_processApproval(transactionMeta, { actionId, isExisting = false, publishHook, requireApproval, shouldShowRequest = true, traceContext, }) {
1600
+ }, _TransactionController_processApproval = async function _TransactionController_processApproval(transactionMeta, { actionId, publishHook, requireApproval, shouldShowRequest = true, traceContext, }) {
1537
1601
  const { id: transactionId, isStateOnly } = transactionMeta;
1538
1602
  if (isStateOnly) {
1539
1603
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, { transactionId, skipValidation: true }, (tx) => {
@@ -1547,7 +1611,7 @@ _TransactionController_afterAdd = new WeakMap(), _TransactionController_afterSig
1547
1611
  const finishedPromise = isCompleted
1548
1612
  ? Promise.resolve(meta)
1549
1613
  : __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_waitForTransactionFinished).call(this, transactionId);
1550
- if (meta && !isExisting && !isCompleted) {
1614
+ if (meta && !isCompleted) {
1551
1615
  try {
1552
1616
  if (requireApproval !== false) {
1553
1617
  const acceptResult = await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Await Approval', parentContext: traceContext }, (context) => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_requestApproval).call(this, transactionMeta, {
@@ -1963,8 +2027,6 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
1963
2027
  });
1964
2028
  this.updateTransaction(updatedTransactionMeta, 'TransactionController#setTransactionStatusDropped - Transaction dropped');
1965
2029
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_onTransactionStatusChange).call(this, updatedTransactionMeta);
1966
- }, _TransactionController_getTransactionWithActionId = function _TransactionController_getTransactionWithActionId(actionId) {
1967
- return this.state.transactions.find((transaction) => actionId && transaction.actionId === actionId);
1968
2030
  }, _TransactionController_waitForTransactionFinished = async function _TransactionController_waitForTransactionFinished(transactionId) {
1969
2031
  return new Promise((resolve) => {
1970
2032
  __classPrivateFieldGet(this, _TransactionController_internalEvents, "f").once(`${transactionId}:finished`, (txMeta) => {
@@ -2331,18 +2393,7 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2331
2393
  txMeta: transactionMeta,
2332
2394
  });
2333
2395
  }, _TransactionController_registerActionHandlers = function _TransactionController_registerActionHandlers() {
2334
- this.messenger.registerActionHandler(`${controllerName}:addTransaction`, this.addTransaction.bind(this));
2335
- this.messenger.registerActionHandler(`${controllerName}:addTransactionBatch`, this.addTransactionBatch.bind(this));
2336
- this.messenger.registerActionHandler(`${controllerName}:confirmExternalTransaction`, this.confirmExternalTransaction.bind(this));
2337
- this.messenger.registerActionHandler(`${controllerName}:emulateNewTransaction`, this.emulateNewTransaction.bind(this));
2338
- this.messenger.registerActionHandler(`${controllerName}:emulateTransactionUpdate`, this.emulateTransactionUpdate.bind(this));
2339
- this.messenger.registerActionHandler(`${controllerName}:estimateGas`, this.estimateGas.bind(this));
2340
- this.messenger.registerActionHandler(`${controllerName}:estimateGasBatch`, this.estimateGasBatch.bind(this));
2341
- this.messenger.registerActionHandler(`${controllerName}:getGasFeeTokens`, __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getGasFeeTokensAction).bind(this));
2342
- this.messenger.registerActionHandler(`${controllerName}:getNonceLock`, this.getNonceLock.bind(this));
2343
- this.messenger.registerActionHandler(`${controllerName}:getTransactions`, this.getTransactions.bind(this));
2344
- this.messenger.registerActionHandler(`${controllerName}:updateCustodialTransaction`, this.updateCustodialTransaction.bind(this));
2345
- this.messenger.registerActionHandler(`${controllerName}:updateTransaction`, this.updateTransaction.bind(this));
2396
+ this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
2346
2397
  }, _TransactionController_deleteTransaction = function _TransactionController_deleteTransaction(transactionId) {
2347
2398
  this.update((state) => {
2348
2399
  const transactions = state.transactions.filter(({ id }) => id !== transactionId);
@@ -2436,22 +2487,5 @@ async function _TransactionController_approveTransaction(transactionId, traceCon
2436
2487
  publicKeyEIP7702: __classPrivateFieldGet(this, _TransactionController_publicKeyEIP7702, "f"),
2437
2488
  transactionMeta: transaction,
2438
2489
  });
2439
- }, _TransactionController_getGasFeeTokensAction = async function _TransactionController_getGasFeeTokensAction(request) {
2440
- const { chainId, data, from, to, value } = request;
2441
- const ethQuery = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getEthQuery).call(this, { chainId });
2442
- const delegationAddress = await (0, eip7702_1.getDelegationAddress)(from, ethQuery);
2443
- const transaction = {
2444
- chainId,
2445
- delegationAddress,
2446
- isExternalSign: true,
2447
- txParams: {
2448
- data,
2449
- from,
2450
- to,
2451
- value,
2452
- },
2453
- };
2454
- const result = await __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getGasFeeTokens).call(this, transaction);
2455
- return result.gasFeeTokens;
2456
2490
  };
2457
2491
  //# sourceMappingURL=TransactionController.cjs.map