@metamask-previews/assets-controller 5.0.0-preview-d5ac72227 → 5.0.0-preview-08b3d87

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 (70) hide show
  1. package/CHANGELOG.md +1 -16
  2. package/dist/AssetsController.cjs +29 -76
  3. package/dist/AssetsController.cjs.map +1 -1
  4. package/dist/AssetsController.d.cts +2 -10
  5. package/dist/AssetsController.d.cts.map +1 -1
  6. package/dist/AssetsController.d.mts +2 -10
  7. package/dist/AssetsController.d.mts.map +1 -1
  8. package/dist/AssetsController.mjs +29 -76
  9. package/dist/AssetsController.mjs.map +1 -1
  10. package/dist/data-sources/AccountsApiDataSource.cjs +1 -1
  11. package/dist/data-sources/AccountsApiDataSource.cjs.map +1 -1
  12. package/dist/data-sources/AccountsApiDataSource.d.cts +1 -1
  13. package/dist/data-sources/AccountsApiDataSource.d.cts.map +1 -1
  14. package/dist/data-sources/AccountsApiDataSource.d.mts +1 -1
  15. package/dist/data-sources/AccountsApiDataSource.d.mts.map +1 -1
  16. package/dist/data-sources/AccountsApiDataSource.mjs +1 -1
  17. package/dist/data-sources/AccountsApiDataSource.mjs.map +1 -1
  18. package/dist/data-sources/BackendWebsocketDataSource.cjs +30 -46
  19. package/dist/data-sources/BackendWebsocketDataSource.cjs.map +1 -1
  20. package/dist/data-sources/BackendWebsocketDataSource.d.cts +2 -2
  21. package/dist/data-sources/BackendWebsocketDataSource.d.cts.map +1 -1
  22. package/dist/data-sources/BackendWebsocketDataSource.d.mts +2 -2
  23. package/dist/data-sources/BackendWebsocketDataSource.d.mts.map +1 -1
  24. package/dist/data-sources/BackendWebsocketDataSource.mjs +30 -46
  25. package/dist/data-sources/BackendWebsocketDataSource.mjs.map +1 -1
  26. package/dist/data-sources/PriceDataSource.cjs +1 -1
  27. package/dist/data-sources/PriceDataSource.cjs.map +1 -1
  28. package/dist/data-sources/PriceDataSource.d.cts +1 -1
  29. package/dist/data-sources/PriceDataSource.d.cts.map +1 -1
  30. package/dist/data-sources/PriceDataSource.d.mts +1 -1
  31. package/dist/data-sources/PriceDataSource.d.mts.map +1 -1
  32. package/dist/data-sources/PriceDataSource.mjs +1 -1
  33. package/dist/data-sources/PriceDataSource.mjs.map +1 -1
  34. package/dist/data-sources/RpcDataSource.cjs +4 -14
  35. package/dist/data-sources/RpcDataSource.cjs.map +1 -1
  36. package/dist/data-sources/RpcDataSource.d.cts +2 -6
  37. package/dist/data-sources/RpcDataSource.d.cts.map +1 -1
  38. package/dist/data-sources/RpcDataSource.d.mts +2 -6
  39. package/dist/data-sources/RpcDataSource.d.mts.map +1 -1
  40. package/dist/data-sources/RpcDataSource.mjs +4 -14
  41. package/dist/data-sources/RpcDataSource.mjs.map +1 -1
  42. package/dist/data-sources/SnapDataSource.cjs +1 -1
  43. package/dist/data-sources/SnapDataSource.cjs.map +1 -1
  44. package/dist/data-sources/SnapDataSource.d.cts +2 -2
  45. package/dist/data-sources/SnapDataSource.d.cts.map +1 -1
  46. package/dist/data-sources/SnapDataSource.d.mts +2 -2
  47. package/dist/data-sources/SnapDataSource.d.mts.map +1 -1
  48. package/dist/data-sources/SnapDataSource.mjs +1 -1
  49. package/dist/data-sources/SnapDataSource.mjs.map +1 -1
  50. package/dist/data-sources/StakedBalanceDataSource.cjs +1 -1
  51. package/dist/data-sources/StakedBalanceDataSource.cjs.map +1 -1
  52. package/dist/data-sources/StakedBalanceDataSource.d.cts +2 -2
  53. package/dist/data-sources/StakedBalanceDataSource.d.cts.map +1 -1
  54. package/dist/data-sources/StakedBalanceDataSource.d.mts +2 -2
  55. package/dist/data-sources/StakedBalanceDataSource.d.mts.map +1 -1
  56. package/dist/data-sources/StakedBalanceDataSource.mjs +1 -1
  57. package/dist/data-sources/StakedBalanceDataSource.mjs.map +1 -1
  58. package/dist/data-sources/TokenDataSource.cjs +4 -13
  59. package/dist/data-sources/TokenDataSource.cjs.map +1 -1
  60. package/dist/data-sources/TokenDataSource.d.cts.map +1 -1
  61. package/dist/data-sources/TokenDataSource.d.mts.map +1 -1
  62. package/dist/data-sources/TokenDataSource.mjs +4 -13
  63. package/dist/data-sources/TokenDataSource.mjs.map +1 -1
  64. package/dist/utils/formatStateForTransactionPay.cjs.map +1 -1
  65. package/dist/utils/formatStateForTransactionPay.d.cts +1 -1
  66. package/dist/utils/formatStateForTransactionPay.d.cts.map +1 -1
  67. package/dist/utils/formatStateForTransactionPay.d.mts +1 -1
  68. package/dist/utils/formatStateForTransactionPay.d.mts.map +1 -1
  69. package/dist/utils/formatStateForTransactionPay.mjs.map +1 -1
  70. package/package.json +15 -16
package/CHANGELOG.md CHANGED
@@ -7,27 +7,12 @@ 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
- - Added `isOnboarded` option to `AssetsControllerOptions` and `RpcDataSourceConfig` ([#8430](https://github.com/MetaMask/core/pull/8430))
13
- - When `isOnboarded` returns `false`, `RpcDataSource` skips `fetch` and `subscribe` calls, preventing on-chain RPC calls before onboarding is complete.
14
- - Defaults to `() => true` so existing consumers are unaffected.
15
-
16
10
  ### Changed
17
11
 
18
- - Bump `@metamask/transaction-controller` from `^64.0.0` to `^64.1.0` ([#8432](https://github.com/MetaMask/core/pull/8432))
12
+ - Bump `@metamask/transaction-controller` from `^64.0.0` to `^64.2.0` ([#8432](https://github.com/MetaMask/core/pull/8432), [#8447](https://github.com/MetaMask/core/pull/8447))
19
13
 
20
14
  ### Fixed
21
15
 
22
- - `AssetsController` now re-subscribes to all data sources when `AccountTreeController` state changes after initial startup, ensuring snap accounts and their chains are included ([#8430](https://github.com/MetaMask/core/pull/8430))
23
- - Previously, `#start()` would create subscriptions before snap accounts were available, and its idempotency guard prevented re-subscription when the full account list arrived.
24
- - Added `#handleAccountTreeStateChange()` which forces a full re-subscription and re-fetch when the account tree updates, picking up all accounts including snaps.
25
- - Added `AccountsController:getSelectedAccount` as a fallback in `#getSelectedAccounts()` for when the account tree is not yet initialized.
26
- - `TokenDataSource` no longer filters out user-imported custom assets with the `MIN_TOKEN_OCCURRENCES` spam filter or Blockaid bulk scan ([#8430](https://github.com/MetaMask/core/pull/8430))
27
- - Tokens present in `customAssets` state now bypass the EVM occurrence threshold and non-EVM Blockaid scan, ensuring manually imported assets always appear.
28
- - `BackendWebsocketDataSource` now properly releases chains to `AccountsApiDataSource` when the websocket is disconnected or disabled ([#8430](https://github.com/MetaMask/core/pull/8430))
29
- - Previously, `BackendWebsocketDataSource` eagerly claimed all supported chains on initialization regardless of connection state, preventing `AccountsApiDataSource` from polling.
30
- - Chains are now only claimed when the websocket is connected. On disconnect, chains are released so the chain-claiming loop assigns them to `AccountsApiDataSource` for polling fallback. On reconnect, chains are reclaimed.
31
16
  - `AssetsController` no longer silently skips asset fetching on startup for returning users ([#8412](https://github.com/MetaMask/core/pull/8412))
32
17
  - Previously, `#start()` was called at keyring unlock before `AccountTreeController.init()` had built the account tree, causing `#selectedAccounts` to return an empty array and all subscriptions and fetches to be skipped. `selectedAccountGroupChange` does not fire when the persisted selected group is unchanged, leaving the controller idle.
33
18
  - Now subscribes to `AccountTreeController:stateChange` (the base-controller event guaranteed to fire when `init()` calls `this.update()`), so the controller re-evaluates its active state once accounts are available.
@@ -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_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_selectedAccounts_get, _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_updateActive, _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;
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");
@@ -210,7 +210,7 @@ function normalizeResponse(response) {
210
210
  * - The controller does NOT manage polling - it simply receives pushed updates
211
211
  */
212
212
  class AssetsController extends base_controller_1.BaseController {
213
- constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, isOnboarded, }) {
213
+ constructor({ messenger, state = {}, defaultUpdateInterval = DEFAULT_POLLING_INTERVAL_MS, isEnabled = () => true, isBasicFunctionality, subscribeToBasicFunctionalityChange, queryApiClient, rpcDataSourceConfig, trace, accountsApiDataSourceConfig, priceDataSourceConfig, stakedBalanceDataSourceConfig, }) {
214
214
  super({
215
215
  name: CONTROLLER_NAME,
216
216
  messenger,
@@ -247,12 +247,6 @@ class AssetsController extends base_controller_1.BaseController {
247
247
  _AssetsController_activeSubscriptions.set(this, new Map());
248
248
  /** Currently enabled chains from NetworkEnablementController */
249
249
  _AssetsController_enabledChains.set(this, new Set());
250
- /**
251
- * Snapshot of account IDs that were active when the last subscription/fetch
252
- * cycle ran. Used by #handleAccountTreeStateChange to skip redundant
253
- * re-subscriptions when the account set hasn't actually changed.
254
- */
255
- _AssetsController_lastKnownAccountIds.set(this, new Set());
256
250
  _AssetsController_backendWebsocketDataSource.set(this, void 0);
257
251
  _AssetsController_accountsApiDataSource.set(this, void 0);
258
252
  _AssetsController_snapDataSource.set(this, void 0);
@@ -297,7 +291,6 @@ class AssetsController extends base_controller_1.BaseController {
297
291
  messenger: this.messenger,
298
292
  onActiveChainsUpdated: __classPrivateFieldGet(this, _AssetsController_onActiveChainsUpdated, "f"),
299
293
  ...rpcConfig,
300
- isOnboarded: rpcConfig.isOnboarded ?? isOnboarded,
301
294
  }), "f");
302
295
  __classPrivateFieldSet(this, _AssetsController_stakedBalanceDataSource, new StakedBalanceDataSource_1.StakedBalanceDataSource({
303
296
  messenger: this.messenger,
@@ -515,7 +508,7 @@ class AssetsController extends base_controller_1.BaseController {
515
508
  * @returns Legacy-compatible state for transaction-pay-controller.
516
509
  */
517
510
  getStateForTransactionPay() {
518
- const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
511
+ const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get);
519
512
  const { nativeAssetIdentifiers } = this.messenger.call('NetworkEnablementController:getState');
520
513
  const { networkConfigurationsByChainId } = this.messenger.call('NetworkController:getState');
521
514
  return (0, utils_2.formatStateForTransactionPay)({
@@ -588,7 +581,7 @@ class AssetsController extends base_controller_1.BaseController {
588
581
  }
589
582
  });
590
583
  // Fetch data for the newly added custom asset (merge to preserve other chains)
591
- const account = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this).find((a) => a.id === accountId);
584
+ const account = __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get).find((a) => a.id === accountId);
592
585
  if (account) {
593
586
  const chainId = extractChainId(normalizedAssetId);
594
587
  await this.getAssets([account], {
@@ -687,7 +680,7 @@ class AssetsController extends base_controller_1.BaseController {
687
680
  if (!__classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this)) {
688
681
  return;
689
682
  }
690
- this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this), {
683
+ this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), {
691
684
  forceUpdate: true,
692
685
  dataTypes: ['price'],
693
686
  assetsForPriceUpdate: Object.values(this.state.assetsBalance).flatMap((balances) => Object.keys(balances)),
@@ -712,11 +705,10 @@ class AssetsController extends base_controller_1.BaseController {
712
705
  const subscriptionKey = 'ds:PriceDataSource';
713
706
  const existingSubscription = __classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").get(subscriptionKey);
714
707
  const isUpdate = existingSubscription !== undefined;
715
- const request = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_buildDataRequest).call(this, accounts, chainIds, {
716
- dataTypes: ['price'],
717
- });
718
708
  const subscribeReq = {
719
- request,
709
+ request: __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_buildDataRequest).call(this, accounts, chainIds, {
710
+ dataTypes: ['price'],
711
+ }),
720
712
  subscriptionId: subscriptionKey,
721
713
  isUpdate,
722
714
  onAssetsUpdate: (response) => this.handleAssetsUpdate(response, 'PriceDataSource'),
@@ -844,7 +836,7 @@ class AssetsController extends base_controller_1.BaseController {
844
836
  }
845
837
  }
846
838
  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 = {
839
+ _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_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 = {
848
840
  controller: 'AssetsController',
849
841
  }) {
850
842
  if (!__classPrivateFieldGet(this, _AssetsController_trace, "f")) {
@@ -890,16 +882,8 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
890
882
  price_entries: Object.keys(assetsPrice).length,
891
883
  custom_asset_entries: customAssetEntries,
892
884
  });
893
- }, _AssetsController_getSelectedAccounts = function _AssetsController_getSelectedAccounts() {
894
- const accounts = this.messenger.call('AccountTreeController:getAccountsFromSelectedAccountGroup');
895
- if (accounts.length > 0) {
896
- return accounts;
897
- }
898
- const selectedAccount = this.messenger.call('AccountsController:getSelectedAccount');
899
- if (selectedAccount) {
900
- return [selectedAccount];
901
- }
902
- return [];
885
+ }, _AssetsController_selectedAccounts_get = function _AssetsController_selectedAccounts_get() {
886
+ return this.messenger.call('AccountTreeController:getAccountsFromSelectedAccountGroup');
903
887
  }, _AssetsController_allBalanceDataSources_get = function _AssetsController_allBalanceDataSources_get() {
904
888
  return [
905
889
  __classPrivateFieldGet(this, _AssetsController_backendWebsocketDataSource, "f"),
@@ -952,7 +936,7 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
952
936
  // when init() calls this.update(). #start() is idempotent so
953
937
  // repeated fires are safe.
954
938
  this.messenger.subscribe('AccountTreeController:stateChange', () => {
955
- __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_handleAccountTreeStateChange).call(this);
939
+ __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_updateActive).call(this);
956
940
  });
957
941
  // Subscribe to network enablement changes (only enabledNetworkMap)
958
942
  this.messenger.subscribe('NetworkEnablementController:stateChange', ({ enabledNetworkMap }) => {
@@ -979,36 +963,6 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
979
963
  else {
980
964
  __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_stop).call(this);
981
965
  }
982
- }, _AssetsController_handleAccountTreeStateChange = function _AssetsController_handleAccountTreeStateChange() {
983
- const shouldRun = __classPrivateFieldGet(this, _AssetsController_uiOpen, "f") && __classPrivateFieldGet(this, _AssetsController_keyringUnlocked, "f");
984
- if (!shouldRun) {
985
- return;
986
- }
987
- if (__classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").size > 0) {
988
- const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
989
- const currentIds = new Set(accounts.map((a) => a.id));
990
- const accountsChanged = currentIds.size !== __classPrivateFieldGet(this, _AssetsController_lastKnownAccountIds, "f").size ||
991
- [...currentIds].some((id) => !__classPrivateFieldGet(this, _AssetsController_lastKnownAccountIds, "f").has(id));
992
- if (!accountsChanged) {
993
- return;
994
- }
995
- log('Account tree changed with new accounts, re-subscribing', {
996
- previousCount: __classPrivateFieldGet(this, _AssetsController_lastKnownAccountIds, "f").size,
997
- currentCount: currentIds.size,
998
- });
999
- __classPrivateFieldSet(this, _AssetsController_lastKnownAccountIds, currentIds, "f");
1000
- __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
1001
- __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_ensureNativeBalancesDefaultZero).call(this);
1002
- this.getAssets(accounts, {
1003
- chainIds: [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")],
1004
- forceUpdate: true,
1005
- }).catch((error) => {
1006
- log('Failed to fetch assets after tree change', error);
1007
- });
1008
- }
1009
- else {
1010
- __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_start).call(this);
1011
- }
1012
966
  }, _AssetsController_registerActionHandlers = function _AssetsController_registerActionHandlers() {
1013
967
  this.messenger.registerMethodActionHandlers(this, MESSENGER_EXPOSED_METHODS);
1014
968
  }, _AssetsController_handleActiveChainsUpdate = function _AssetsController_handleActiveChainsUpdate(dataSourceId, activeChains, previousChains) {
@@ -1029,11 +983,11 @@ _AssetsController_isEnabled = new WeakMap(), _AssetsController_isBasicFunctional
1029
983
  __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
1030
984
  }
1031
985
  // If chains were added and we have selected accounts, do one-time fetch
1032
- if (addedChains.length > 0 && __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this).length > 0) {
986
+ if (addedChains.length > 0 && __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get).length > 0) {
1033
987
  const addedEnabledChains = addedChains.filter((chain) => __classPrivateFieldGet(this, _AssetsController_enabledChains, "f").has(chain));
1034
988
  if (addedEnabledChains.length > 0) {
1035
989
  log('Fetching balances for newly added chains', { addedEnabledChains });
1036
- this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this), {
990
+ this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), {
1037
991
  chainIds: addedEnabledChains,
1038
992
  forceUpdate: true,
1039
993
  updateMode: 'merge',
@@ -1132,7 +1086,7 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
1132
1086
  }, _AssetsController_getNativeAssetIdsForAccount = function _AssetsController_getNativeAssetIdsForAccount(account) {
1133
1087
  return __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_resolveNativeAssetIds).call(this, __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getEnabledChainsForAccount).call(this, account));
1134
1088
  }, _AssetsController_ensureNativeBalancesDefaultZero = function _AssetsController_ensureNativeBalancesDefaultZero() {
1135
- const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
1089
+ const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get);
1136
1090
  if (accounts.length === 0) {
1137
1091
  return;
1138
1092
  }
@@ -1221,7 +1175,7 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
1221
1175
  return next;
1222
1176
  })();
1223
1177
  // Ensure native tokens have an entry (0 if missing) for chains this account supports
1224
- const account = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this).find((a) => a.id === accountId);
1178
+ const account = __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get).find((a) => a.id === accountId);
1225
1179
  const nativeAssetIdsForAccount = account
1226
1180
  ? __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetIdsForAccount).call(this, account)
1227
1181
  : __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getNativeAssetIdsForEnabledChains).call(this);
@@ -1399,7 +1353,7 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
1399
1353
  return 'fungible';
1400
1354
  }
1401
1355
  }, _AssetsController_start = function _AssetsController_start() {
1402
- const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
1356
+ const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get);
1403
1357
  const chainIds = [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")];
1404
1358
  if (accounts.length === 0 || chainIds.length === 0) {
1405
1359
  return;
@@ -1411,7 +1365,6 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
1411
1365
  selectedAccountCount: accounts.length,
1412
1366
  enabledChainCount: chainIds.length,
1413
1367
  });
1414
- __classPrivateFieldSet(this, _AssetsController_lastKnownAccountIds, new Set(accounts.map((a) => a.id)), "f");
1415
1368
  __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
1416
1369
  __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_ensureNativeBalancesDefaultZero).call(this);
1417
1370
  this.getAssets(accounts, {
@@ -1427,7 +1380,6 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
1427
1380
  });
1428
1381
  __classPrivateFieldSet(this, _AssetsController_firstInitFetchReported, false, "f");
1429
1382
  __classPrivateFieldSet(this, _AssetsController_stateSizeReported, false, "f");
1430
- __classPrivateFieldSet(this, _AssetsController_lastKnownAccountIds, new Set(), "f");
1431
1383
  // Stop price subscription first (uses direct messenger call)
1432
1384
  this.unsubscribeAssetsPrice();
1433
1385
  // Stop balance subscriptions by properly notifying data sources via messenger
@@ -1450,21 +1402,23 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
1450
1402
  }
1451
1403
  __classPrivateFieldGet(this, _AssetsController_activeSubscriptions, "f").clear();
1452
1404
  }, _AssetsController_subscribeAssets = function _AssetsController_subscribeAssets() {
1453
- const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
1454
- const enabledChains = [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")];
1455
- if (accounts.length === 0 || enabledChains.length === 0) {
1405
+ if (__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get).length === 0 || __classPrivateFieldGet(this, _AssetsController_enabledChains, "f").size === 0) {
1456
1406
  return;
1457
1407
  }
1458
1408
  // Subscribe to balance updates (batched by data source)
1459
- __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssetsBalance).call(this, accounts, enabledChains);
1409
+ __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssetsBalance).call(this, __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), [
1410
+ ...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f"),
1411
+ ]);
1460
1412
  // Subscribe to staked balance updates (separate from regular balance chain-claiming)
1461
- __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeStakedBalance).call(this, accounts, enabledChains);
1413
+ __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeStakedBalance).call(this, __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), [
1414
+ ...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f"),
1415
+ ]);
1462
1416
  // Subscribe to price updates for all assets held by selected accounts
1463
- this.subscribeAssetsPrice(accounts, enabledChains);
1417
+ this.subscribeAssetsPrice(__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), [...__classPrivateFieldGet(this, _AssetsController_enabledChains, "f")]);
1464
1418
  }, _AssetsController_subscribeAssetsBalance = function _AssetsController_subscribeAssetsBalance(accounts, chainIds) {
1465
1419
  const chainToAccounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_buildChainToAccountsMap).call(this, accounts, new Set(chainIds));
1466
1420
  const remainingChains = new Set(chainToAccounts.keys());
1467
- // When basic functionality is on, use all balance data sources; when off, RPC only.
1421
+ // When basic functionality is on (getter true), use all balance data sources; when off (getter false), RPC only.
1468
1422
  const balanceDataSources = __classPrivateFieldGet(this, _AssetsController_isBasicFunctionality, "f").call(this)
1469
1423
  ? __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_allBalanceDataSources_get)
1470
1424
  : [__classPrivateFieldGet(this, _AssetsController_rpcDataSource, "f")];
@@ -1612,12 +1566,11 @@ async function _AssetsController_executeMiddlewares(sources, request, initialRes
1612
1566
  // EVENT HANDLERS
1613
1567
  // ============================================================================
1614
1568
  async function _AssetsController_handleAccountGroupChanged() {
1615
- const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this);
1569
+ const accounts = __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get);
1616
1570
  log('Account group changed', {
1617
1571
  accountCount: accounts.length,
1618
1572
  accountIds: accounts.map((a) => a.id),
1619
1573
  });
1620
- __classPrivateFieldSet(this, _AssetsController_lastKnownAccountIds, new Set(accounts.map((a) => a.id)), "f");
1621
1574
  // Subscribe and fetch for the new account group
1622
1575
  __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
1623
1576
  if (accounts.length > 0) {
@@ -1656,8 +1609,8 @@ async function _AssetsController_handleAccountGroupChanged() {
1656
1609
  // Refresh subscriptions for new chain set
1657
1610
  __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_subscribeAssets).call(this);
1658
1611
  // Do one-time fetch for newly enabled chains; merge so we keep existing chain balances
1659
- if (addedChains.length > 0 && __classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this).length > 0) {
1660
- await this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "m", _AssetsController_getSelectedAccounts).call(this), {
1612
+ if (addedChains.length > 0 && __classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get).length > 0) {
1613
+ await this.getAssets(__classPrivateFieldGet(this, _AssetsController_instances, "a", _AssetsController_selectedAccounts_get), {
1661
1614
  chainIds: addedChains,
1662
1615
  forceUpdate: true,
1663
1616
  updateMode: 'merge',