@metamask-previews/transaction-controller 39.1.0-preview-608079df → 39.1.0-preview-690da12e

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 (95) hide show
  1. package/dist/TransactionController.cjs +43 -103
  2. package/dist/TransactionController.cjs.map +1 -1
  3. package/dist/TransactionController.d.cts +78 -11
  4. package/dist/TransactionController.d.cts.map +1 -1
  5. package/dist/TransactionController.d.mts +78 -11
  6. package/dist/TransactionController.d.mts.map +1 -1
  7. package/dist/TransactionController.mjs +45 -105
  8. package/dist/TransactionController.mjs.map +1 -1
  9. package/dist/api/accounts-api.cjs +35 -33
  10. package/dist/api/accounts-api.cjs.map +1 -1
  11. package/dist/api/accounts-api.d.cts +42 -35
  12. package/dist/api/accounts-api.d.cts.map +1 -1
  13. package/dist/api/accounts-api.d.mts +42 -35
  14. package/dist/api/accounts-api.d.mts.map +1 -1
  15. package/dist/api/accounts-api.mjs +33 -31
  16. package/dist/api/accounts-api.mjs.map +1 -1
  17. package/dist/constants.cjs +1 -85
  18. package/dist/constants.cjs.map +1 -1
  19. package/dist/constants.d.cts +0 -84
  20. package/dist/constants.d.cts.map +1 -1
  21. package/dist/constants.d.mts +0 -84
  22. package/dist/constants.d.mts.map +1 -1
  23. package/dist/constants.mjs +0 -84
  24. package/dist/constants.mjs.map +1 -1
  25. package/dist/errors.cjs +1 -8
  26. package/dist/errors.cjs.map +1 -1
  27. package/dist/errors.d.cts +0 -4
  28. package/dist/errors.d.cts.map +1 -1
  29. package/dist/errors.d.mts +0 -4
  30. package/dist/errors.d.mts.map +1 -1
  31. package/dist/errors.mjs +0 -6
  32. package/dist/errors.mjs.map +1 -1
  33. package/dist/helpers/AccountsApiRemoteTransactionSource.cjs +178 -0
  34. package/dist/helpers/AccountsApiRemoteTransactionSource.cjs.map +1 -0
  35. package/dist/helpers/AccountsApiRemoteTransactionSource.d.cts +12 -0
  36. package/dist/helpers/AccountsApiRemoteTransactionSource.d.cts.map +1 -0
  37. package/dist/helpers/AccountsApiRemoteTransactionSource.d.mts +12 -0
  38. package/dist/helpers/AccountsApiRemoteTransactionSource.d.mts.map +1 -0
  39. package/dist/helpers/AccountsApiRemoteTransactionSource.mjs +178 -0
  40. package/dist/helpers/AccountsApiRemoteTransactionSource.mjs.map +1 -0
  41. package/dist/helpers/IncomingTransactionHelper.cjs +68 -139
  42. package/dist/helpers/IncomingTransactionHelper.cjs.map +1 -1
  43. package/dist/helpers/IncomingTransactionHelper.d.cts +9 -16
  44. package/dist/helpers/IncomingTransactionHelper.d.cts.map +1 -1
  45. package/dist/helpers/IncomingTransactionHelper.d.mts +9 -16
  46. package/dist/helpers/IncomingTransactionHelper.d.mts.map +1 -1
  47. package/dist/helpers/IncomingTransactionHelper.mjs +68 -139
  48. package/dist/helpers/IncomingTransactionHelper.mjs.map +1 -1
  49. package/dist/helpers/MultichainTrackingHelper.cjs +3 -66
  50. package/dist/helpers/MultichainTrackingHelper.cjs.map +1 -1
  51. package/dist/helpers/MultichainTrackingHelper.d.cts +1 -14
  52. package/dist/helpers/MultichainTrackingHelper.d.cts.map +1 -1
  53. package/dist/helpers/MultichainTrackingHelper.d.mts +1 -14
  54. package/dist/helpers/MultichainTrackingHelper.d.mts.map +1 -1
  55. package/dist/helpers/MultichainTrackingHelper.mjs +3 -66
  56. package/dist/helpers/MultichainTrackingHelper.mjs.map +1 -1
  57. package/dist/index.cjs +3 -2
  58. package/dist/index.cjs.map +1 -1
  59. package/dist/index.d.cts +3 -3
  60. package/dist/index.d.cts.map +1 -1
  61. package/dist/index.d.mts +3 -3
  62. package/dist/index.d.mts.map +1 -1
  63. package/dist/index.mjs +2 -1
  64. package/dist/index.mjs.map +1 -1
  65. package/dist/types.cjs.map +1 -1
  66. package/dist/types.d.cts +23 -18
  67. package/dist/types.d.cts.map +1 -1
  68. package/dist/types.d.mts +23 -18
  69. package/dist/types.d.mts.map +1 -1
  70. package/dist/types.mjs.map +1 -1
  71. package/dist/utils/validation.cjs +1 -13
  72. package/dist/utils/validation.cjs.map +1 -1
  73. package/dist/utils/validation.d.cts +0 -7
  74. package/dist/utils/validation.d.cts.map +1 -1
  75. package/dist/utils/validation.d.mts +0 -7
  76. package/dist/utils/validation.d.mts.map +1 -1
  77. package/dist/utils/validation.mjs +0 -11
  78. package/dist/utils/validation.mjs.map +1 -1
  79. package/package.json +1 -2
  80. package/dist/helpers/EtherscanRemoteTransactionSource.cjs +0 -157
  81. package/dist/helpers/EtherscanRemoteTransactionSource.cjs.map +0 -1
  82. package/dist/helpers/EtherscanRemoteTransactionSource.d.cts +0 -16
  83. package/dist/helpers/EtherscanRemoteTransactionSource.d.cts.map +0 -1
  84. package/dist/helpers/EtherscanRemoteTransactionSource.d.mts +0 -16
  85. package/dist/helpers/EtherscanRemoteTransactionSource.d.mts.map +0 -1
  86. package/dist/helpers/EtherscanRemoteTransactionSource.mjs +0 -157
  87. package/dist/helpers/EtherscanRemoteTransactionSource.mjs.map +0 -1
  88. package/dist/utils/etherscan.cjs +0 -115
  89. package/dist/utils/etherscan.cjs.map +0 -1
  90. package/dist/utils/etherscan.d.cts +0 -74
  91. package/dist/utils/etherscan.d.cts.map +0 -1
  92. package/dist/utils/etherscan.d.mts +0 -74
  93. package/dist/utils/etherscan.d.mts.map +0 -1
  94. package/dist/utils/etherscan.mjs +0 -109
  95. package/dist/utils/etherscan.mjs.map +0 -1
@@ -13,7 +13,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
13
13
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
15
  };
16
- var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isFirstTimeInteractionEnabled, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _TransactionController_createNonceTracker, _TransactionController_createIncomingTransactionHelper, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_removeIncomingTransactionHelperListeners, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateFirstTimeInteraction, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getNetworkClientId, _TransactionController_getGlobalNetworkClientId, _TransactionController_getGlobalChainId, _TransactionController_isCustomNetwork, _TransactionController_getSelectedAccount, _TransactionController_updateSubmitHistory;
16
+ var _TransactionController_instances, _TransactionController_internalEvents, _TransactionController_incomingTransactionOptions, _TransactionController_pendingTransactionOptions, _TransactionController_trace, _TransactionController_transactionHistoryLimit, _TransactionController_isSimulationEnabled, _TransactionController_testGasFeeFlows, _TransactionController_multichainTrackingHelper, _TransactionController_retryTransaction, _TransactionController_createNonceTracker, _TransactionController_createIncomingTransactionHelper, _TransactionController_createPendingTransactionTracker, _TransactionController_checkForPendingTransactionAndStartPolling, _TransactionController_stopAllTracking, _TransactionController_removeIncomingTransactionHelperListeners, _TransactionController_addIncomingTransactionHelperListeners, _TransactionController_removePendingTransactionTrackerListeners, _TransactionController_addPendingTransactionTrackerListeners, _TransactionController_getNonceTrackerPendingTransactions, _TransactionController_getGasFeeFlows, _TransactionController_getLayer1GasFeeFlows, _TransactionController_updateTransactionInternal, _TransactionController_updateSimulationData, _TransactionController_onGasFeePollerTransactionUpdate, _TransactionController_getNetworkClientId, _TransactionController_getGlobalNetworkClientId, _TransactionController_getGlobalChainId, _TransactionController_isCustomNetwork, _TransactionController_getSelectedAccount, _TransactionController_updateSubmitHistory;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.TransactionController = exports.ApprovalState = exports.SPEED_UP_RATE = exports.CANCEL_RATE = exports.HARDFORK = void 0;
19
19
  const common_1 = require("@ethereumjs/common");
@@ -31,13 +31,12 @@ const eth_method_registry_1 = require("eth-method-registry");
31
31
  const events_1 = require("events");
32
32
  const lodash_1 = require("lodash");
33
33
  const uuid_1 = require("uuid");
34
- const accounts_api_1 = require("./api/accounts-api.cjs");
35
34
  const DefaultGasFeeFlow_1 = require("./gas-flows/DefaultGasFeeFlow.cjs");
36
35
  const LineaGasFeeFlow_1 = require("./gas-flows/LineaGasFeeFlow.cjs");
37
36
  const OptimismLayer1GasFeeFlow_1 = require("./gas-flows/OptimismLayer1GasFeeFlow.cjs");
38
37
  const ScrollLayer1GasFeeFlow_1 = require("./gas-flows/ScrollLayer1GasFeeFlow.cjs");
39
38
  const TestGasFeeFlow_1 = require("./gas-flows/TestGasFeeFlow.cjs");
40
- const EtherscanRemoteTransactionSource_1 = require("./helpers/EtherscanRemoteTransactionSource.cjs");
39
+ const AccountsApiRemoteTransactionSource_1 = require("./helpers/AccountsApiRemoteTransactionSource.cjs");
41
40
  const GasFeePoller_1 = require("./helpers/GasFeePoller.cjs");
42
41
  const IncomingTransactionHelper_1 = require("./helpers/IncomingTransactionHelper.cjs");
43
42
  const MultichainTrackingHelper_1 = require("./helpers/MultichainTrackingHelper.cjs");
@@ -178,7 +177,6 @@ class TransactionController extends base_controller_1.BaseController {
178
177
  * @param options.getSavedGasFees - Gets the saved gas fee config.
179
178
  * @param options.incomingTransactions - Configuration options for incoming transaction support.
180
179
  * @param options.isMultichainEnabled - Enable multichain support.
181
- * @param options.isFirstTimeInteractionEnabled - Whether first time interaction checks are enabled.
182
180
  * @param options.isSimulationEnabled - Whether new transactions will be automatically simulated.
183
181
  * @param options.messenger - The controller messenger.
184
182
  * @param options.onNetworkStateChange - Allows subscribing to network controller state changes.
@@ -192,7 +190,7 @@ class TransactionController extends base_controller_1.BaseController {
192
190
  * @param options.transactionHistoryLimit - Transaction history limit.
193
191
  * @param options.hooks - The controller hooks.
194
192
  */
195
- constructor({ blockTracker, disableHistory, disableSendFlowHistory, disableSwaps, getCurrentAccountEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, getExternalPendingTransactions, getGasFeeEstimates, getNetworkClientRegistry, getNetworkState, getPermittedAccounts, getSavedGasFees, incomingTransactions = {}, isMultichainEnabled = false, isFirstTimeInteractionEnabled, isSimulationEnabled, messenger, onNetworkStateChange, pendingTransactions = {}, provider, securityProviderRequest, sign, state, testGasFeeFlows, trace, transactionHistoryLimit = 40, hooks, }) {
193
+ constructor({ blockTracker, disableHistory, disableSendFlowHistory, disableSwaps, getCurrentAccountEIP1559Compatibility, getCurrentNetworkEIP1559Compatibility, getExternalPendingTransactions, getGasFeeEstimates, getNetworkClientRegistry, getNetworkState, getPermittedAccounts, getSavedGasFees, incomingTransactions = {}, isMultichainEnabled = false, isSimulationEnabled, messenger, onNetworkStateChange, pendingTransactions = {}, provider, securityProviderRequest, sign, state, testGasFeeFlows, trace, transactionHistoryLimit = 40, hooks, }) {
196
194
  super({
197
195
  name: controllerName,
198
196
  metadata,
@@ -211,7 +209,6 @@ class TransactionController extends base_controller_1.BaseController {
211
209
  this.signAbortCallbacks = new Map();
212
210
  _TransactionController_trace.set(this, void 0);
213
211
  _TransactionController_transactionHistoryLimit.set(this, void 0);
214
- _TransactionController_isFirstTimeInteractionEnabled.set(this, void 0);
215
212
  _TransactionController_isSimulationEnabled.set(this, void 0);
216
213
  _TransactionController_testGasFeeFlows.set(this, void 0);
217
214
  _TransactionController_multichainTrackingHelper.set(this, void 0);
@@ -225,7 +222,6 @@ class TransactionController extends base_controller_1.BaseController {
225
222
  this.isSendFlowHistoryDisabled = disableSendFlowHistory ?? false;
226
223
  this.isHistoryDisabled = disableHistory ?? false;
227
224
  this.isSwapsDisabled = disableSwaps ?? false;
228
- __classPrivateFieldSet(this, _TransactionController_isFirstTimeInteractionEnabled, isFirstTimeInteractionEnabled ?? (() => true), "f");
229
225
  __classPrivateFieldSet(this, _TransactionController_isSimulationEnabled, isSimulationEnabled ?? (() => true), "f");
230
226
  // @ts-expect-error the type in eth-method-registry is inappropriate and should be changed
231
227
  this.registry = new eth_method_registry_1.MethodRegistry({ provider });
@@ -267,30 +263,20 @@ class TransactionController extends base_controller_1.BaseController {
267
263
  isMultichainEnabled,
268
264
  provider,
269
265
  nonceTracker: this.nonceTracker,
270
- incomingTransactionOptions: incomingTransactions,
271
266
  findNetworkClientIdByChainId,
272
267
  getNetworkClientById: ((networkClientId) => {
273
268
  return this.messagingSystem.call(`NetworkController:getNetworkClientById`, networkClientId);
274
269
  }),
275
270
  getNetworkClientRegistry,
276
- removeIncomingTransactionHelperListeners: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_removeIncomingTransactionHelperListeners).bind(this),
277
271
  removePendingTransactionTrackerListeners: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_removePendingTransactionTrackerListeners).bind(this),
278
272
  createNonceTracker: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createNonceTracker).bind(this),
279
- createIncomingTransactionHelper: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createIncomingTransactionHelper).bind(this),
280
273
  createPendingTransactionTracker: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createPendingTransactionTracker).bind(this),
281
274
  onNetworkStateChange: (listener) => {
282
275
  this.messagingSystem.subscribe('NetworkController:stateChange', listener);
283
276
  },
284
277
  }), "f");
285
278
  __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").initialize();
286
- const etherscanRemoteTransactionSource = new EtherscanRemoteTransactionSource_1.EtherscanRemoteTransactionSource({
287
- apiKeysByChainId: incomingTransactions.etherscanApiKeysByChainId,
288
- includeTokenTransfers: incomingTransactions.includeTokenTransfers,
289
- });
290
- this.incomingTransactionHelper = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createIncomingTransactionHelper).call(this, {
291
- blockTracker,
292
- etherscanRemoteTransactionSource,
293
- });
279
+ this.incomingTransactionHelper = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createIncomingTransactionHelper).call(this);
294
280
  this.pendingTransactionTracker = __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_createPendingTransactionTracker).call(this, {
295
281
  provider,
296
282
  blockTracker,
@@ -407,16 +393,15 @@ class TransactionController extends base_controller_1.BaseController {
407
393
  dappSuggestedGasFees,
408
394
  deviceConfirmedOn,
409
395
  id: (0, uuid_1.v1)(),
410
- isFirstTimeInteraction: undefined,
411
- networkClientId,
412
396
  origin,
413
397
  securityAlertResponse,
414
398
  status: types_1.TransactionStatus.unapproved,
415
399
  time: Date.now(),
416
400
  txParams,
417
- type: transactionType,
418
401
  userEditedGasLimit: false,
419
402
  verifiedOnBlockchain: false,
403
+ type: transactionType,
404
+ networkClientId,
420
405
  };
421
406
  await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Estimate Gas Properties', parentContext: traceContext }, (context) => this.updateGasProperties(addedTransactionMeta, {
422
407
  traceContext: context,
@@ -449,14 +434,9 @@ class TransactionController extends base_controller_1.BaseController {
449
434
  (0, logger_1.projectLogger)('Error while updating simulation data', error);
450
435
  throw error;
451
436
  });
452
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateFirstTimeInteraction).call(this, addedTransactionMeta, {
453
- traceContext,
454
- }).catch((error) => {
455
- (0, logger_1.projectLogger)('Error while updating first interaction properties', error);
456
- });
457
437
  }
458
438
  else {
459
- (0, logger_1.projectLogger)('Skipping simulation & first interaction update as approval not required');
439
+ (0, logger_1.projectLogger)('Skipping simulation as approval not required');
460
440
  }
461
441
  this.messagingSystem.publish(`${controllerName}:unapprovedTransactionAdded`, addedTransactionMeta);
462
442
  }
@@ -473,27 +453,20 @@ class TransactionController extends base_controller_1.BaseController {
473
453
  startIncomingTransactionPolling(networkClientIds = []) {
474
454
  if (networkClientIds.length === 0) {
475
455
  this.incomingTransactionHelper.start();
476
- return;
477
456
  }
478
- __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").startIncomingTransactionPolling(networkClientIds);
479
457
  }
480
458
  stopIncomingTransactionPolling(networkClientIds = []) {
481
459
  if (networkClientIds.length === 0) {
482
460
  this.incomingTransactionHelper.stop();
483
- return;
484
461
  }
485
- __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").stopIncomingTransactionPolling(networkClientIds);
486
462
  }
487
463
  stopAllIncomingTransactionPolling() {
488
464
  this.incomingTransactionHelper.stop();
489
- __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").stopAllIncomingTransactionPolling();
490
465
  }
491
466
  async updateIncomingTransactions(networkClientIds = []) {
492
467
  if (networkClientIds.length === 0) {
493
468
  await this.incomingTransactionHelper.update();
494
- return;
495
469
  }
496
- await __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").updateIncomingTransactions(networkClientIds);
497
470
  }
498
471
  /**
499
472
  * Attempts to cancel a transaction based on its ID by setting its status to "rejected"
@@ -621,23 +594,33 @@ class TransactionController extends base_controller_1.BaseController {
621
594
  * wiped on current network.
622
595
  */
623
596
  wipeTransactions(ignoreNetwork, address) {
597
+ (0, logger_1.projectLogger)('Wiping transactions', { ignoreNetwork, address });
624
598
  /* istanbul ignore next */
625
599
  if (ignoreNetwork && !address) {
626
600
  this.update((state) => {
627
601
  state.transactions = [];
602
+ state.lastFetchedBlockNumbers = {};
628
603
  });
629
604
  return;
630
605
  }
631
606
  const currentChainId = this.getChainId();
632
- const newTransactions = this.state.transactions.filter(({ chainId, txParams }) => {
607
+ const { transactions } = this.state;
608
+ const newTransactions = transactions.filter((tx) => {
609
+ const { chainId, txParams } = tx;
633
610
  const isMatchingNetwork = ignoreNetwork || chainId === currentChainId;
634
611
  if (!isMatchingNetwork) {
635
612
  return true;
636
613
  }
637
- const isMatchingAddress = !address || txParams.from?.toLowerCase() === address.toLowerCase();
614
+ const isMatchingAddress = !address ||
615
+ txParams.from?.toLowerCase() === address.toLowerCase() ||
616
+ txParams.to?.toLowerCase() === address.toLowerCase();
617
+ if (isMatchingAddress) {
618
+ (0, logger_1.projectLogger)('Removing transaction', tx);
619
+ }
638
620
  return !isMatchingAddress;
639
621
  });
640
622
  this.update((state) => {
623
+ state.lastFetchedBlockNumbers = {};
641
624
  state.transactions = this.trimTransactionsForState(newTransactions);
642
625
  });
643
626
  }
@@ -1528,24 +1511,20 @@ class TransactionController extends base_controller_1.BaseController {
1528
1511
  };
1529
1512
  return common_1.Common.custom(customChainParams);
1530
1513
  }
1531
- onIncomingTransactions({ added, updated, }) {
1514
+ onIncomingTransactions(transactions) {
1532
1515
  this.update((state) => {
1533
1516
  const { transactions: currentTransactions } = state;
1534
- const updatedTransactions = [
1535
- ...added,
1536
- ...currentTransactions.map((originalTransaction) => {
1537
- const updatedTransaction = updated.find(({ hash }) => hash === originalTransaction.hash);
1538
- return updatedTransaction ?? originalTransaction;
1539
- }),
1540
- ];
1541
- state.transactions = this.trimTransactionsForState(updatedTransactions);
1542
- });
1543
- }
1544
- onUpdatedLastFetchedBlockNumbers({ lastFetchedBlockNumbers, blockNumber, }) {
1545
- this.update((state) => {
1546
- state.lastFetchedBlockNumbers = lastFetchedBlockNumbers;
1517
+ const newTransactions = transactions.filter((tx) => !currentTransactions.some((currentTx) => currentTx.hash?.toLowerCase() === tx.hash?.toLowerCase() &&
1518
+ currentTx.type === types_1.TransactionType.incoming));
1519
+ (0, logger_1.projectLogger)('Adding incoming transactions to state', newTransactions.length, {
1520
+ newTransactions,
1521
+ });
1522
+ state.transactions = this.trimTransactionsForState([
1523
+ ...newTransactions,
1524
+ ...currentTransactions,
1525
+ ]);
1547
1526
  });
1548
- this.messagingSystem.publish(`${controllerName}:incomingTransactionBlockReceived`, blockNumber);
1527
+ this.messagingSystem.publish(`${controllerName}:incomingTransactionsReceived`, transactions);
1549
1528
  }
1550
1529
  generateDappSuggestedGasFees(txParams, origin) {
1551
1530
  if (!origin || origin === controller_utils_1.ORIGIN_METAMASK) {
@@ -1795,7 +1774,7 @@ class TransactionController extends base_controller_1.BaseController {
1795
1774
  }
1796
1775
  }
1797
1776
  exports.TransactionController = TransactionController;
1798
- _TransactionController_internalEvents = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(), _TransactionController_trace = new WeakMap(), _TransactionController_transactionHistoryLimit = new WeakMap(), _TransactionController_isFirstTimeInteractionEnabled = new WeakMap(), _TransactionController_isSimulationEnabled = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_multichainTrackingHelper = new WeakMap(), _TransactionController_checkForPendingTransactionAndStartPolling = new WeakMap(), _TransactionController_instances = new WeakSet(), _TransactionController_retryTransaction = async function _TransactionController_retryTransaction({ actionId, afterSubmit, estimatedBaseFee, gasValues, label, prepareTransactionParams, rate, transactionId, transactionType, }) {
1777
+ _TransactionController_internalEvents = new WeakMap(), _TransactionController_incomingTransactionOptions = new WeakMap(), _TransactionController_pendingTransactionOptions = new WeakMap(), _TransactionController_trace = new WeakMap(), _TransactionController_transactionHistoryLimit = new WeakMap(), _TransactionController_isSimulationEnabled = new WeakMap(), _TransactionController_testGasFeeFlows = new WeakMap(), _TransactionController_multichainTrackingHelper = new WeakMap(), _TransactionController_checkForPendingTransactionAndStartPolling = new WeakMap(), _TransactionController_instances = new WeakSet(), _TransactionController_retryTransaction = async function _TransactionController_retryTransaction({ actionId, afterSubmit, estimatedBaseFee, gasValues, label, prepareTransactionParams, rate, transactionId, transactionType, }) {
1799
1778
  // If transaction is found for same action id, do not create a new transaction.
1800
1779
  if (this.getTransactionWithActionId(actionId)) {
1801
1780
  return;
@@ -1872,17 +1851,21 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_in
1872
1851
  getPendingTransactions: __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getNonceTrackerPendingTransactions).bind(this, chainId),
1873
1852
  getConfirmedTransactions: this.getNonceTrackerTransactions.bind(this, types_1.TransactionStatus.confirmed),
1874
1853
  });
1875
- }, _TransactionController_createIncomingTransactionHelper = function _TransactionController_createIncomingTransactionHelper({ blockTracker, etherscanRemoteTransactionSource, chainId, }) {
1854
+ }, _TransactionController_createIncomingTransactionHelper = function _TransactionController_createIncomingTransactionHelper({ chainId, } = {}) {
1855
+ const updateCache = (fn) => {
1856
+ this.update((state) => {
1857
+ fn(state.lastFetchedBlockNumbers);
1858
+ });
1859
+ };
1876
1860
  const incomingTransactionHelper = new IncomingTransactionHelper_1.IncomingTransactionHelper({
1877
- blockTracker,
1878
1861
  getCurrentAccount: () => __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_getSelectedAccount).call(this),
1879
- getLastFetchedBlockNumbers: () => this.state.lastFetchedBlockNumbers,
1880
- getLocalTransactions: () => this.state.transactions,
1881
- getChainId: chainId ? () => chainId : this.getChainId.bind(this),
1862
+ getCache: () => this.state.lastFetchedBlockNumbers,
1863
+ getChainIds: chainId ? () => [chainId] : () => [this.getChainId()],
1864
+ includeTokenTransfers: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").includeTokenTransfers,
1882
1865
  isEnabled: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").isEnabled,
1883
1866
  queryEntireHistory: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").queryEntireHistory,
1884
- remoteTransactionSource: etherscanRemoteTransactionSource,
1885
- transactionLimit: __classPrivateFieldGet(this, _TransactionController_transactionHistoryLimit, "f"),
1867
+ remoteTransactionSource: new AccountsApiRemoteTransactionSource_1.AccountsApiRemoteTransactionSource(),
1868
+ updateCache,
1886
1869
  updateTransactions: __classPrivateFieldGet(this, _TransactionController_incomingTransactionOptions, "f").updateTransactions,
1887
1870
  });
1888
1871
  __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_addIncomingTransactionHelperListeners).call(this, incomingTransactionHelper);
@@ -1917,10 +1900,9 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_in
1917
1900
  __classPrivateFieldGet(this, _TransactionController_multichainTrackingHelper, "f").stopAllTracking();
1918
1901
  }, _TransactionController_removeIncomingTransactionHelperListeners = function _TransactionController_removeIncomingTransactionHelperListeners(incomingTransactionHelper) {
1919
1902
  incomingTransactionHelper.hub.removeAllListeners('transactions');
1920
- incomingTransactionHelper.hub.removeAllListeners('updatedLastFetchedBlockNumbers');
1903
+ incomingTransactionHelper.hub.removeAllListeners('updated-last-fetched-timestamp');
1921
1904
  }, _TransactionController_addIncomingTransactionHelperListeners = function _TransactionController_addIncomingTransactionHelperListeners(incomingTransactionHelper) {
1922
1905
  incomingTransactionHelper.hub.on('transactions', this.onIncomingTransactions.bind(this));
1923
- incomingTransactionHelper.hub.on('updatedLastFetchedBlockNumbers', this.onUpdatedLastFetchedBlockNumbers.bind(this));
1924
1906
  }, _TransactionController_removePendingTransactionTrackerListeners = function _TransactionController_removePendingTransactionTrackerListeners(pendingTransactionTracker) {
1925
1907
  pendingTransactionTracker.hub.removeAllListeners('transaction-confirmed');
1926
1908
  pendingTransactionTracker.hub.removeAllListeners('transaction-dropped');
@@ -1973,48 +1955,6 @@ _TransactionController_internalEvents = new WeakMap(), _TransactionController_in
1973
1955
  });
1974
1956
  }
1975
1957
  return transactionMeta;
1976
- }, _TransactionController_updateFirstTimeInteraction = async function _TransactionController_updateFirstTimeInteraction(transactionMeta, { traceContext, } = {}) {
1977
- if (!__classPrivateFieldGet(this, _TransactionController_isFirstTimeInteractionEnabled, "f").call(this)) {
1978
- return;
1979
- }
1980
- const { chainId, id: transactionId, txParams: { to, from }, } = transactionMeta;
1981
- const request = {
1982
- chainId: (0, utils_1.hexToNumber)(chainId),
1983
- to: to,
1984
- from,
1985
- };
1986
- (0, validation_1.validateParamTo)(to);
1987
- const existingTransaction = this.state.transactions.find((tx) => tx.chainId === chainId &&
1988
- tx.txParams.from === from &&
1989
- tx.txParams.to === to &&
1990
- tx.id !== transactionId);
1991
- // Check if there is an existing transaction with the same from, to, and chainId
1992
- // else we continue to check the account address relationship from API
1993
- if (existingTransaction) {
1994
- return;
1995
- }
1996
- try {
1997
- const { count } = await __classPrivateFieldGet(this, _TransactionController_trace, "f").call(this, { name: 'Account Address Relationship', parentContext: traceContext }, () => (0, accounts_api_1.getAccountAddressRelationship)(request));
1998
- const isFirstTimeInteraction = count === undefined ? undefined : count === 0;
1999
- const finalTransactionMeta = this.getTransaction(transactionId);
2000
- /* istanbul ignore if */
2001
- if (!finalTransactionMeta) {
2002
- (0, logger_1.projectLogger)('Cannot update first time interaction as transaction not found', transactionId);
2003
- return;
2004
- }
2005
- __classPrivateFieldGet(this, _TransactionController_instances, "m", _TransactionController_updateTransactionInternal).call(this, {
2006
- transactionId,
2007
- note: 'TransactionController#updateFirstInteraction - Update first time interaction',
2008
- }, (txMeta) => {
2009
- txMeta.isFirstTimeInteraction = isFirstTimeInteraction;
2010
- });
2011
- (0, logger_1.projectLogger)('Updated first time interaction', transactionId, {
2012
- isFirstTimeInteraction,
2013
- });
2014
- }
2015
- catch (error) {
2016
- (0, logger_1.projectLogger)('Error fetching account address relationship, skipping first time interaction update', error);
2017
- }
2018
1958
  }, _TransactionController_updateSimulationData = async function _TransactionController_updateSimulationData(transactionMeta, { blockTime, traceContext, } = {}) {
2019
1959
  const { id: transactionId, chainId, txParams, simulationData: prevSimulationData, } = transactionMeta;
2020
1960
  const { from, to, value, data } = txParams;