@metamask-previews/assets-controller 6.0.0-preview-6ce5d58fa → 6.1.0-preview-6a2926f

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 (76) hide show
  1. package/CHANGELOG.md +19 -2
  2. package/dist/AssetsController.cjs +56 -16
  3. package/dist/AssetsController.cjs.map +1 -1
  4. package/dist/AssetsController.d.cts.map +1 -1
  5. package/dist/AssetsController.d.mts.map +1 -1
  6. package/dist/AssetsController.mjs +57 -17
  7. package/dist/AssetsController.mjs.map +1 -1
  8. package/dist/data-sources/BackendWebsocketDataSource.cjs +5 -3
  9. package/dist/data-sources/BackendWebsocketDataSource.cjs.map +1 -1
  10. package/dist/data-sources/BackendWebsocketDataSource.d.cts +3 -1
  11. package/dist/data-sources/BackendWebsocketDataSource.d.cts.map +1 -1
  12. package/dist/data-sources/BackendWebsocketDataSource.d.mts +3 -1
  13. package/dist/data-sources/BackendWebsocketDataSource.d.mts.map +1 -1
  14. package/dist/data-sources/BackendWebsocketDataSource.mjs +5 -3
  15. package/dist/data-sources/BackendWebsocketDataSource.mjs.map +1 -1
  16. package/dist/data-sources/RpcDataSource.cjs +16 -8
  17. package/dist/data-sources/RpcDataSource.cjs.map +1 -1
  18. package/dist/data-sources/RpcDataSource.d.cts +4 -3
  19. package/dist/data-sources/RpcDataSource.d.cts.map +1 -1
  20. package/dist/data-sources/RpcDataSource.d.mts +4 -3
  21. package/dist/data-sources/RpcDataSource.d.mts.map +1 -1
  22. package/dist/data-sources/RpcDataSource.mjs +16 -8
  23. package/dist/data-sources/RpcDataSource.mjs.map +1 -1
  24. package/dist/data-sources/TokenDataSource.cjs +16 -10
  25. package/dist/data-sources/TokenDataSource.cjs.map +1 -1
  26. package/dist/data-sources/TokenDataSource.d.cts.map +1 -1
  27. package/dist/data-sources/TokenDataSource.d.mts.map +1 -1
  28. package/dist/data-sources/TokenDataSource.mjs +16 -10
  29. package/dist/data-sources/TokenDataSource.mjs.map +1 -1
  30. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.cjs +8 -0
  31. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.cjs.map +1 -1
  32. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.cts.map +1 -1
  33. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.d.mts.map +1 -1
  34. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.mjs +8 -0
  35. package/dist/data-sources/evm-rpc-services/clients/MulticallClient.mjs.map +1 -1
  36. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.cjs +8 -6
  37. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.cjs.map +1 -1
  38. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.cts +4 -2
  39. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.cts.map +1 -1
  40. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.mts +4 -2
  41. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.mts.map +1 -1
  42. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.mjs +8 -6
  43. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.mjs.map +1 -1
  44. package/dist/utils/formatExchangeRatesForBridge.cjs +10 -8
  45. package/dist/utils/formatExchangeRatesForBridge.cjs.map +1 -1
  46. package/dist/utils/formatExchangeRatesForBridge.d.cts +5 -3
  47. package/dist/utils/formatExchangeRatesForBridge.d.cts.map +1 -1
  48. package/dist/utils/formatExchangeRatesForBridge.d.mts +5 -3
  49. package/dist/utils/formatExchangeRatesForBridge.d.mts.map +1 -1
  50. package/dist/utils/formatExchangeRatesForBridge.mjs +11 -9
  51. package/dist/utils/formatExchangeRatesForBridge.mjs.map +1 -1
  52. package/dist/utils/formatStateForTransactionPay.cjs +8 -6
  53. package/dist/utils/formatStateForTransactionPay.cjs.map +1 -1
  54. package/dist/utils/formatStateForTransactionPay.d.cts +2 -2
  55. package/dist/utils/formatStateForTransactionPay.d.cts.map +1 -1
  56. package/dist/utils/formatStateForTransactionPay.d.mts +2 -2
  57. package/dist/utils/formatStateForTransactionPay.d.mts.map +1 -1
  58. package/dist/utils/formatStateForTransactionPay.mjs +8 -6
  59. package/dist/utils/formatStateForTransactionPay.mjs.map +1 -1
  60. package/dist/utils/index.cjs +4 -1
  61. package/dist/utils/index.cjs.map +1 -1
  62. package/dist/utils/index.d.cts +1 -0
  63. package/dist/utils/index.d.cts.map +1 -1
  64. package/dist/utils/index.d.mts +1 -0
  65. package/dist/utils/index.d.mts.map +1 -1
  66. package/dist/utils/index.mjs +1 -0
  67. package/dist/utils/index.mjs.map +1 -1
  68. package/dist/utils/native-assets.cjs +63 -0
  69. package/dist/utils/native-assets.cjs.map +1 -0
  70. package/dist/utils/native-assets.d.cts +19 -0
  71. package/dist/utils/native-assets.d.cts.map +1 -0
  72. package/dist/utils/native-assets.d.mts +19 -0
  73. package/dist/utils/native-assets.d.mts.map +1 -0
  74. package/dist/utils/native-assets.mjs +58 -0
  75. package/dist/utils/native-assets.mjs.map +1 -0
  76. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -7,14 +7,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [6.1.0]
11
+
12
+ ### Added
13
+
14
+ - Add newly supported chains to multicall contract support in `MulticallClient` ([#8346](https://github.com/MetaMask/core/pull/8346))
15
+ - Tempo Mainnet (`4217`/`0x1079`)
16
+ - Tempo Testnet Moderato (`42431`/`0xa5bf`)
17
+ - Ink Mainnet (`57073`/`0xdef1`)
18
+ - Stable mainnet (`988`/`0x3dc`)
19
+
10
20
  ### Changed
11
21
 
12
- - Bump `@metamask/assets-controllers` from `^104.0.0` to `^104.1.0` ([#8509](https://github.com/MetaMask/core/pull/8509))
22
+ - Bump `@metamask/assets-controllers` from `^104.0.0` to `^104.3.0` ([#8509](https://github.com/MetaMask/core/pull/8509), [#8544](https://github.com/MetaMask/core/pull/8544), [#8559](https://github.com/MetaMask/core/pull/8559))
13
23
  - Bump `@metamask/keyring-api` from `^21.6.0` to `^23.0.1` ([#8464](https://github.com/MetaMask/core/pull/8464))
14
24
  - Bump `@metamask/keyring-internal-api` from `^10.0.0` to `^10.1.1` ([#8464](https://github.com/MetaMask/core/pull/8464))
15
25
  - Bump `@metamask/keyring-snap-client` from `^8.2.0` to `^9.0.1` ([#8464](https://github.com/MetaMask/core/pull/8464))
16
26
  - Bump `@metamask/transaction-controller` from `^64.2.0` to `^64.3.0` ([#8482](https://github.com/MetaMask/core/pull/8482))
17
27
 
28
+ ### Fixed
29
+
30
+ - Native asset detection now correctly identifies native assets across all CAIP-19 representations, not just `slip44:` namespace checks ([#8483](https://github.com/MetaMask/core/pull/8483))
31
+ - Previously, native assets represented as ERC-20 tokens were not recognized as native, causing incorrect token type classification.
32
+ - Exempt mUSD token from EVM ERC-20 minimum-occurrence spam filter so it is no longer incorrectly hidden ([#8541](https://github.com/MetaMask/core/pull/8541))
33
+
18
34
  ## [6.0.0]
19
35
 
20
36
  ### Added
@@ -337,7 +353,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
337
353
  - Refactor `RpcDataSource` to delegate polling to `BalanceFetcher` and `TokenDetector` services ([#7709](https://github.com/MetaMask/core/pull/7709))
338
354
  - Refactor `BalanceFetcher` and `TokenDetector` to extend `StaticIntervalPollingControllerOnly` for independent polling management ([#7709](https://github.com/MetaMask/core/pull/7709))
339
355
 
340
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@6.0.0...HEAD
356
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@6.1.0...HEAD
357
+ [6.1.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@6.0.0...@metamask/assets-controller@6.1.0
341
358
  [6.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@5.0.1...@metamask/assets-controller@6.0.0
342
359
  [5.0.1]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@5.0.0...@metamask/assets-controller@5.0.1
343
360
  [5.0.0]: https://github.com/MetaMask/core/compare/@metamask/assets-controller@4.0.0...@metamask/assets-controller@5.0.0
@@ -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 _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_isBasicFunctionality, _AssetsController_defaultUpdateInterval, _AssetsController_trace, _AssetsController_firstInitFetchReported, _AssetsController_stateSizeReported, _AssetsController_emitTrace, _AssetsController_emitStateSizeTrace, _AssetsController_uiOpen, _AssetsController_keyringUnlocked, _AssetsController_controllerMutex, _AssetsController_activeSubscriptions, _AssetsController_enabledChains, _AssetsController_lastKnownAccountIds, _AssetsController_getSelectedAccounts, _AssetsController_backendWebsocketDataSource, _AssetsController_accountsApiDataSource, _AssetsController_snapDataSource, _AssetsController_rpcDataSource, _AssetsController_stakedBalanceDataSource, _AssetsController_allBalanceDataSources_get, _AssetsController_priceDataSource, _AssetsController_detectionMiddleware, _AssetsController_tokenDataSource, _AssetsController_unsubscribeBasicFunctionality, _AssetsController_onActiveChainsUpdated, _AssetsController_initializeState, _AssetsController_extractEnabledChains, _AssetsController_normalizeChainReference, _AssetsController_subscribeToEvents, _AssetsController_onUnapprovedTransactionAdded, _AssetsController_updateActive, _AssetsController_handleAccountTreeStateChange, _AssetsController_registerActionHandlers, _AssetsController_handleActiveChainsUpdate, _AssetsController_executeMiddlewares, _AssetsController_resolveNativeAssetIds, _AssetsController_getNativeAssetIdsForEnabledChains, _AssetsController_getNativeAssetIdsForAccount, _AssetsController_ensureNativeBalancesDefaultZero, _AssetsController_updateState, _AssetsController_getAssetsFromState, _AssetsController_shouldHideNativeToken, _AssetsController_tokenStandardToAssetType, _AssetsController_start, _AssetsController_stop, _AssetsController_subscribeAssets, _AssetsController_subscribeAssetsBalance, _AssetsController_subscribeStakedBalance, _AssetsController_buildChainToAccountsMap, _AssetsController_subscribeDataSource, _AssetsController_unsubscribeDataSource, _AssetsController_buildDataRequest, _AssetsController_getEnabledChainsForAccount, _AssetsController_handleAccountGroupChanged, _AssetsController_handleEnabledNetworksChanged;
16
+ var _AssetsController_instances, _AssetsController_isEnabled, _AssetsController_isBasicFunctionality, _AssetsController_defaultUpdateInterval, _AssetsController_trace, _AssetsController_firstInitFetchReported, _AssetsController_stateSizeReported, _AssetsController_emitTrace, _AssetsController_emitStateSizeTrace, _AssetsController_uiOpen, _AssetsController_keyringUnlocked, _AssetsController_controllerMutex, _AssetsController_activeSubscriptions, _AssetsController_enabledChains, _AssetsController_lastKnownAccountIds, _AssetsController_getSelectedAccounts, _AssetsController_backendWebsocketDataSource, _AssetsController_accountsApiDataSource, _AssetsController_snapDataSource, _AssetsController_rpcDataSource, _AssetsController_stakedBalanceDataSource, _AssetsController_allBalanceDataSources_get, _AssetsController_priceDataSource, _AssetsController_detectionMiddleware, _AssetsController_tokenDataSource, _AssetsController_unsubscribeBasicFunctionality, _AssetsController_queryApiClient, _AssetsController_onActiveChainsUpdated, _AssetsController_initializeNativeAssetsMap, _AssetsController_initializeState, _AssetsController_extractEnabledChains, _AssetsController_normalizeChainReference, _AssetsController_subscribeToEvents, _AssetsController_onUnapprovedTransactionAdded, _AssetsController_updateActive, _AssetsController_handleAccountTreeStateChange, _AssetsController_registerActionHandlers, _AssetsController_handleActiveChainsUpdate, _AssetsController_executeMiddlewares, _AssetsController_getNativeAssetMap, _AssetsController_isNativeAsset, _AssetsController_resolveNativeAssetIds, _AssetsController_getNativeAssetIdsForEnabledChains, _AssetsController_getNativeAssetIdsForAccount, _AssetsController_ensureNativeBalancesDefaultZero, _AssetsController_updateState, _AssetsController_getAssetsFromState, _AssetsController_shouldHideNativeToken, _AssetsController_tokenStandardToAssetType, _AssetsController_start, _AssetsController_stop, _AssetsController_subscribeAssets, _AssetsController_subscribeAssetsBalance, _AssetsController_subscribeStakedBalance, _AssetsController_buildChainToAccountsMap, _AssetsController_subscribeDataSource, _AssetsController_unsubscribeDataSource, _AssetsController_buildDataRequest, _AssetsController_getEnabledChainsForAccount, _AssetsController_handleAccountGroupChanged, _AssetsController_handleEnabledNetworksChanged;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.AssetsController = exports.getDefaultAssetsControllerState = void 0;
19
19
  const base_controller_1 = require("@metamask/base-controller");
@@ -34,6 +34,8 @@ const logger_1 = require("./logger.cjs");
34
34
  const DetectionMiddleware_1 = require("./middlewares/DetectionMiddleware.cjs");
35
35
  const ParallelMiddleware_1 = require("./middlewares/ParallelMiddleware.cjs");
36
36
  const utils_2 = require("./utils/index.cjs");
37
+ const constants_1 = require("./utils/constants.cjs");
38
+ const NATIVE_ASSETS_QUERY_KEY = ['nativeAssets'];
37
39
  // ============================================================================
38
40
  // CONTROLLER CONSTANTS
39
41
  // ============================================================================
@@ -262,12 +264,15 @@ class AssetsController extends base_controller_1.BaseController {
262
264
  _AssetsController_detectionMiddleware.set(this, void 0);
263
265
  _AssetsController_tokenDataSource.set(this, void 0);
264
266
  _AssetsController_unsubscribeBasicFunctionality.set(this, null);
267
+ _AssetsController_queryApiClient.set(this, void 0);
265
268
  _AssetsController_onActiveChainsUpdated.set(this, void 0);
266
269
  __classPrivateFieldSet(this, _AssetsController_isEnabled, isEnabled(), "f");
267
270
  __classPrivateFieldSet(this, _AssetsController_isBasicFunctionality, isBasicFunctionality ?? (() => true), "f");
268
271
  __classPrivateFieldSet(this, _AssetsController_defaultUpdateInterval, defaultUpdateInterval, "f");
269
272
  __classPrivateFieldSet(this, _AssetsController_trace, trace, "f");
273
+ __classPrivateFieldSet(this, _AssetsController_queryApiClient, queryApiClient, "f");
270
274
  const rpcConfig = rpcDataSourceConfig ?? {};
275
+ __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_initializeNativeAssetsMap).call(this, queryApiClient);
271
276
  __classPrivateFieldSet(this, _AssetsController_onActiveChainsUpdated, (dataSourceName, chains, previousChains) => {
272
277
  try {
273
278
  __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_handleActiveChainsUpdate).call(this, dataSourceName, chains, previousChains);
@@ -283,6 +288,7 @@ class AssetsController extends base_controller_1.BaseController {
283
288
  messenger: this.messenger,
284
289
  queryApiClient,
285
290
  onActiveChainsUpdated: __classPrivateFieldGet(this, _AssetsController_onActiveChainsUpdated, "f"),
291
+ isNativeAsset: (assetId) => __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_isNativeAsset).call(this, assetId),
286
292
  }), "f");
287
293
  __classPrivateFieldSet(this, _AssetsController_accountsApiDataSource, new AccountsApiDataSource_1.AccountsApiDataSource({
288
294
  queryApiClient,
@@ -296,6 +302,8 @@ class AssetsController extends base_controller_1.BaseController {
296
302
  __classPrivateFieldSet(this, _AssetsController_rpcDataSource, new RpcDataSource_1.RpcDataSource({
297
303
  messenger: this.messenger,
298
304
  onActiveChainsUpdated: __classPrivateFieldGet(this, _AssetsController_onActiveChainsUpdated, "f"),
305
+ getNativeAssetForChain: (chainId) => __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetMap).call(this)[chainId] ??
306
+ `${chainId}/erc20:${constants_1.ZERO_ADDRESS}`,
299
307
  ...rpcConfig,
300
308
  isOnboarded: rpcConfig.isOnboarded ?? isOnboarded,
301
309
  }), "f");
@@ -307,8 +315,7 @@ class AssetsController extends base_controller_1.BaseController {
307
315
  __classPrivateFieldSet(this, _AssetsController_tokenDataSource, new TokenDataSource_1.TokenDataSource(this.messenger, {
308
316
  queryApiClient,
309
317
  getNativeAssetIds: () => {
310
- const { nativeAssetIdentifiers } = this.messenger.call('NetworkEnablementController:getState');
311
- return Object.values(nativeAssetIdentifiers);
318
+ return __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetIdsForEnabledChains).call(this);
312
319
  },
313
320
  }), "f");
314
321
  __classPrivateFieldSet(this, _AssetsController_priceDataSource, new PriceDataSource_1.PriceDataSource({
@@ -496,12 +503,12 @@ class AssetsController extends base_controller_1.BaseController {
496
503
  * @returns Bridge-compatible exchange rate state derived from assetsPrice and selectedCurrency.
497
504
  */
498
505
  getExchangeRatesForBridge() {
499
- const { nativeAssetIdentifiers } = this.messenger.call('NetworkEnablementController:getState');
500
506
  const { networkConfigurationsByChainId } = this.messenger.call('NetworkController:getState');
501
507
  return (0, utils_2.formatExchangeRatesForBridge)({
508
+ assetsInfo: this.state.assetsInfo,
502
509
  assetsPrice: this.state.assetsPrice,
503
510
  selectedCurrency: this.state.selectedCurrency,
504
- nativeAssetIdentifiers,
511
+ nativeAssetIdentifiers: __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetMap).call(this),
505
512
  networkConfigurationsByChainId,
506
513
  });
507
514
  }
@@ -516,7 +523,6 @@ class AssetsController extends base_controller_1.BaseController {
516
523
  */
517
524
  getStateForTransactionPay() {
518
525
  const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
519
- const { nativeAssetIdentifiers } = this.messenger.call('NetworkEnablementController:getState');
520
526
  const { networkConfigurationsByChainId } = this.messenger.call('NetworkController:getState');
521
527
  return (0, utils_2.formatStateForTransactionPay)({
522
528
  assetsBalance: this.state.assetsBalance,
@@ -524,7 +530,7 @@ class AssetsController extends base_controller_1.BaseController {
524
530
  assetsPrice: this.state.assetsPrice,
525
531
  selectedCurrency: this.state.selectedCurrency,
526
532
  accounts: accounts.map((a) => ({ id: a.id, address: a.address })),
527
- nativeAssetIdentifiers,
533
+ nativeAssetIdentifiers: __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetMap).call(this),
528
534
  networkConfigurationsByChainId,
529
535
  });
530
536
  }
@@ -568,7 +574,7 @@ class AssetsController extends base_controller_1.BaseController {
568
574
  if (pendingMetadata) {
569
575
  const parsed = (0, utils_1.parseCaipAssetType)(normalizedAssetId);
570
576
  let tokenType = 'erc20';
571
- if (parsed.assetNamespace === 'slip44') {
577
+ if (__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_isNativeAsset).call(this, normalizedAssetId)) {
572
578
  tokenType = 'native';
573
579
  }
574
580
  else if (parsed.assetNamespace === 'spl') {
@@ -844,7 +850,7 @@ class AssetsController extends base_controller_1.BaseController {
844
850
  }
845
851
  }
846
852
  exports.AssetsController = AssetsController;
847
- _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trace = new WeakMap(), _AssetsController_firstInitFetchReported = new WeakMap(), _AssetsController_stateSizeReported = new WeakMap(), _AssetsController_uiOpen = new WeakMap(), _AssetsController_keyringUnlocked = new WeakMap(), _AssetsController_controllerMutex = new WeakMap(), _AssetsController_activeSubscriptions = new WeakMap(), _AssetsController_enabledChains = new WeakMap(), _AssetsController_lastKnownAccountIds = new WeakMap(), _AssetsController_backendWebsocketDataSource = new WeakMap(), _AssetsController_accountsApiDataSource = new WeakMap(), _AssetsController_snapDataSource = new WeakMap(), _AssetsController_rpcDataSource = new WeakMap(), _AssetsController_stakedBalanceDataSource = new WeakMap(), _AssetsController_priceDataSource = new WeakMap(), _AssetsController_detectionMiddleware = new WeakMap(), _AssetsController_tokenDataSource = new WeakMap(), _AssetsController_unsubscribeBasicFunctionality = new WeakMap(), _AssetsController_onActiveChainsUpdated = new WeakMap(), _AssetsController_instances = new WeakSet(), _AssetsController_emitTrace = function _AssetsController_emitTrace(name, data, tags = {
853
+ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctionality = new WeakMap(), _AssetsController_defaultUpdateInterval = new WeakMap(), _AssetsController_trace = new WeakMap(), _AssetsController_firstInitFetchReported = new WeakMap(), _AssetsController_stateSizeReported = new WeakMap(), _AssetsController_uiOpen = new WeakMap(), _AssetsController_keyringUnlocked = new WeakMap(), _AssetsController_controllerMutex = new WeakMap(), _AssetsController_activeSubscriptions = new WeakMap(), _AssetsController_enabledChains = new WeakMap(), _AssetsController_lastKnownAccountIds = new WeakMap(), _AssetsController_backendWebsocketDataSource = new WeakMap(), _AssetsController_accountsApiDataSource = new WeakMap(), _AssetsController_snapDataSource = new WeakMap(), _AssetsController_rpcDataSource = new WeakMap(), _AssetsController_stakedBalanceDataSource = new WeakMap(), _AssetsController_priceDataSource = new WeakMap(), _AssetsController_detectionMiddleware = new WeakMap(), _AssetsController_tokenDataSource = new WeakMap(), _AssetsController_unsubscribeBasicFunctionality = new WeakMap(), _AssetsController_queryApiClient = new WeakMap(), _AssetsController_onActiveChainsUpdated = new WeakMap(), _AssetsController_instances = new WeakSet(), _AssetsController_emitTrace = function _AssetsController_emitTrace(name, data, tags = {
848
854
  controller: 'AssetsController',
849
855
  }) {
850
856
  if (!__classPrivateFieldGet(this, _AssetsController_trace, "f")) {
@@ -907,6 +913,25 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
907
913
  __classPrivateFieldGet(this, _AssetsController_snapDataSource, "f"),
908
914
  __classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f"),
909
915
  ];
916
+ }, _AssetsController_initializeNativeAssetsMap = function _AssetsController_initializeNativeAssetsMap(queryApiClient) {
917
+ queryApiClient.queryClient
918
+ .fetchQuery({
919
+ queryKey: NATIVE_ASSETS_QUERY_KEY,
920
+ queryFn: utils_2.buildNativeAssetsFromApi,
921
+ staleTime: Infinity,
922
+ gcTime: Infinity,
923
+ })
924
+ .catch((error) => {
925
+ // Failure to populate native asset cache is non-fatal;
926
+ // #isNativeAsset falls back to the seed data from buildNativeAssetsFromConstant.
927
+ log('Failed to populate native asset cache, falling back to seed data', error);
928
+ });
929
+ // Seed the cache synchronously so that synchronous consumers (e.g.
930
+ // #isNativeAsset, #resolveNativeAssetIds) have data available immediately.
931
+ // When fetchQuery resolves (currently instant, future: API), it overwrites
932
+ // this with potentially fresher data.
933
+ const initialNativeAssetMap = (0, utils_2.buildNativeAssetsFromConstant)();
934
+ queryApiClient.setCachedData(NATIVE_ASSETS_QUERY_KEY, initialNativeAssetMap);
910
935
  }, _AssetsController_initializeState = function _AssetsController_initializeState() {
911
936
  const { enabledNetworkMap } = this.messenger.call('NetworkEnablementController:getState');
912
937
  __classPrivateFieldSet(this, _AssetsController_enabledChains, __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_extractEnabledChains).call(this, enabledNetworkMap), "f");
@@ -1144,11 +1169,28 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
1144
1169
  });
1145
1170
  }
1146
1171
  return { response: result.response, durationByDataSource };
1172
+ }, _AssetsController_getNativeAssetMap = function _AssetsController_getNativeAssetMap() {
1173
+ return (__classPrivateFieldGet(this, _AssetsController_queryApiClient, "f").getCachedData(NATIVE_ASSETS_QUERY_KEY) ?? {});
1174
+ }, _AssetsController_isNativeAsset = function _AssetsController_isNativeAsset(assetId) {
1175
+ const parsed = (0, utils_1.parseCaipAssetType)(assetId);
1176
+ if (parsed.assetNamespace === 'slip44') {
1177
+ return true;
1178
+ }
1179
+ const lower = assetId.toLowerCase();
1180
+ const isInNativeAssetMap = Object.values(__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetMap).call(this)).some((id) => id.toLowerCase() === lower);
1181
+ if (isInNativeAssetMap) {
1182
+ return true;
1183
+ }
1184
+ if (parsed.assetNamespace === 'erc20' &&
1185
+ parsed.assetReference === constants_1.ZERO_ADDRESS) {
1186
+ return true;
1187
+ }
1188
+ return false;
1147
1189
  }, _AssetsController_resolveNativeAssetIds = function _AssetsController_resolveNativeAssetIds(chains) {
1148
- const { nativeAssetIdentifiers } = this.messenger.call('NetworkEnablementController:getState');
1190
+ const nativeAssetMap = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetMap).call(this);
1149
1191
  const ids = [];
1150
1192
  for (const chainId of chains) {
1151
- const nativeId = nativeAssetIdentifiers?.[chainId];
1193
+ const nativeId = nativeAssetMap[chainId];
1152
1194
  if (nativeId) {
1153
1195
  ids.push(nativeId);
1154
1196
  }
@@ -1366,7 +1408,7 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
1366
1408
  }
1367
1409
  const assetChainId = extractChainId(typedAssetId);
1368
1410
  // Skip native tokens on Tempo networks
1369
- if (__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_shouldHideNativeToken).call(this, assetChainId, typedAssetId, metadata)) {
1411
+ if (__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_shouldHideNativeToken).call(this, assetChainId, metadata)) {
1370
1412
  continue;
1371
1413
  }
1372
1414
  if (!chainIdSet.has(assetChainId)) {
@@ -1402,14 +1444,12 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
1402
1444
  }
1403
1445
  }
1404
1446
  return result;
1405
- }, _AssetsController_shouldHideNativeToken = function _AssetsController_shouldHideNativeToken(chainId, assetId, metadata) {
1447
+ }, _AssetsController_shouldHideNativeToken = function _AssetsController_shouldHideNativeToken(chainId, metadata) {
1406
1448
  // Check if it's a chain that should skip native tokens
1407
1449
  if (!controller_utils_1.CHAIN_IDS_WITH_NO_NATIVE_TOKEN.includes(chainId)) {
1408
1450
  return false;
1409
1451
  }
1410
- // Check if it's a native token (either by metadata type or assetId format)
1411
- const isNative = metadata.type === 'native' || assetId.includes('/slip44:');
1412
- return isNative;
1452
+ return metadata.type === 'native';
1413
1453
  }, _AssetsController_tokenStandardToAssetType = function _AssetsController_tokenStandardToAssetType(tokenStandard) {
1414
1454
  switch (tokenStandard) {
1415
1455
  case 'native':