@metamask-previews/assets-controller 18.0.1-preview-44b7ded21 → 18.0.1-preview-cbae429b5

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 (25) hide show
  1. package/CHANGELOG.md +0 -6
  2. package/dist/AssetsController.d.ts.map +1 -1
  3. package/dist/AssetsController.js +5 -1
  4. package/dist/AssetsController.js.map +1 -1
  5. package/dist/data-sources/RpcDataSource.d.ts +12 -3
  6. package/dist/data-sources/RpcDataSource.d.ts.map +1 -1
  7. package/dist/data-sources/RpcDataSource.js +9 -2
  8. package/dist/data-sources/RpcDataSource.js.map +1 -1
  9. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.ts +61 -0
  10. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.d.ts.map +1 -0
  11. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.js +297 -0
  12. package/dist/data-sources/evm-rpc-services/clients/TokensApiClient.js.map +1 -0
  13. package/dist/data-sources/evm-rpc-services/clients/index.d.ts +1 -0
  14. package/dist/data-sources/evm-rpc-services/clients/index.d.ts.map +1 -1
  15. package/dist/data-sources/evm-rpc-services/clients/index.js +1 -0
  16. package/dist/data-sources/evm-rpc-services/clients/index.js.map +1 -1
  17. package/dist/data-sources/evm-rpc-services/index.d.ts +1 -1
  18. package/dist/data-sources/evm-rpc-services/index.d.ts.map +1 -1
  19. package/dist/data-sources/evm-rpc-services/index.js +1 -1
  20. package/dist/data-sources/evm-rpc-services/index.js.map +1 -1
  21. package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.ts +3 -15
  22. package/dist/data-sources/evm-rpc-services/services/TokenDetector.d.ts.map +1 -1
  23. package/dist/data-sources/evm-rpc-services/services/TokenDetector.js +20 -153
  24. package/dist/data-sources/evm-rpc-services/services/TokenDetector.js.map +1 -1
  25. package/package.json +7 -7
@@ -1,4 +1,3 @@
1
- import type { ApiPlatformClient } from '@metamask/core-backend';
2
1
  import type { InternalAccount } from '@metamask/keyring-internal-api';
3
2
  import type { NetworkControllerGetNetworkClientByIdAction, NetworkControllerGetStateAction, NetworkControllerStateChangeEvent, NetworkStatus } from '@metamask/network-controller';
4
3
  import type { TransactionControllerTransactionConfirmedEvent } from '@metamask/transaction-controller';
@@ -8,6 +7,7 @@ import type { ChainId, Caip19AssetId, AssetsControllerState, DataRequest, DataRe
8
7
  import type { GetAssetVisibility } from '../utils/assetVisibility.js';
9
8
  import { AbstractDataSource } from './AbstractDataSource.js';
10
9
  import type { DataSourceState, SubscriptionRequest } from './AbstractDataSource.js';
10
+ import type { TokenListQueryClient } from './evm-rpc-services/index.js';
11
11
  declare const CONTROLLER_NAME = "RpcDataSource";
12
12
  export type RpcDataSourceAllowedActions = NetworkControllerGetStateAction | NetworkControllerGetNetworkClientByIdAction;
13
13
  export type RpcDataSourceAllowedEvents = NetworkControllerStateChangeEvent | TransactionControllerTransactionConfirmedEvent;
@@ -33,6 +33,12 @@ export type RpcDataSourceConfig = {
33
33
  /** Function returning whether onboarding is complete. When false, fetch and subscribe are no-ops. Defaults to () => true. */
34
34
  isOnboarded?: () => boolean;
35
35
  timeout?: number;
36
+ /**
37
+ * Optional shared TanStack Query client used by `TokensApiClient` to cache
38
+ * token-list responses across detector polls. Pass `apiPlatformClient.queryClient`
39
+ * to share the cache with other API clients in the host app.
40
+ */
41
+ queryClient?: TokenListQueryClient;
36
42
  };
37
43
  export type RpcDataSourceOptions = {
38
44
  /** The AssetsController messenger (shared by all data sources). */
@@ -58,8 +64,11 @@ export type RpcDataSourceOptions = {
58
64
  useExternalService?: () => boolean;
59
65
  /** Function returning whether onboarding is complete. When false, fetch and subscribe are no-ops. Defaults to () => true. */
60
66
  isOnboarded?: () => boolean;
61
- /** ApiPlatformClient for API calls with caching. Token detection uses `token`. */
62
- queryApiClient: ApiPlatformClient;
67
+ /**
68
+ * Optional shared TanStack Query client used by `TokensApiClient` to cache
69
+ * token-list responses across detector polls.
70
+ */
71
+ queryClient?: TokenListQueryClient;
63
72
  /** Returns the asset type ('native' | 'erc20' | 'spl') for the given CAIP-19 asset ID */
64
73
  getAssetType: (assetId: Caip19AssetId) => 'native' | 'erc20' | 'spl';
65
74
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"RpcDataSource.d.ts","sourceRoot":"","sources":["../../src/data-sources/RpcDataSource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RpcDataSource.d.ts","sourceRoot":"","sources":["../../src/data-sources/RpcDataSource.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import { ZERO_ADDRESS } from '../utils/constants.js';
7
7
  import { filterFailedChainBalances } from '../utils/filterFailedChainBalances.js';
8
8
  import { normalizeAssetId } from '../utils/index.js';
9
9
  import { AbstractDataSource } from './AbstractDataSource.js';
10
- import { BalanceFetcher, isStakingContractAssetId, MulticallClient, TokenDetector, } from './evm-rpc-services/index.js';
10
+ import { BalanceFetcher, isStakingContractAssetId, MulticallClient, TokenDetector, TokensApiClient, } from './evm-rpc-services/index.js';
11
11
  import { shouldSkipNativeForCaipChainId } from './evm-rpc-services/utils/assets.js';
12
12
  const CONTROLLER_NAME = 'RpcDataSource';
13
13
  const DEFAULT_BALANCE_INTERVAL = 30_000; // 30 seconds
@@ -127,7 +127,14 @@ export class RpcDataSource extends AbstractDataSource {
127
127
  log('Balance update handler failed', { error });
128
128
  }
129
129
  });
130
- this.#tokenDetector = new TokenDetector(this.#multicallClient, options.queryApiClient.token, {
130
+ // Initialize TokenDetector with polling interval. The TokensApiClient is
131
+ // configured with the shared TanStack Query client (when the controller
132
+ // provides one) so concurrent detector polls/accounts/instances share a
133
+ // single in-flight request and cached result per chain.
134
+ const tokensApiClient = new TokensApiClient({
135
+ queryClient: options.queryClient,
136
+ });
137
+ this.#tokenDetector = new TokenDetector(this.#multicallClient, tokensApiClient, {
131
138
  pollingInterval: detectionInterval,
132
139
  tokenDetectionEnabled: this.#tokenDetectionEnabled,
133
140
  useExternalService: this.#useExternalService,