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