@metamask-previews/assets-controller 6.0.0-preview-5e99f980f → 6.0.0-preview-42c8fd288

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 (54) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/AssetsController.cjs +49 -12
  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 +49 -12
  7. package/dist/AssetsController.mjs.map +1 -1
  8. package/dist/data-sources/BackendWebsocketDataSource.cjs +2 -1
  9. package/dist/data-sources/BackendWebsocketDataSource.cjs.map +1 -1
  10. package/dist/data-sources/BackendWebsocketDataSource.d.cts.map +1 -1
  11. package/dist/data-sources/BackendWebsocketDataSource.d.mts.map +1 -1
  12. package/dist/data-sources/BackendWebsocketDataSource.mjs +2 -1
  13. package/dist/data-sources/BackendWebsocketDataSource.mjs.map +1 -1
  14. package/dist/data-sources/RpcDataSource.cjs +8 -5
  15. package/dist/data-sources/RpcDataSource.cjs.map +1 -1
  16. package/dist/data-sources/RpcDataSource.d.cts +3 -2
  17. package/dist/data-sources/RpcDataSource.d.cts.map +1 -1
  18. package/dist/data-sources/RpcDataSource.d.mts +3 -2
  19. package/dist/data-sources/RpcDataSource.d.mts.map +1 -1
  20. package/dist/data-sources/RpcDataSource.mjs +8 -5
  21. package/dist/data-sources/RpcDataSource.mjs.map +1 -1
  22. package/dist/data-sources/TokenDataSource.cjs +8 -6
  23. package/dist/data-sources/TokenDataSource.cjs.map +1 -1
  24. package/dist/data-sources/TokenDataSource.d.cts.map +1 -1
  25. package/dist/data-sources/TokenDataSource.d.mts.map +1 -1
  26. package/dist/data-sources/TokenDataSource.mjs +8 -6
  27. package/dist/data-sources/TokenDataSource.mjs.map +1 -1
  28. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.cjs +4 -3
  29. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.cjs.map +1 -1
  30. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.cts.map +1 -1
  31. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.d.mts.map +1 -1
  32. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.mjs +4 -3
  33. package/dist/data-sources/evm-rpc-services/services/BalanceFetcher.mjs.map +1 -1
  34. package/dist/utils/formatExchangeRatesForBridge.cjs +9 -6
  35. package/dist/utils/formatExchangeRatesForBridge.cjs.map +1 -1
  36. package/dist/utils/formatExchangeRatesForBridge.d.cts.map +1 -1
  37. package/dist/utils/formatExchangeRatesForBridge.d.mts.map +1 -1
  38. package/dist/utils/formatExchangeRatesForBridge.mjs +10 -7
  39. package/dist/utils/formatExchangeRatesForBridge.mjs.map +1 -1
  40. package/dist/utils/formatStateForTransactionPay.cjs +7 -4
  41. package/dist/utils/formatStateForTransactionPay.cjs.map +1 -1
  42. package/dist/utils/formatStateForTransactionPay.d.cts.map +1 -1
  43. package/dist/utils/formatStateForTransactionPay.d.mts.map +1 -1
  44. package/dist/utils/formatStateForTransactionPay.mjs +7 -4
  45. package/dist/utils/formatStateForTransactionPay.mjs.map +1 -1
  46. package/dist/utils/isNativeAsset.cjs +39 -0
  47. package/dist/utils/isNativeAsset.cjs.map +1 -0
  48. package/dist/utils/isNativeAsset.d.cts +16 -0
  49. package/dist/utils/isNativeAsset.d.cts.map +1 -0
  50. package/dist/utils/isNativeAsset.d.mts +16 -0
  51. package/dist/utils/isNativeAsset.d.mts.map +1 -0
  52. package/dist/utils/isNativeAsset.mjs +35 -0
  53. package/dist/utils/isNativeAsset.mjs.map +1 -0
  54. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Added
11
+
12
+ - Add `isNativeAsset` utility that centralizes native asset detection across all CAIP-19 representations (`slip44:` namespace, known native asset IDs from `SPOT_PRICES_SUPPORT_INFO`, and `erc20:` with zero address) ([#8483](https://github.com/MetaMask/core/pull/8483))
13
+
10
14
  ### Changed
11
15
 
12
16
  - Bump `@metamask/assets-controllers` from `^104.0.0` to `^104.1.0` ([#8509](https://github.com/MetaMask/core/pull/8509))
@@ -15,6 +19,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
15
19
  - Bump `@metamask/keyring-snap-client` from `^8.2.0` to `^9.0.1` ([#8464](https://github.com/MetaMask/core/pull/8464))
16
20
  - Bump `@metamask/transaction-controller` from `^64.2.0` to `^64.3.0` ([#8482](https://github.com/MetaMask/core/pull/8482))
17
21
 
22
+ ### Fixed
23
+
24
+ - Native asset detection now correctly identifies native assets across all CAIP-19 representations, not just `slip44:` namespace checks ([#TBD](https://github.com/MetaMask/core/pull/TBD))
25
+ - Previously, native assets represented as ERC-20 tokens (e.g., Polygon's POL at `0x…1010`) were not recognized as native, causing incorrect token type classification, balance handling, and missing entries in bridge exchange rates and transaction pay legacy formats.
26
+ - Legacy format conversions (bridge exchange rates and transaction pay) now use the correct chain-specific native token address via `getNativeTokenAddress()` instead of always using the zero address ([#TBD](https://github.com/MetaMask/core/pull/TBD))
27
+
18
28
  ## [6.0.0]
19
29
 
20
30
  ### Added
@@ -13,9 +13,10 @@ 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_initializeState, _AssetsController_extractEnabledChains, _AssetsController_normalizeChainReference, _AssetsController_subscribeToEvents, _AssetsController_onUnapprovedTransactionAdded, _AssetsController_updateActive, _AssetsController_handleAccountTreeStateChange, _AssetsController_registerActionHandlers, _AssetsController_handleActiveChainsUpdate, _AssetsController_executeMiddlewares, _AssetsController_getNativeAssetMap, _AssetsController_getKnownNativeAssetIds, _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
+ const assets_controllers_1 = require("@metamask/assets-controllers");
19
20
  const base_controller_1 = require("@metamask/base-controller");
20
21
  const client_controller_1 = require("@metamask/client-controller");
21
22
  const controller_utils_1 = require("@metamask/controller-utils");
@@ -34,6 +35,8 @@ const logger_1 = require("./logger.cjs");
34
35
  const DetectionMiddleware_1 = require("./middlewares/DetectionMiddleware.cjs");
35
36
  const ParallelMiddleware_1 = require("./middlewares/ParallelMiddleware.cjs");
36
37
  const utils_2 = require("./utils/index.cjs");
38
+ const isNativeAsset_1 = require("./utils/isNativeAsset.cjs");
39
+ const NATIVE_ASSETS_QUERY_KEY = ['nativeAssets'];
37
40
  // ============================================================================
38
41
  // CONTROLLER CONSTANTS
39
42
  // ============================================================================
@@ -262,12 +265,43 @@ class AssetsController extends base_controller_1.BaseController {
262
265
  _AssetsController_detectionMiddleware.set(this, void 0);
263
266
  _AssetsController_tokenDataSource.set(this, void 0);
264
267
  _AssetsController_unsubscribeBasicFunctionality.set(this, null);
268
+ _AssetsController_queryApiClient.set(this, void 0);
265
269
  _AssetsController_onActiveChainsUpdated.set(this, void 0);
266
270
  __classPrivateFieldSet(this, _AssetsController_isEnabled, isEnabled(), "f");
267
271
  __classPrivateFieldSet(this, _AssetsController_isBasicFunctionality, isBasicFunctionality ?? (() => true), "f");
268
272
  __classPrivateFieldSet(this, _AssetsController_defaultUpdateInterval, defaultUpdateInterval, "f");
269
273
  __classPrivateFieldSet(this, _AssetsController_trace, trace, "f");
274
+ __classPrivateFieldSet(this, _AssetsController_queryApiClient, queryApiClient, "f");
270
275
  const rpcConfig = rpcDataSourceConfig ?? {};
276
+ queryApiClient.queryClient
277
+ .fetchQuery({
278
+ queryKey: NATIVE_ASSETS_QUERY_KEY,
279
+ queryFn: async () => {
280
+ // Today: build from constant. Tomorrow: replace body with API call.
281
+ const map = {};
282
+ for (const nativeAssetId of Object.values(assets_controllers_1.SPOT_PRICES_SUPPORT_INFO)) {
283
+ const { chainId } = (0, utils_1.parseCaipAssetType)(nativeAssetId);
284
+ map[chainId] = nativeAssetId;
285
+ }
286
+ return map;
287
+ },
288
+ staleTime: Infinity,
289
+ gcTime: Infinity,
290
+ })
291
+ .catch(() => {
292
+ // Failure to populate native asset cache is non-fatal;
293
+ // isNativeAsset falls back to SPOT_PRICES_SUPPORT_INFO heuristics.
294
+ });
295
+ // Seed the cache synchronously so that synchronous consumers (e.g.
296
+ // isNativeAsset, #resolveNativeAssetIds) have data available immediately.
297
+ // When fetchQuery resolves (currently instant, future: API), it overwrites
298
+ // this with potentially fresher data.
299
+ const initialNativeAssetMap = {};
300
+ for (const nativeAssetId of Object.values(assets_controllers_1.SPOT_PRICES_SUPPORT_INFO)) {
301
+ const { chainId } = (0, utils_1.parseCaipAssetType)(nativeAssetId);
302
+ initialNativeAssetMap[chainId] = nativeAssetId;
303
+ }
304
+ queryApiClient.setCachedData(NATIVE_ASSETS_QUERY_KEY, initialNativeAssetMap);
271
305
  __classPrivateFieldSet(this, _AssetsController_onActiveChainsUpdated, (dataSourceName, chains, previousChains) => {
272
306
  try {
273
307
  __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_handleActiveChainsUpdate).call(this, dataSourceName, chains, previousChains);
@@ -296,6 +330,7 @@ class AssetsController extends base_controller_1.BaseController {
296
330
  __classPrivateFieldSet(this, _AssetsController_rpcDataSource, new RpcDataSource_1.RpcDataSource({
297
331
  messenger: this.messenger,
298
332
  onActiveChainsUpdated: __classPrivateFieldGet(this, _AssetsController_onActiveChainsUpdated, "f"),
333
+ getNativeAssetForChain: (chainId) => __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetMap).call(this)[chainId],
299
334
  ...rpcConfig,
300
335
  isOnboarded: rpcConfig.isOnboarded ?? isOnboarded,
301
336
  }), "f");
@@ -307,8 +342,7 @@ class AssetsController extends base_controller_1.BaseController {
307
342
  __classPrivateFieldSet(this, _AssetsController_tokenDataSource, new TokenDataSource_1.TokenDataSource(this.messenger, {
308
343
  queryApiClient,
309
344
  getNativeAssetIds: () => {
310
- const { nativeAssetIdentifiers } = this.messenger.call('NetworkEnablementController:getState');
311
- return Object.values(nativeAssetIdentifiers);
345
+ return Object.values(__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetMap).call(this));
312
346
  },
313
347
  }), "f");
314
348
  __classPrivateFieldSet(this, _AssetsController_priceDataSource, new PriceDataSource_1.PriceDataSource({
@@ -496,12 +530,11 @@ class AssetsController extends base_controller_1.BaseController {
496
530
  * @returns Bridge-compatible exchange rate state derived from assetsPrice and selectedCurrency.
497
531
  */
498
532
  getExchangeRatesForBridge() {
499
- const { nativeAssetIdentifiers } = this.messenger.call('NetworkEnablementController:getState');
500
533
  const { networkConfigurationsByChainId } = this.messenger.call('NetworkController:getState');
501
534
  return (0, utils_2.formatExchangeRatesForBridge)({
502
535
  assetsPrice: this.state.assetsPrice,
503
536
  selectedCurrency: this.state.selectedCurrency,
504
- nativeAssetIdentifiers,
537
+ nativeAssetIdentifiers: __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetMap).call(this),
505
538
  networkConfigurationsByChainId,
506
539
  });
507
540
  }
@@ -516,7 +549,6 @@ class AssetsController extends base_controller_1.BaseController {
516
549
  */
517
550
  getStateForTransactionPay() {
518
551
  const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
519
- const { nativeAssetIdentifiers } = this.messenger.call('NetworkEnablementController:getState');
520
552
  const { networkConfigurationsByChainId } = this.messenger.call('NetworkController:getState');
521
553
  return (0, utils_2.formatStateForTransactionPay)({
522
554
  assetsBalance: this.state.assetsBalance,
@@ -524,7 +556,7 @@ class AssetsController extends base_controller_1.BaseController {
524
556
  assetsPrice: this.state.assetsPrice,
525
557
  selectedCurrency: this.state.selectedCurrency,
526
558
  accounts: accounts.map((a) => ({ id: a.id, address: a.address })),
527
- nativeAssetIdentifiers,
559
+ nativeAssetIdentifiers: __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetMap).call(this),
528
560
  networkConfigurationsByChainId,
529
561
  });
530
562
  }
@@ -568,7 +600,7 @@ class AssetsController extends base_controller_1.BaseController {
568
600
  if (pendingMetadata) {
569
601
  const parsed = (0, utils_1.parseCaipAssetType)(normalizedAssetId);
570
602
  let tokenType = 'erc20';
571
- if (parsed.assetNamespace === 'slip44') {
603
+ if ((0, isNativeAsset_1.isNativeAsset)(normalizedAssetId, __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getKnownNativeAssetIds).call(this))) {
572
604
  tokenType = 'native';
573
605
  }
574
606
  else if (parsed.assetNamespace === 'spl') {
@@ -844,7 +876,7 @@ class AssetsController extends base_controller_1.BaseController {
844
876
  }
845
877
  }
846
878
  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 = {
879
+ _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
880
  controller: 'AssetsController',
849
881
  }) {
850
882
  if (!__classPrivateFieldGet(this, _AssetsController_trace, "f")) {
@@ -1144,11 +1176,15 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
1144
1176
  });
1145
1177
  }
1146
1178
  return { response: result.response, durationByDataSource };
1179
+ }, _AssetsController_getNativeAssetMap = function _AssetsController_getNativeAssetMap() {
1180
+ return (__classPrivateFieldGet(this, _AssetsController_queryApiClient, "f").getCachedData(NATIVE_ASSETS_QUERY_KEY) ?? {});
1181
+ }, _AssetsController_getKnownNativeAssetIds = function _AssetsController_getKnownNativeAssetIds() {
1182
+ return new Set(Object.values(__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetMap).call(this)).map((id) => id.toLowerCase()));
1147
1183
  }, _AssetsController_resolveNativeAssetIds = function _AssetsController_resolveNativeAssetIds(chains) {
1148
- const { nativeAssetIdentifiers } = this.messenger.call('NetworkEnablementController:getState');
1184
+ const nativeAssetMap = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetMap).call(this);
1149
1185
  const ids = [];
1150
1186
  for (const chainId of chains) {
1151
- const nativeId = nativeAssetIdentifiers?.[chainId];
1187
+ const nativeId = nativeAssetMap[chainId];
1152
1188
  if (nativeId) {
1153
1189
  ids.push(nativeId);
1154
1190
  }
@@ -1408,7 +1444,8 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
1408
1444
  return false;
1409
1445
  }
1410
1446
  // Check if it's a native token (either by metadata type or assetId format)
1411
- const isNative = metadata.type === 'native' || assetId.includes('/slip44:');
1447
+ const isNative = metadata.type === 'native' ||
1448
+ (0, isNativeAsset_1.isNativeAsset)(assetId, __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getKnownNativeAssetIds).call(this));
1412
1449
  return isNative;
1413
1450
  }, _AssetsController_tokenStandardToAssetType = function _AssetsController_tokenStandardToAssetType(tokenStandard) {
1414
1451
  switch (tokenStandard) {