@metamask-previews/core-backend 13.0.0-preview-d4ac59b6e → 13.0.0-preview-c3d36da85

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.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,18 @@ 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 `TokenApiClient.fetchV2Assets` and `getV2AssetsQueryOptions` for Token API `GET /v2/assets`, supporting `includeLaunchpadData` and `includeTokenSecurityData`, along with `V2AssetResponse` and `V2AssetsQueryOptions` types ([#11251](https://github.com/MetaMask/core/pull/11251))
13
+ - Add optional `subscriptionNamespace` to `OHLCVService` so callers can select the WebSocket channel namespace (default: `ohlcv.v1`) ([#11249](https://github.com/MetaMask/core/pull/11249))
14
+
15
+ ### Changed
16
+
17
+ - **BREAKING:** `OHLCVService` WebSocket channels now use the `ohlcv.v1` namespace instead of `market-data.v1` ([#11249](https://github.com/MetaMask/core/pull/11249))
18
+ - Channel strings change from `market-data.v1.<assetId>.<interval>.<currency>` to `ohlcv.v1.<assetId>.<interval>.<currency>`, and system notifications move to `system-notifications.v1.ohlcv.v1`.
19
+ - Pass `subscriptionNamespace: 'market-data.v1'` when constructing `OHLCVService` to keep the previous stream until `ohlcv.v1` is available in production.
20
+ - Bump `uuid` from `^14.0.0` to `^14.0.1` ([#11179](https://github.com/MetaMask/core/pull/11179))
21
+
10
22
  ## [13.0.0]
11
23
 
12
24
  ### Added
@@ -9,7 +9,7 @@ export type { V5BalanceItem, V5BalancesResponse, V2BalanceItem, V2BalancesRespon
9
9
  export { PricesApiClient } from './prices/index.js';
10
10
  export type { V3SpotPricesResponse, CoinGeckoSpotPrice, ExchangeRateInfo, V1ExchangeRatesResponse, PriceSupportedNetworksResponse, PriceV1SupportedNetworksResponse, PriceV2SupportedNetworksResponse, V1HistoricalPricesResponse, V3HistoricalPricesResponse, } from './prices/index.js';
11
11
  export { TokenApiClient } from './token/index.js';
12
- export type { TokenMetadata, TokenListQueryOptions, TokenV2SupportedNetworksResponse, V1TokenDescriptionResponse, NetworkInfo, TopAsset, TrendingSortBy, TrendingToken, TopGainersSortOption, TrendingSortOption, V1SuggestedOccurrenceFloorsResponse, } from './token/index.js';
12
+ export type { TokenMetadata, TokenListQueryOptions, TokenV2SupportedNetworksResponse, V1TokenDescriptionResponse, NetworkInfo, TopAsset, TrendingSortBy, TrendingToken, TopGainersSortOption, TrendingSortOption, V1SuggestedOccurrenceFloorsResponse, V2AssetResponse, V2AssetsQueryOptions, } from './token/index.js';
13
13
  export { TokensApiClient } from './tokens/index.js';
14
14
  export type { V1TokenSupportedNetworksResponse, V2TokenSupportedNetworksResponse, V3AssetResponse, } from './tokens/index.js';
15
15
  export { BaseApiClient } from './base-client.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,OAAO,EACP,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,0BAA0B,EAC1B,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,WAAW,EACX,SAAS,GACV,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAChF,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,6BAA6B,EAC7B,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,2BAA2B,EAC3B,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,6BAA6B,EAC7B,kCAAkC,EAClC,aAAa,EACb,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,kCAAkC,EAClC,sCAAsC,EACtC,aAAa,EACb,2BAA2B,EAC3B,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACvB,8BAA8B,EAC9B,gCAAgC,EAChC,gCAAgC,EAChC,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,gCAAgC,EAChC,0BAA0B,EAC1B,WAAW,EACX,QAAQ,EACR,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,mCAAmC,GACpC,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EACV,gCAAgC,EAChC,gCAAgC,EAChC,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAG7D,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,OAAO,EACP,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,0BAA0B,EAC1B,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,WAAW,EACX,SAAS,GACV,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAChF,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,6BAA6B,EAC7B,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,2BAA2B,EAC3B,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,6BAA6B,EAC7B,kCAAkC,EAClC,aAAa,EACb,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,kCAAkC,EAClC,sCAAsC,EACtC,aAAa,EACb,2BAA2B,EAC3B,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACvB,8BAA8B,EAC9B,gCAAgC,EAChC,gCAAgC,EAChC,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,gCAAgC,EAChC,0BAA0B,EAC1B,WAAW,EACX,QAAQ,EACR,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,mCAAmC,EACnC,eAAe,EACf,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EACV,gCAAgC,EAChC,gCAAgC,EAChC,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAG7D,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,0BAA0B,EAC1B,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,WAAW,EACX,SAAS,GACV,MAAM,mBAAmB,CAAC;AAE3B,eAAe;AACf,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAqChF,aAAa;AACb,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAapD,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAelD,aAAa;AACb,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAOpD,cAAc;AACd,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,uCAAuC;AACvC,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC","sourcesContent":["/**\n * API barrel export.\n * Re-exports all types and clients from the API folder.\n */\n\n// Shared types and utilities\nexport type {\n PageInfo,\n SupportedCurrency,\n MarketDataDetails,\n ApiPlatformClientOptions,\n ApiUrls,\n FetchOptions,\n} from './shared-types.js';\nexport {\n API_URLS,\n STALE_TIMES,\n GC_TIMES,\n DEFAULT_AUTH_TOKEN_TIMEOUT,\n RETRY_CONFIG,\n calculateRetryDelay,\n getQueryOptionsOverrides,\n shouldRetry,\n HttpError,\n} from './shared-types.js';\n\n// Accounts API\nexport { AccountsApiClient, V6_DEFI_POSITION_TYPES } from './accounts/index.js';\nexport type {\n V5BalanceItem,\n V5BalancesResponse,\n V2BalanceItem,\n V2BalancesResponse,\n V4BalancesResponse,\n V6VsCurrency,\n V6DeFiPositionType,\n V6BalanceMetadata,\n V6StellarTokenBalanceMetadata,\n V6TokenBalanceMetadata,\n V6BalanceItem,\n V6BalancesResponse,\n V1SupportedNetworksResponse,\n V2SupportedNetworksResponse,\n V2ActiveNetworksResponse,\n V1TransactionByHashResponse,\n V1AccountTransactionsResponse,\n V4MultiAccountTransactionsResponse,\n V5Transaction,\n V5TransactionValueTransfer,\n V5TransactionMiscOperation,\n V5TransactionFeeAsset,\n V5TransactionFee,\n V5TransactionLog,\n V5TransactionRecord,\n V5MultiAccountTransactionsResponse,\n V5MultiAccountTransactionsQueryOptions,\n ValueTransfer,\n V1AccountRelationshipResult,\n NftItem,\n V2NftsResponse,\n TokenDiscoveryItem,\n V2TokensResponse,\n} from './accounts/index.js';\n\n// Prices API\nexport { PricesApiClient } from './prices/index.js';\nexport type {\n V3SpotPricesResponse,\n CoinGeckoSpotPrice,\n ExchangeRateInfo,\n V1ExchangeRatesResponse,\n PriceSupportedNetworksResponse,\n PriceV1SupportedNetworksResponse,\n PriceV2SupportedNetworksResponse,\n V1HistoricalPricesResponse,\n V3HistoricalPricesResponse,\n} from './prices/index.js';\n\n// Token API\nexport { TokenApiClient } from './token/index.js';\nexport type {\n TokenMetadata,\n TokenListQueryOptions,\n TokenV2SupportedNetworksResponse,\n V1TokenDescriptionResponse,\n NetworkInfo,\n TopAsset,\n TrendingSortBy,\n TrendingToken,\n TopGainersSortOption,\n TrendingSortOption,\n V1SuggestedOccurrenceFloorsResponse,\n} from './token/index.js';\n\n// Tokens API\nexport { TokensApiClient } from './tokens/index.js';\nexport type {\n V1TokenSupportedNetworksResponse,\n V2TokenSupportedNetworksResponse,\n V3AssetResponse,\n} from './tokens/index.js';\n\n// Base client\nexport { BaseApiClient } from './base-client.js';\nexport type { InternalFetchOptions } from './base-client.js';\n\n// API Platform Client (unified client)\nexport {\n ApiPlatformClient,\n createApiPlatformClient,\n} from './ApiPlatformClient.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,0BAA0B,EAC1B,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,WAAW,EACX,SAAS,GACV,MAAM,mBAAmB,CAAC;AAE3B,eAAe;AACf,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAqChF,aAAa;AACb,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAapD,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAiBlD,aAAa;AACb,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAOpD,cAAc;AACd,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,uCAAuC;AACvC,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC","sourcesContent":["/**\n * API barrel export.\n * Re-exports all types and clients from the API folder.\n */\n\n// Shared types and utilities\nexport type {\n PageInfo,\n SupportedCurrency,\n MarketDataDetails,\n ApiPlatformClientOptions,\n ApiUrls,\n FetchOptions,\n} from './shared-types.js';\nexport {\n API_URLS,\n STALE_TIMES,\n GC_TIMES,\n DEFAULT_AUTH_TOKEN_TIMEOUT,\n RETRY_CONFIG,\n calculateRetryDelay,\n getQueryOptionsOverrides,\n shouldRetry,\n HttpError,\n} from './shared-types.js';\n\n// Accounts API\nexport { AccountsApiClient, V6_DEFI_POSITION_TYPES } from './accounts/index.js';\nexport type {\n V5BalanceItem,\n V5BalancesResponse,\n V2BalanceItem,\n V2BalancesResponse,\n V4BalancesResponse,\n V6VsCurrency,\n V6DeFiPositionType,\n V6BalanceMetadata,\n V6StellarTokenBalanceMetadata,\n V6TokenBalanceMetadata,\n V6BalanceItem,\n V6BalancesResponse,\n V1SupportedNetworksResponse,\n V2SupportedNetworksResponse,\n V2ActiveNetworksResponse,\n V1TransactionByHashResponse,\n V1AccountTransactionsResponse,\n V4MultiAccountTransactionsResponse,\n V5Transaction,\n V5TransactionValueTransfer,\n V5TransactionMiscOperation,\n V5TransactionFeeAsset,\n V5TransactionFee,\n V5TransactionLog,\n V5TransactionRecord,\n V5MultiAccountTransactionsResponse,\n V5MultiAccountTransactionsQueryOptions,\n ValueTransfer,\n V1AccountRelationshipResult,\n NftItem,\n V2NftsResponse,\n TokenDiscoveryItem,\n V2TokensResponse,\n} from './accounts/index.js';\n\n// Prices API\nexport { PricesApiClient } from './prices/index.js';\nexport type {\n V3SpotPricesResponse,\n CoinGeckoSpotPrice,\n ExchangeRateInfo,\n V1ExchangeRatesResponse,\n PriceSupportedNetworksResponse,\n PriceV1SupportedNetworksResponse,\n PriceV2SupportedNetworksResponse,\n V1HistoricalPricesResponse,\n V3HistoricalPricesResponse,\n} from './prices/index.js';\n\n// Token API\nexport { TokenApiClient } from './token/index.js';\nexport type {\n TokenMetadata,\n TokenListQueryOptions,\n TokenV2SupportedNetworksResponse,\n V1TokenDescriptionResponse,\n NetworkInfo,\n TopAsset,\n TrendingSortBy,\n TrendingToken,\n TopGainersSortOption,\n TrendingSortOption,\n V1SuggestedOccurrenceFloorsResponse,\n V2AssetResponse,\n V2AssetsQueryOptions,\n} from './token/index.js';\n\n// Tokens API\nexport { TokensApiClient } from './tokens/index.js';\nexport type {\n V1TokenSupportedNetworksResponse,\n V2TokenSupportedNetworksResponse,\n V3AssetResponse,\n} from './tokens/index.js';\n\n// Base client\nexport { BaseApiClient } from './base-client.js';\nexport type { InternalFetchOptions } from './base-client.js';\n\n// API Platform Client (unified client)\nexport {\n ApiPlatformClient,\n createApiPlatformClient,\n} from './ApiPlatformClient.js';\n"]}
@@ -10,11 +10,12 @@
10
10
  * - Top gainers/popular tokens
11
11
  * - Top assets
12
12
  * - Occurrence floors
13
+ * - Assets (v2)
13
14
  */
14
15
  import type { FetchQueryOptions } from '@tanstack/query-core';
15
16
  import { BaseApiClient } from '../base-client.js';
16
17
  import type { FetchOptions } from '../shared-types.js';
17
- import type { TokenMetadata, TokenListQueryOptions, TokenV2SupportedNetworksResponse, V1TokenDescriptionResponse, NetworkInfo, TopAsset, TrendingToken, TrendingSortOption, TopGainersSortOption, V1SuggestedOccurrenceFloorsResponse } from './types.js';
18
+ import type { TokenMetadata, TokenListQueryOptions, TokenV2SupportedNetworksResponse, V1TokenDescriptionResponse, NetworkInfo, TopAsset, TrendingToken, TrendingSortOption, TopGainersSortOption, V1SuggestedOccurrenceFloorsResponse, V2AssetResponse, V2AssetsQueryOptions } from './types.js';
18
19
  /**
19
20
  * Token API Client.
20
21
  * Provides methods for interacting with the Token API.
@@ -334,5 +335,24 @@ export declare class TokenApiClient extends BaseApiClient {
334
335
  * @returns The suggested occurrence floors response.
335
336
  */
336
337
  fetchV1SuggestedOccurrenceFloors(options?: FetchOptions): Promise<V1SuggestedOccurrenceFloorsResponse>;
338
+ /**
339
+ * Returns the TanStack Query options object for v2 assets.
340
+ *
341
+ * @param assetIds - Array of CAIP-19 asset IDs.
342
+ * @param queryOptions - Query options to include additional data in response.
343
+ * @param options - Fetch options including cache settings.
344
+ * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.
345
+ */
346
+ getV2AssetsQueryOptions(assetIds: string[], queryOptions?: V2AssetsQueryOptions, options?: FetchOptions): FetchQueryOptions<V2AssetResponse[]>;
347
+ /**
348
+ * Fetch assets by IDs (v2) with caching. Unlike the Tokens API v3 endpoint,
349
+ * this supports `includeLaunchpadData` and `includeTokenSecurityData`.
350
+ *
351
+ * @param assetIds - Array of CAIP-19 asset IDs.
352
+ * @param queryOptions - Query options to include additional data in response.
353
+ * @param options - Fetch options including cache settings.
354
+ * @returns Array of asset responses.
355
+ */
356
+ fetchV2Assets(assetIds: string[], queryOptions?: V2AssetsQueryOptions, options?: FetchOptions): Promise<V2AssetResponse[]>;
337
357
  }
338
358
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/token/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/api/token/client.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@
10
10
  * - Top gainers/popular tokens
11
11
  * - Top assets
12
12
  * - Occurrence floors
13
+ * - Assets (v2)
13
14
  */
14
15
  import { BaseApiClient, STALE_TIMES, GC_TIMES } from '../base-client.js';
15
16
  import { getQueryOptionsOverrides } from '../shared-types.js';
@@ -501,5 +502,43 @@ export class TokenApiClient extends BaseApiClient {
501
502
  async fetchV1SuggestedOccurrenceFloors(options) {
502
503
  return this.queryClient.fetchQuery(this.getV1SuggestedOccurrenceFloorsQueryOptions(options));
503
504
  }
505
+ // ==========================================================================
506
+ // ASSETS (V2)
507
+ // ==========================================================================
508
+ /**
509
+ * Returns the TanStack Query options object for v2 assets.
510
+ *
511
+ * @param assetIds - Array of CAIP-19 asset IDs.
512
+ * @param queryOptions - Query options to include additional data in response.
513
+ * @param options - Fetch options including cache settings.
514
+ * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.
515
+ */
516
+ getV2AssetsQueryOptions(assetIds, queryOptions, options) {
517
+ return {
518
+ queryKey: ['token', 'v2Assets', { assetIds, options: queryOptions }],
519
+ queryFn: ({ signal }) => this.fetch(this.apiUrls.TOKEN, '/v2/assets', {
520
+ signal,
521
+ params: { assetIds, ...queryOptions },
522
+ }),
523
+ ...getQueryOptionsOverrides(options),
524
+ staleTime: options?.staleTime ?? STALE_TIMES.TOKEN_METADATA,
525
+ gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,
526
+ };
527
+ }
528
+ /**
529
+ * Fetch assets by IDs (v2) with caching. Unlike the Tokens API v3 endpoint,
530
+ * this supports `includeLaunchpadData` and `includeTokenSecurityData`.
531
+ *
532
+ * @param assetIds - Array of CAIP-19 asset IDs.
533
+ * @param queryOptions - Query options to include additional data in response.
534
+ * @param options - Fetch options including cache settings.
535
+ * @returns Array of asset responses.
536
+ */
537
+ async fetchV2Assets(assetIds, queryOptions, options) {
538
+ if (assetIds.length === 0) {
539
+ return [];
540
+ }
541
+ return this.queryClient.fetchQuery(this.getV2AssetsQueryOptions(assetIds, queryOptions, options));
542
+ }
504
543
  }
505
544
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/api/token/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAe9D;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,aAAa;IAC/C,6EAA6E;IAC7E,mBAAmB;IACnB,6EAA6E;IAE7E;;;;OAIG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;YACvC,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,WAAW;IACX,6EAA6E;IAE7E;;;;;OAKG;IACH,uBAAuB,CACrB,OAAsB;QAEtB,OAAO;YACL,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;YAC/B,OAAO,EAAE,CAAC,EAAE,MAAM,EAAwB,EAAE,EAAE,CAC5C,IAAI,CAAC,KAAK,CAAgB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC;YACxE,GAAG,wBAAwB,CAAC,OAAO,CAAC;YACpC,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,kBAAkB;YAC/D,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,QAAQ;SAC7C,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,OAAsB;QACxC,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;;OAMG;IACH,+BAA+B,CAC7B,OAAe,EACf,OAAsB;QAEtB,OAAO;YACL,QAAQ,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC;YAChD,OAAO,EAAE,CAAC,EAAE,MAAM,EAAwB,EAAE,EAAE,CAC5C,IAAI,CAAC,KAAK,CAAc,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,OAAO,EAAE,EAAE;gBAClE,MAAM;aACP,CAAC;YACJ,GAAG,wBAAwB,CAAC,OAAO,CAAC;YACpC,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,kBAAkB;YAC/D,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,QAAQ;SAC7C,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,qBAAqB,CACzB,OAAe,EACf,OAAsB;QAEtB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAChC,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,OAAO,CAAC,CACvD,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,aAAa;IACb,6EAA6E;IAE7E;;;;;;;OAOG;IACH,wBAAwB,CACtB,OAAe,EACf,YAAoC,EACpC,OAAsB;QAEtB,OAAO;YACL,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;YACpE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAwB,EAAE,EAAE,CAC5C,IAAI,CAAC,KAAK,CAAkB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,OAAO,EAAE,EAAE;gBACpE,MAAM;gBACN,MAAM,EAAE;oBACN,eAAe,EAAE,YAAY,EAAE,eAAe;oBAC9C,mBAAmB,EAAE,YAAY,EAAE,mBAAmB;oBACtD,gBAAgB,EAAE,YAAY,EAAE,gBAAgB;oBAChD,gBAAgB,EAAE,YAAY,EAAE,gBAAgB;oBAChD,kBAAkB,EAAE,YAAY,EAAE,kBAAkB;oBACpD,kBAAkB,EAAE,YAAY,EAAE,kBAAkB;oBACpD,kBAAkB,EAAE,YAAY,EAAE,kBAAkB;oBACpD,cAAc,EAAE,YAAY,EAAE,cAAc;oBAC5C,cAAc,EAAE,YAAY,EAAE,cAAc;oBAC5C,cAAc,EAAE,YAAY,EAAE,cAAc;oBAC5C,WAAW,EAAE,YAAY,EAAE,WAAW;oBACtC,cAAc,EAAE,YAAY,EAAE,cAAc;iBAC7C;aACF,CAAC;YACJ,GAAG,wBAAwB,CAAC,OAAO,CAAC;YACpC,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,UAAU;YACvD,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,QAAQ;SAC7C,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,cAAc,CAClB,OAAe,EACf,YAAoC,EACpC,OAAsB;QAEtB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAChC,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAC9D,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,kCAAkC,CAChC,OAAsB;QAEtB,OAAO;YACL,QAAQ,EAAE,CAAC,OAAO,EAAE,qBAAqB,CAAC;YAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,EAAwB,EAAE,EAAE,CAC5C,IAAI,CAAC,KAAK,CACR,IAAI,CAAC,OAAO,CAAC,KAAK,EAClB,uBAAuB,EACvB,EAAE,MAAM,EAAE,CACX;YACH,GAAG,wBAAwB,CAAC,OAAO,CAAC;YACpC,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,kBAAkB;YAC/D,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,QAAQ;SAC7C,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,wBAAwB,CAC5B,OAAsB;QAEtB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAChC,IAAI,CAAC,kCAAkC,CAAC,OAAO,CAAC,CACjD,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,iBAAiB;IACjB,6EAA6E;IAE7E;;;;;;;;;;;;;;;;;OAiBG;IACH,8BAA8B,CAC5B,OAAe,EACf,YAAoB,EACpB,YAUC,EACD,OAAsB;QAEtB,OAAO;YACL,QAAQ,EAAE;gBACR,OAAO;gBACP,YAAY;gBACZ,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE;aACjD;YACD,OAAO,EAAE,KAAK,EAAE,EACd,MAAM,GACe,EAA0B,EAAE;gBACjD,OAAO,IAAI,CAAC,KAAK,CACf,IAAI,CAAC,OAAO,CAAC,KAAK,EAClB,UAAU,OAAO,EAAE,EACnB;oBACE,MAAM;oBACN,MAAM,EAAE;wBACN,OAAO,EAAE,YAAY;wBACrB,gBAAgB,EAAE,YAAY,EAAE,gBAAgB;wBAChD,gBAAgB,EAAE,YAAY,EAAE,gBAAgB;wBAChD,kBAAkB,EAAE,YAAY,EAAE,kBAAkB;wBACpD,kBAAkB,EAAE,YAAY,EAAE,kBAAkB;wBACpD,kBAAkB,EAAE,YAAY,EAAE,kBAAkB;wBACpD,cAAc,EAAE,YAAY,EAAE,cAAc;wBAC5C,cAAc,EAAE,YAAY,EAAE,cAAc;wBAC5C,cAAc,EAAE,YAAY,EAAE,cAAc;wBAC5C,WAAW,EAAE,YAAY,EAAE,WAAW;qBACvC;iBACF,CACF,CAAC;YACJ,CAAC;YACD,GAAG,wBAAwB,CAAC,OAAO,CAAC;YACpC,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,cAAc;YAC3D,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,QAAQ;SAC7C,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,oBAAoB,CACxB,OAAe,EACf,YAAoB,EACpB,YAUC,EACD,OAAsB;QAEtB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CACtC,IAAI,CAAC,8BAA8B,CACjC,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,OAAO,CACR,CACF,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,+BAA+B,CAC7B,OAAe,EACf,YAAoB,EACpB,OAAsB;QAEtB,OAAO;YACL,QAAQ,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,YAAY,CAAC;YAC9D,OAAO,EAAE,KAAK,EAAE,EACd,MAAM,GACe,EAAuC,EAAE,CAC9D,IAAI,CAAC,KAAK,CACR,IAAI,CAAC,OAAO,CAAC,KAAK,EAClB,UAAU,OAAO,cAAc,EAC/B;gBACE,MAAM;gBACN,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;aAClC,CACF;YACH,GAAG,wBAAwB,CAAC,OAAO,CAAC;YACpC,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,cAAc;YAC3D,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,QAAQ;SAC7C,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,qBAAqB,CACzB,OAAe,EACf,YAAoB,EACpB,OAAsB;QAEtB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CACtC,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CACrE,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,wBAAwB;IACxB,6EAA6E;IAE7E;;;;;;;;;;;;;;OAcG;IACH,+BAA+B,CAC7B,QAAkB,EAClB,YAQC,EACD,OAAsB;QAEtB,OAAO;YACL,QAAQ,EAAE;gBACR,OAAO;gBACP,YAAY;gBACZ,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;aAC1D;YACD,OAAO,EAAE,CAAC,EAAE,MAAM,EAAwB,EAAE,EAAE,CAC5C,IAAI,CAAC,KAAK,CAAkB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,qBAAqB,EAAE;gBACrE,MAAM;gBACN,MAAM,EAAE;oBACN,QAAQ;oBACR,IAAI,EAAE,YAAY,EAAE,MAAM;oBAC1B,YAAY,EAAE,YAAY,EAAE,YAAY;oBACxC,eAAe,EAAE,YAAY,EAAE,eAAe;oBAC9C,eAAe,EAAE,YAAY,EAAE,eAAe;oBAC9C,YAAY,EAAE,YAAY,EAAE,YAAY;oBACxC,YAAY,EAAE,YAAY,EAAE,YAAY;oBACxC,wBAAwB,EAAE,YAAY,EAAE,wBAAwB;iBACjE;aACF,CAAC;YACJ,GAAG,wBAAwB,CAAC,OAAO,CAAC;YACpC,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,QAAQ;YACrD,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,KAAK;SAC1C,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,qBAAqB,CACzB,QAAkB,EAClB,YAQC,EACD,OAAsB;QAEtB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAChC,IAAI,CAAC,+BAA+B,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,CACtE,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,2BAA2B,CACzB,QAAkB,EAClB,YAQC,EACD,OAAsB;QAEtB,OAAO;YACL,QAAQ,EAAE;gBACR,OAAO;gBACP,cAAc;gBACd,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;aAC1D;YACD,OAAO,EAAE,CAAC,EAAE,MAAM,EAAwB,EAAE,EAAE,CAC5C,IAAI,CAAC,KAAK,CACR,IAAI,CAAC,OAAO,CAAC,KAAK,EAClB,wBAAwB,EACxB;gBACE,MAAM;gBACN,MAAM,EAAE;oBACN,QAAQ;oBACR,IAAI,EAAE,YAAY,EAAE,IAAI;oBACxB,WAAW,EAAE,YAAY,EAAE,WAAW;oBACtC,YAAY,EAAE,YAAY,EAAE,YAAY;oBACxC,eAAe,EAAE,YAAY,EAAE,eAAe;oBAC9C,eAAe,EAAE,YAAY,EAAE,eAAe;oBAC9C,YAAY,EAAE,YAAY,EAAE,YAAY;oBACxC,YAAY,EAAE,YAAY,EAAE,YAAY;iBACzC;aACF,CACF;YACH,GAAG,wBAAwB,CAAC,OAAO,CAAC;YACpC,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,QAAQ;YACrD,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,KAAK;SAC1C,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,iBAAiB,CACrB,QAAkB,EAClB,YAQC,EACD,OAAsB;QAEtB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAChC,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,CAClE,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,8BAA8B,CAC5B,QAAkB,EAClB,YAOC,EACD,OAAsB;QAEtB,OAAO;YACL,QAAQ,EAAE;gBACR,OAAO;gBACP,WAAW;gBACX,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;aAC1D;YACD,OAAO,EAAE,CAAC,EAAE,MAAM,EAAwB,EAAE,EAAE,CAC5C,IAAI,CAAC,KAAK,CAAkB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,oBAAoB,EAAE;gBACpE,MAAM;gBACN,MAAM,EAAE;oBACN,QAAQ;oBACR,WAAW,EAAE,YAAY,EAAE,WAAW;oBACtC,YAAY,EAAE,YAAY,EAAE,YAAY;oBACxC,eAAe,EAAE,YAAY,EAAE,eAAe;oBAC9C,eAAe,EAAE,YAAY,EAAE,eAAe;oBAC9C,YAAY,EAAE,YAAY,EAAE,YAAY;oBACxC,YAAY,EAAE,YAAY,EAAE,YAAY;iBACzC;aACF,CAAC;YACJ,GAAG,wBAAwB,CAAC,OAAO,CAAC;YACpC,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,QAAQ;YACrD,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,KAAK;SAC1C,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,oBAAoB,CACxB,QAAkB,EAClB,YAOC,EACD,OAAsB;QAEtB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAChC,IAAI,CAAC,8BAA8B,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,CACrE,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,aAAa;IACb,6EAA6E;IAE7E;;;;;;OAMG;IACH,wBAAwB,CACtB,OAAe,EACf,OAAsB;QAEtB,OAAO;YACL,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC;YACzC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAwB,EAAE,EAAE,CAC5C,IAAI,CAAC,KAAK,CAAa,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,OAAO,EAAE,EAAE;gBAClE,MAAM;aACP,CAAC;YACJ,GAAG,wBAAwB,CAAC,OAAO,CAAC;YACpC,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,QAAQ;YACrD,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,KAAK;SAC1C,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,cAAc,CAClB,OAAe,EACf,OAAsB;QAEtB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAChC,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,CAChD,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,UAAU;IACV,6EAA6E;IAE7E;;;;;OAKG;IACH,0CAA0C,CACxC,OAAsB;QAEtB,OAAO;YACL,QAAQ,EAAE,CAAC,OAAO,EAAE,6BAA6B,CAAC;YAClD,OAAO,EAAE,CAAC,EAAE,MAAM,EAAwB,EAAE,EAAE,CAC5C,IAAI,CAAC,KAAK,CACR,IAAI,CAAC,OAAO,CAAC,KAAK,EAClB,+BAA+B,EAC/B,EAAE,MAAM,EAAE,CACX;YACH,GAAG,wBAAwB,CAAC,OAAO,CAAC;YACpC,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,WAAW,CAAC,kBAAkB;YAC/D,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,QAAQ;SAC7C,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,gCAAgC,CACpC,OAAsB;QAEtB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAChC,IAAI,CAAC,0CAA0C,CAAC,OAAO,CAAC,CACzD,CAAC;IACJ,CAAC;CACF","sourcesContent":["/**\n * Token API Client - token.api.cx.metamask.io\n *\n * Handles all token-related API calls including:\n * - Networks\n * - Token lists\n * - Token metadata\n * - Token descriptions\n * - Trending tokens\n * - Top gainers/popular tokens\n * - Top assets\n * - Occurrence floors\n */\n\nimport type {\n FetchQueryOptions,\n QueryFunctionContext,\n} from '@tanstack/query-core';\n\nimport { BaseApiClient, STALE_TIMES, GC_TIMES } from '../base-client.js';\nimport { getQueryOptionsOverrides } from '../shared-types.js';\nimport type { FetchOptions } from '../shared-types.js';\nimport type {\n TokenMetadata,\n TokenListQueryOptions,\n TokenV2SupportedNetworksResponse,\n V1TokenDescriptionResponse,\n NetworkInfo,\n TopAsset,\n TrendingToken,\n TrendingSortOption,\n TopGainersSortOption,\n V1SuggestedOccurrenceFloorsResponse,\n} from './types.js';\n\n/**\n * Token API Client.\n * Provides methods for interacting with the Token API.\n */\nexport class TokenApiClient extends BaseApiClient {\n // ==========================================================================\n // CACHE MANAGEMENT\n // ==========================================================================\n\n /**\n * Invalidate all token API queries.\n * Note: This only invalidates queries from token.api.cx.metamask.io,\n * not from tokens.api.cx.metamask.io (use TokensApiClient.invalidateTokens() for that).\n */\n async invalidateToken(): Promise<void> {\n await this.queryClient.invalidateQueries({\n queryKey: ['token'],\n });\n }\n\n // ==========================================================================\n // NETWORKS\n // ==========================================================================\n\n /**\n * Returns the TanStack Query options object for networks.\n *\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getNetworksQueryOptions(\n options?: FetchOptions,\n ): FetchQueryOptions<NetworkInfo[]> {\n return {\n queryKey: ['token', 'networks'],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<NetworkInfo[]>(this.apiUrls.TOKEN, '/networks', { signal }),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.SUPPORTED_NETWORKS,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n };\n }\n\n /**\n * Get all networks.\n *\n * @param options - Fetch options including cache settings.\n * @returns Array of network info.\n */\n async fetchNetworks(options?: FetchOptions): Promise<NetworkInfo[]> {\n return this.queryClient.fetchQuery(this.getNetworksQueryOptions(options));\n }\n\n /**\n * Returns the TanStack Query options object for network by chain ID.\n *\n * @param chainId - The chain ID.\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getNetworkByChainIdQueryOptions(\n chainId: number,\n options?: FetchOptions,\n ): FetchQueryOptions<NetworkInfo> {\n return {\n queryKey: ['token', 'networkByChainId', chainId],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<NetworkInfo>(this.apiUrls.TOKEN, `/networks/${chainId}`, {\n signal,\n }),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.SUPPORTED_NETWORKS,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n };\n }\n\n /**\n * Get network by chain ID.\n *\n * @param chainId - The chain ID.\n * @param options - Fetch options including cache settings.\n * @returns The network info.\n */\n async fetchNetworkByChainId(\n chainId: number,\n options?: FetchOptions,\n ): Promise<NetworkInfo> {\n return this.queryClient.fetchQuery(\n this.getNetworkByChainIdQueryOptions(chainId, options),\n );\n }\n\n // ==========================================================================\n // TOKEN LIST\n // ==========================================================================\n\n /**\n * Returns the TanStack Query options object for token list.\n *\n * @param chainId - The chain ID.\n * @param queryOptions - Query options forwarded to `GET /tokens/{chainId}`.\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getTokenListQueryOptions(\n chainId: number,\n queryOptions?: TokenListQueryOptions,\n options?: FetchOptions,\n ): FetchQueryOptions<TokenMetadata[]> {\n return {\n queryKey: ['token', 'tokenList', { chainId, options: queryOptions }],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<TokenMetadata[]>(this.apiUrls.TOKEN, `/tokens/${chainId}`, {\n signal,\n params: {\n occurrenceFloor: queryOptions?.occurrenceFloor,\n includeNativeAssets: queryOptions?.includeNativeAssets,\n includeTokenFees: queryOptions?.includeTokenFees,\n includeAssetType: queryOptions?.includeAssetType,\n includeAggregators: queryOptions?.includeAggregators,\n includeERC20Permit: queryOptions?.includeERC20Permit,\n includeOccurrences: queryOptions?.includeOccurrences,\n includeStorage: queryOptions?.includeStorage,\n includeIconUrl: queryOptions?.includeIconUrl,\n includeAddress: queryOptions?.includeAddress,\n includeName: queryOptions?.includeName,\n includeRwaData: queryOptions?.includeRwaData,\n },\n }),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.TOKEN_LIST,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n };\n }\n\n /**\n * Get token list for a chain.\n *\n * @param chainId - The chain ID.\n * @param queryOptions - Query options forwarded to `GET /tokens/{chainId}`.\n * @param options - Fetch options including cache settings.\n * @returns Array of token metadata.\n */\n async fetchTokenList(\n chainId: number,\n queryOptions?: TokenListQueryOptions,\n options?: FetchOptions,\n ): Promise<TokenMetadata[]> {\n return this.queryClient.fetchQuery(\n this.getTokenListQueryOptions(chainId, queryOptions, options),\n );\n }\n\n /**\n * Returns the TanStack Query options object for v2 supported networks.\n *\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getV2SupportedNetworksQueryOptions(\n options?: FetchOptions,\n ): FetchQueryOptions<TokenV2SupportedNetworksResponse> {\n return {\n queryKey: ['token', 'v2SupportedNetworks'],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<TokenV2SupportedNetworksResponse>(\n this.apiUrls.TOKEN,\n '/v2/supportedNetworks',\n { signal },\n ),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.SUPPORTED_NETWORKS,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n };\n }\n\n /**\n * Get CAIP chain IDs supported by the Token API (`GET /v2/supportedNetworks`).\n *\n * @param options - Fetch options including cache settings.\n * @returns Full and partial support chain IDs.\n */\n async fetchV2SupportedNetworks(\n options?: FetchOptions,\n ): Promise<TokenV2SupportedNetworksResponse> {\n return this.queryClient.fetchQuery(\n this.getV2SupportedNetworksQueryOptions(options),\n );\n }\n\n // ==========================================================================\n // TOKEN METADATA\n // ==========================================================================\n\n /**\n * Returns the TanStack Query options object for v1 token metadata.\n *\n * @param chainId - The chain ID.\n * @param tokenAddress - The token address.\n * @param queryOptions - Query options.\n * @param queryOptions.includeTokenFees - Whether to include token fees.\n * @param queryOptions.includeAssetType - Whether to include asset type.\n * @param queryOptions.includeAggregators - Whether to include aggregators.\n * @param queryOptions.includeERC20Permit - Whether to include ERC20 permit.\n * @param queryOptions.includeOccurrences - Whether to include occurrences.\n * @param queryOptions.includeStorage - Whether to include storage.\n * @param queryOptions.includeIconUrl - Whether to include icon URL.\n * @param queryOptions.includeAddress - Whether to include address.\n * @param queryOptions.includeName - Whether to include name.\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getV1TokenMetadataQueryOptions(\n chainId: number,\n tokenAddress: string,\n queryOptions?: {\n includeTokenFees?: boolean;\n includeAssetType?: boolean;\n includeAggregators?: boolean;\n includeERC20Permit?: boolean;\n includeOccurrences?: boolean;\n includeStorage?: boolean;\n includeIconUrl?: boolean;\n includeAddress?: boolean;\n includeName?: boolean;\n },\n options?: FetchOptions,\n ): FetchQueryOptions<TokenMetadata> {\n return {\n queryKey: [\n 'token',\n 'v1Metadata',\n { chainId, tokenAddress, options: queryOptions },\n ],\n queryFn: async ({\n signal,\n }: QueryFunctionContext): Promise<TokenMetadata> => {\n return this.fetch<TokenMetadata>(\n this.apiUrls.TOKEN,\n `/token/${chainId}`,\n {\n signal,\n params: {\n address: tokenAddress,\n includeTokenFees: queryOptions?.includeTokenFees,\n includeAssetType: queryOptions?.includeAssetType,\n includeAggregators: queryOptions?.includeAggregators,\n includeERC20Permit: queryOptions?.includeERC20Permit,\n includeOccurrences: queryOptions?.includeOccurrences,\n includeStorage: queryOptions?.includeStorage,\n includeIconUrl: queryOptions?.includeIconUrl,\n includeAddress: queryOptions?.includeAddress,\n includeName: queryOptions?.includeName,\n },\n },\n );\n },\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.TOKEN_METADATA,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n };\n }\n\n /**\n * Get token metadata by address.\n *\n * @param chainId - The chain ID.\n * @param tokenAddress - The token address.\n * @param queryOptions - Query options.\n * @param queryOptions.includeTokenFees - Include token fees data.\n * @param queryOptions.includeAssetType - Include asset type data.\n * @param queryOptions.includeAggregators - Include aggregators data.\n * @param queryOptions.includeERC20Permit - Include ERC20 permit data.\n * @param queryOptions.includeOccurrences - Include occurrences data.\n * @param queryOptions.includeStorage - Include storage data.\n * @param queryOptions.includeIconUrl - Include icon URL.\n * @param queryOptions.includeAddress - Include address.\n * @param queryOptions.includeName - Include name.\n * @param options - Fetch options including cache settings.\n * @returns The token metadata or undefined.\n */\n async fetchV1TokenMetadata(\n chainId: number,\n tokenAddress: string,\n queryOptions?: {\n includeTokenFees?: boolean;\n includeAssetType?: boolean;\n includeAggregators?: boolean;\n includeERC20Permit?: boolean;\n includeOccurrences?: boolean;\n includeStorage?: boolean;\n includeIconUrl?: boolean;\n includeAddress?: boolean;\n includeName?: boolean;\n },\n options?: FetchOptions,\n ): Promise<TokenMetadata | undefined> {\n try {\n return await this.queryClient.fetchQuery(\n this.getV1TokenMetadataQueryOptions(\n chainId,\n tokenAddress,\n queryOptions,\n options,\n ),\n );\n } catch {\n return undefined;\n }\n }\n\n /**\n * Returns the TanStack Query options object for token description.\n *\n * @param chainId - The chain ID.\n * @param tokenAddress - The token address.\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getTokenDescriptionQueryOptions(\n chainId: number,\n tokenAddress: string,\n options?: FetchOptions,\n ): FetchQueryOptions<V1TokenDescriptionResponse> {\n return {\n queryKey: ['token', 'tokenDescription', chainId, tokenAddress],\n queryFn: async ({\n signal,\n }: QueryFunctionContext): Promise<V1TokenDescriptionResponse> =>\n this.fetch<V1TokenDescriptionResponse>(\n this.apiUrls.TOKEN,\n `/token/${chainId}/description`,\n {\n signal,\n params: { address: tokenAddress },\n },\n ),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.TOKEN_METADATA,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n };\n }\n\n /**\n * Get token description.\n *\n * @param chainId - The chain ID.\n * @param tokenAddress - The token address.\n * @param options - Fetch options including cache settings.\n * @returns The token description or undefined.\n */\n async fetchTokenDescription(\n chainId: number,\n tokenAddress: string,\n options?: FetchOptions,\n ): Promise<V1TokenDescriptionResponse | undefined> {\n try {\n return await this.queryClient.fetchQuery(\n this.getTokenDescriptionQueryOptions(chainId, tokenAddress, options),\n );\n } catch {\n return undefined;\n }\n }\n\n // ==========================================================================\n // TRENDING & TOP TOKENS\n // ==========================================================================\n\n /**\n * Returns the TanStack Query options object for v3 trending tokens.\n *\n * @param chainIds - Array of chain IDs.\n * @param queryOptions - Query options.\n * @param queryOptions.sortBy - Sort option.\n * @param queryOptions.minLiquidity - Minimum liquidity filter.\n * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter.\n * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter.\n * @param queryOptions.minMarketCap - Minimum market cap filter.\n * @param queryOptions.maxMarketCap - Maximum market cap filter.\n * @param queryOptions.includeTokenSecurityData - Whether to include token security data.\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getV3TrendingTokensQueryOptions(\n chainIds: string[],\n queryOptions?: {\n sortBy?: TrendingSortOption;\n minLiquidity?: number;\n minVolume24hUsd?: number;\n maxVolume24hUsd?: number;\n minMarketCap?: number;\n maxMarketCap?: number;\n includeTokenSecurityData?: boolean;\n },\n options?: FetchOptions,\n ): FetchQueryOptions<TrendingToken[]> {\n return {\n queryKey: [\n 'token',\n 'v3Trending',\n { chainIds: [...chainIds].sort(), options: queryOptions },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<TrendingToken[]>(this.apiUrls.TOKEN, '/v3/tokens/trending', {\n signal,\n params: {\n chainIds,\n sort: queryOptions?.sortBy,\n minLiquidity: queryOptions?.minLiquidity,\n minVolume24hUsd: queryOptions?.minVolume24hUsd,\n maxVolume24hUsd: queryOptions?.maxVolume24hUsd,\n minMarketCap: queryOptions?.minMarketCap,\n maxMarketCap: queryOptions?.maxMarketCap,\n includeTokenSecurityData: queryOptions?.includeTokenSecurityData,\n },\n }),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.TRENDING,\n gcTime: options?.gcTime ?? GC_TIMES.SHORT,\n };\n }\n\n /**\n * Get trending tokens (v3 endpoint).\n *\n * @param chainIds - Array of chain IDs.\n * @param queryOptions - Query options.\n * @param queryOptions.sortBy - Sort option.\n * @param queryOptions.minLiquidity - Minimum liquidity filter.\n * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter.\n * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter.\n * @param queryOptions.minMarketCap - Minimum market cap filter.\n * @param queryOptions.maxMarketCap - Maximum market cap filter.\n * @param queryOptions.includeTokenSecurityData - Whether to include token security data.\n * @param options - Fetch options including cache settings.\n * @returns Array of trending tokens.\n */\n async fetchV3TrendingTokens(\n chainIds: string[],\n queryOptions?: {\n sortBy?: TrendingSortOption;\n minLiquidity?: number;\n minVolume24hUsd?: number;\n maxVolume24hUsd?: number;\n minMarketCap?: number;\n maxMarketCap?: number;\n includeTokenSecurityData?: boolean;\n },\n options?: FetchOptions,\n ): Promise<TrendingToken[]> {\n return this.queryClient.fetchQuery(\n this.getV3TrendingTokensQueryOptions(chainIds, queryOptions, options),\n );\n }\n\n /**\n * Returns the TanStack Query options object for v3 top gainers.\n *\n * @param chainIds - Array of chain IDs.\n * @param queryOptions - Query options.\n * @param queryOptions.sort - Sort option.\n * @param queryOptions.blockRegion - Region filter (global/us).\n * @param queryOptions.minLiquidity - Minimum liquidity filter.\n * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter.\n * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter.\n * @param queryOptions.minMarketCap - Minimum market cap filter.\n * @param queryOptions.maxMarketCap - Maximum market cap filter.\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getV3TopGainersQueryOptions(\n chainIds: string[],\n queryOptions?: {\n sort?: TopGainersSortOption;\n blockRegion?: 'global' | 'us';\n minLiquidity?: number;\n minVolume24hUsd?: number;\n maxVolume24hUsd?: number;\n minMarketCap?: number;\n maxMarketCap?: number;\n },\n options?: FetchOptions,\n ): FetchQueryOptions<TrendingToken[]> {\n return {\n queryKey: [\n 'token',\n 'v3TopGainers',\n { chainIds: [...chainIds].sort(), options: queryOptions },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<TrendingToken[]>(\n this.apiUrls.TOKEN,\n '/v3/tokens/top-gainers',\n {\n signal,\n params: {\n chainIds,\n sort: queryOptions?.sort,\n blockRegion: queryOptions?.blockRegion,\n minLiquidity: queryOptions?.minLiquidity,\n minVolume24hUsd: queryOptions?.minVolume24hUsd,\n maxVolume24hUsd: queryOptions?.maxVolume24hUsd,\n minMarketCap: queryOptions?.minMarketCap,\n maxMarketCap: queryOptions?.maxMarketCap,\n },\n },\n ),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.TRENDING,\n gcTime: options?.gcTime ?? GC_TIMES.SHORT,\n };\n }\n\n /**\n * Get top gainers/losers (v3 endpoint).\n *\n * @param chainIds - Array of chain IDs.\n * @param queryOptions - Query options.\n * @param queryOptions.sort - Sort option.\n * @param queryOptions.blockRegion - Region filter (global/us).\n * @param queryOptions.minLiquidity - Minimum liquidity filter.\n * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter.\n * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter.\n * @param queryOptions.minMarketCap - Minimum market cap filter.\n * @param queryOptions.maxMarketCap - Maximum market cap filter.\n * @param options - Fetch options including cache settings.\n * @returns Array of top gainer tokens.\n */\n async fetchV3TopGainers(\n chainIds: string[],\n queryOptions?: {\n sort?: TopGainersSortOption;\n blockRegion?: 'global' | 'us';\n minLiquidity?: number;\n minVolume24hUsd?: number;\n maxVolume24hUsd?: number;\n minMarketCap?: number;\n maxMarketCap?: number;\n },\n options?: FetchOptions,\n ): Promise<TrendingToken[]> {\n return this.queryClient.fetchQuery(\n this.getV3TopGainersQueryOptions(chainIds, queryOptions, options),\n );\n }\n\n /**\n * Returns the TanStack Query options object for v3 popular tokens.\n *\n * @param chainIds - Array of chain IDs.\n * @param queryOptions - Query options.\n * @param queryOptions.blockRegion - Region filter (global/us).\n * @param queryOptions.minLiquidity - Minimum liquidity filter.\n * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter.\n * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter.\n * @param queryOptions.minMarketCap - Minimum market cap filter.\n * @param queryOptions.maxMarketCap - Maximum market cap filter.\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getV3PopularTokensQueryOptions(\n chainIds: string[],\n queryOptions?: {\n blockRegion?: 'global' | 'us';\n minLiquidity?: number;\n minVolume24hUsd?: number;\n maxVolume24hUsd?: number;\n minMarketCap?: number;\n maxMarketCap?: number;\n },\n options?: FetchOptions,\n ): FetchQueryOptions<TrendingToken[]> {\n return {\n queryKey: [\n 'token',\n 'v3Popular',\n { chainIds: [...chainIds].sort(), options: queryOptions },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<TrendingToken[]>(this.apiUrls.TOKEN, '/v3/tokens/popular', {\n signal,\n params: {\n chainIds,\n blockRegion: queryOptions?.blockRegion,\n minLiquidity: queryOptions?.minLiquidity,\n minVolume24hUsd: queryOptions?.minVolume24hUsd,\n maxVolume24hUsd: queryOptions?.maxVolume24hUsd,\n minMarketCap: queryOptions?.minMarketCap,\n maxMarketCap: queryOptions?.maxMarketCap,\n },\n }),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.TRENDING,\n gcTime: options?.gcTime ?? GC_TIMES.SHORT,\n };\n }\n\n /**\n * Get popular tokens (v3 endpoint).\n *\n * @param chainIds - Array of chain IDs.\n * @param queryOptions - Query options.\n * @param queryOptions.blockRegion - Region filter (global/us).\n * @param queryOptions.minLiquidity - Minimum liquidity filter.\n * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter.\n * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter.\n * @param queryOptions.minMarketCap - Minimum market cap filter.\n * @param queryOptions.maxMarketCap - Maximum market cap filter.\n * @param options - Fetch options including cache settings.\n * @returns Array of popular tokens.\n */\n async fetchV3PopularTokens(\n chainIds: string[],\n queryOptions?: {\n blockRegion?: 'global' | 'us';\n minLiquidity?: number;\n minVolume24hUsd?: number;\n maxVolume24hUsd?: number;\n minMarketCap?: number;\n maxMarketCap?: number;\n },\n options?: FetchOptions,\n ): Promise<TrendingToken[]> {\n return this.queryClient.fetchQuery(\n this.getV3PopularTokensQueryOptions(chainIds, queryOptions, options),\n );\n }\n\n // ==========================================================================\n // TOP ASSETS\n // ==========================================================================\n\n /**\n * Returns the TanStack Query options object for top assets.\n *\n * @param chainId - The chain ID.\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getTopAssetsQueryOptions(\n chainId: number,\n options?: FetchOptions,\n ): FetchQueryOptions<TopAsset[]> {\n return {\n queryKey: ['token', 'topAssets', chainId],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<TopAsset[]>(this.apiUrls.TOKEN, `/topAssets/${chainId}`, {\n signal,\n }),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.TRENDING,\n gcTime: options?.gcTime ?? GC_TIMES.SHORT,\n };\n }\n\n /**\n * Get top assets for a chain.\n *\n * @param chainId - The chain ID.\n * @param options - Fetch options including cache settings.\n * @returns Array of top assets.\n */\n async fetchTopAssets(\n chainId: number,\n options?: FetchOptions,\n ): Promise<TopAsset[]> {\n return this.queryClient.fetchQuery(\n this.getTopAssetsQueryOptions(chainId, options),\n );\n }\n\n // ==========================================================================\n // UTILITY\n // ==========================================================================\n\n /**\n * Returns the TanStack Query options object for v1 suggested occurrence floors.\n *\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getV1SuggestedOccurrenceFloorsQueryOptions(\n options?: FetchOptions,\n ): FetchQueryOptions<V1SuggestedOccurrenceFloorsResponse> {\n return {\n queryKey: ['token', 'v1SuggestedOccurrenceFloors'],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<V1SuggestedOccurrenceFloorsResponse>(\n this.apiUrls.TOKEN,\n '/v1/suggestedOccurrenceFloors',\n { signal },\n ),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.SUPPORTED_NETWORKS,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n };\n }\n\n /**\n * Get suggested occurrence floors for all chains.\n *\n * @param options - Fetch options including cache settings.\n * @returns The suggested occurrence floors response.\n */\n async fetchV1SuggestedOccurrenceFloors(\n options?: FetchOptions,\n ): Promise<V1SuggestedOccurrenceFloorsResponse> {\n return this.queryClient.fetchQuery(\n this.getV1SuggestedOccurrenceFloorsQueryOptions(options),\n );\n }\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/api/token/client.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Token API Client - token.api.cx.metamask.io\n *\n * Handles all token-related API calls including:\n * - Networks\n * - Token lists\n * - Token metadata\n * - Token descriptions\n * - Trending tokens\n * - Top gainers/popular tokens\n * - Top assets\n * - Occurrence floors\n * - Assets (v2)\n */\n\nimport type {\n FetchQueryOptions,\n QueryFunctionContext,\n} from '@tanstack/query-core';\n\nimport { BaseApiClient, STALE_TIMES, GC_TIMES } from '../base-client.js';\nimport { getQueryOptionsOverrides } from '../shared-types.js';\nimport type { FetchOptions } from '../shared-types.js';\nimport type {\n TokenMetadata,\n TokenListQueryOptions,\n TokenV2SupportedNetworksResponse,\n V1TokenDescriptionResponse,\n NetworkInfo,\n TopAsset,\n TrendingToken,\n TrendingSortOption,\n TopGainersSortOption,\n V1SuggestedOccurrenceFloorsResponse,\n V2AssetResponse,\n V2AssetsQueryOptions,\n} from './types.js';\n\n/**\n * Token API Client.\n * Provides methods for interacting with the Token API.\n */\nexport class TokenApiClient extends BaseApiClient {\n // ==========================================================================\n // CACHE MANAGEMENT\n // ==========================================================================\n\n /**\n * Invalidate all token API queries.\n * Note: This only invalidates queries from token.api.cx.metamask.io,\n * not from tokens.api.cx.metamask.io (use TokensApiClient.invalidateTokens() for that).\n */\n async invalidateToken(): Promise<void> {\n await this.queryClient.invalidateQueries({\n queryKey: ['token'],\n });\n }\n\n // ==========================================================================\n // NETWORKS\n // ==========================================================================\n\n /**\n * Returns the TanStack Query options object for networks.\n *\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getNetworksQueryOptions(\n options?: FetchOptions,\n ): FetchQueryOptions<NetworkInfo[]> {\n return {\n queryKey: ['token', 'networks'],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<NetworkInfo[]>(this.apiUrls.TOKEN, '/networks', { signal }),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.SUPPORTED_NETWORKS,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n };\n }\n\n /**\n * Get all networks.\n *\n * @param options - Fetch options including cache settings.\n * @returns Array of network info.\n */\n async fetchNetworks(options?: FetchOptions): Promise<NetworkInfo[]> {\n return this.queryClient.fetchQuery(this.getNetworksQueryOptions(options));\n }\n\n /**\n * Returns the TanStack Query options object for network by chain ID.\n *\n * @param chainId - The chain ID.\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getNetworkByChainIdQueryOptions(\n chainId: number,\n options?: FetchOptions,\n ): FetchQueryOptions<NetworkInfo> {\n return {\n queryKey: ['token', 'networkByChainId', chainId],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<NetworkInfo>(this.apiUrls.TOKEN, `/networks/${chainId}`, {\n signal,\n }),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.SUPPORTED_NETWORKS,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n };\n }\n\n /**\n * Get network by chain ID.\n *\n * @param chainId - The chain ID.\n * @param options - Fetch options including cache settings.\n * @returns The network info.\n */\n async fetchNetworkByChainId(\n chainId: number,\n options?: FetchOptions,\n ): Promise<NetworkInfo> {\n return this.queryClient.fetchQuery(\n this.getNetworkByChainIdQueryOptions(chainId, options),\n );\n }\n\n // ==========================================================================\n // TOKEN LIST\n // ==========================================================================\n\n /**\n * Returns the TanStack Query options object for token list.\n *\n * @param chainId - The chain ID.\n * @param queryOptions - Query options forwarded to `GET /tokens/{chainId}`.\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getTokenListQueryOptions(\n chainId: number,\n queryOptions?: TokenListQueryOptions,\n options?: FetchOptions,\n ): FetchQueryOptions<TokenMetadata[]> {\n return {\n queryKey: ['token', 'tokenList', { chainId, options: queryOptions }],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<TokenMetadata[]>(this.apiUrls.TOKEN, `/tokens/${chainId}`, {\n signal,\n params: {\n occurrenceFloor: queryOptions?.occurrenceFloor,\n includeNativeAssets: queryOptions?.includeNativeAssets,\n includeTokenFees: queryOptions?.includeTokenFees,\n includeAssetType: queryOptions?.includeAssetType,\n includeAggregators: queryOptions?.includeAggregators,\n includeERC20Permit: queryOptions?.includeERC20Permit,\n includeOccurrences: queryOptions?.includeOccurrences,\n includeStorage: queryOptions?.includeStorage,\n includeIconUrl: queryOptions?.includeIconUrl,\n includeAddress: queryOptions?.includeAddress,\n includeName: queryOptions?.includeName,\n includeRwaData: queryOptions?.includeRwaData,\n },\n }),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.TOKEN_LIST,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n };\n }\n\n /**\n * Get token list for a chain.\n *\n * @param chainId - The chain ID.\n * @param queryOptions - Query options forwarded to `GET /tokens/{chainId}`.\n * @param options - Fetch options including cache settings.\n * @returns Array of token metadata.\n */\n async fetchTokenList(\n chainId: number,\n queryOptions?: TokenListQueryOptions,\n options?: FetchOptions,\n ): Promise<TokenMetadata[]> {\n return this.queryClient.fetchQuery(\n this.getTokenListQueryOptions(chainId, queryOptions, options),\n );\n }\n\n /**\n * Returns the TanStack Query options object for v2 supported networks.\n *\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getV2SupportedNetworksQueryOptions(\n options?: FetchOptions,\n ): FetchQueryOptions<TokenV2SupportedNetworksResponse> {\n return {\n queryKey: ['token', 'v2SupportedNetworks'],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<TokenV2SupportedNetworksResponse>(\n this.apiUrls.TOKEN,\n '/v2/supportedNetworks',\n { signal },\n ),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.SUPPORTED_NETWORKS,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n };\n }\n\n /**\n * Get CAIP chain IDs supported by the Token API (`GET /v2/supportedNetworks`).\n *\n * @param options - Fetch options including cache settings.\n * @returns Full and partial support chain IDs.\n */\n async fetchV2SupportedNetworks(\n options?: FetchOptions,\n ): Promise<TokenV2SupportedNetworksResponse> {\n return this.queryClient.fetchQuery(\n this.getV2SupportedNetworksQueryOptions(options),\n );\n }\n\n // ==========================================================================\n // TOKEN METADATA\n // ==========================================================================\n\n /**\n * Returns the TanStack Query options object for v1 token metadata.\n *\n * @param chainId - The chain ID.\n * @param tokenAddress - The token address.\n * @param queryOptions - Query options.\n * @param queryOptions.includeTokenFees - Whether to include token fees.\n * @param queryOptions.includeAssetType - Whether to include asset type.\n * @param queryOptions.includeAggregators - Whether to include aggregators.\n * @param queryOptions.includeERC20Permit - Whether to include ERC20 permit.\n * @param queryOptions.includeOccurrences - Whether to include occurrences.\n * @param queryOptions.includeStorage - Whether to include storage.\n * @param queryOptions.includeIconUrl - Whether to include icon URL.\n * @param queryOptions.includeAddress - Whether to include address.\n * @param queryOptions.includeName - Whether to include name.\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getV1TokenMetadataQueryOptions(\n chainId: number,\n tokenAddress: string,\n queryOptions?: {\n includeTokenFees?: boolean;\n includeAssetType?: boolean;\n includeAggregators?: boolean;\n includeERC20Permit?: boolean;\n includeOccurrences?: boolean;\n includeStorage?: boolean;\n includeIconUrl?: boolean;\n includeAddress?: boolean;\n includeName?: boolean;\n },\n options?: FetchOptions,\n ): FetchQueryOptions<TokenMetadata> {\n return {\n queryKey: [\n 'token',\n 'v1Metadata',\n { chainId, tokenAddress, options: queryOptions },\n ],\n queryFn: async ({\n signal,\n }: QueryFunctionContext): Promise<TokenMetadata> => {\n return this.fetch<TokenMetadata>(\n this.apiUrls.TOKEN,\n `/token/${chainId}`,\n {\n signal,\n params: {\n address: tokenAddress,\n includeTokenFees: queryOptions?.includeTokenFees,\n includeAssetType: queryOptions?.includeAssetType,\n includeAggregators: queryOptions?.includeAggregators,\n includeERC20Permit: queryOptions?.includeERC20Permit,\n includeOccurrences: queryOptions?.includeOccurrences,\n includeStorage: queryOptions?.includeStorage,\n includeIconUrl: queryOptions?.includeIconUrl,\n includeAddress: queryOptions?.includeAddress,\n includeName: queryOptions?.includeName,\n },\n },\n );\n },\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.TOKEN_METADATA,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n };\n }\n\n /**\n * Get token metadata by address.\n *\n * @param chainId - The chain ID.\n * @param tokenAddress - The token address.\n * @param queryOptions - Query options.\n * @param queryOptions.includeTokenFees - Include token fees data.\n * @param queryOptions.includeAssetType - Include asset type data.\n * @param queryOptions.includeAggregators - Include aggregators data.\n * @param queryOptions.includeERC20Permit - Include ERC20 permit data.\n * @param queryOptions.includeOccurrences - Include occurrences data.\n * @param queryOptions.includeStorage - Include storage data.\n * @param queryOptions.includeIconUrl - Include icon URL.\n * @param queryOptions.includeAddress - Include address.\n * @param queryOptions.includeName - Include name.\n * @param options - Fetch options including cache settings.\n * @returns The token metadata or undefined.\n */\n async fetchV1TokenMetadata(\n chainId: number,\n tokenAddress: string,\n queryOptions?: {\n includeTokenFees?: boolean;\n includeAssetType?: boolean;\n includeAggregators?: boolean;\n includeERC20Permit?: boolean;\n includeOccurrences?: boolean;\n includeStorage?: boolean;\n includeIconUrl?: boolean;\n includeAddress?: boolean;\n includeName?: boolean;\n },\n options?: FetchOptions,\n ): Promise<TokenMetadata | undefined> {\n try {\n return await this.queryClient.fetchQuery(\n this.getV1TokenMetadataQueryOptions(\n chainId,\n tokenAddress,\n queryOptions,\n options,\n ),\n );\n } catch {\n return undefined;\n }\n }\n\n /**\n * Returns the TanStack Query options object for token description.\n *\n * @param chainId - The chain ID.\n * @param tokenAddress - The token address.\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getTokenDescriptionQueryOptions(\n chainId: number,\n tokenAddress: string,\n options?: FetchOptions,\n ): FetchQueryOptions<V1TokenDescriptionResponse> {\n return {\n queryKey: ['token', 'tokenDescription', chainId, tokenAddress],\n queryFn: async ({\n signal,\n }: QueryFunctionContext): Promise<V1TokenDescriptionResponse> =>\n this.fetch<V1TokenDescriptionResponse>(\n this.apiUrls.TOKEN,\n `/token/${chainId}/description`,\n {\n signal,\n params: { address: tokenAddress },\n },\n ),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.TOKEN_METADATA,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n };\n }\n\n /**\n * Get token description.\n *\n * @param chainId - The chain ID.\n * @param tokenAddress - The token address.\n * @param options - Fetch options including cache settings.\n * @returns The token description or undefined.\n */\n async fetchTokenDescription(\n chainId: number,\n tokenAddress: string,\n options?: FetchOptions,\n ): Promise<V1TokenDescriptionResponse | undefined> {\n try {\n return await this.queryClient.fetchQuery(\n this.getTokenDescriptionQueryOptions(chainId, tokenAddress, options),\n );\n } catch {\n return undefined;\n }\n }\n\n // ==========================================================================\n // TRENDING & TOP TOKENS\n // ==========================================================================\n\n /**\n * Returns the TanStack Query options object for v3 trending tokens.\n *\n * @param chainIds - Array of chain IDs.\n * @param queryOptions - Query options.\n * @param queryOptions.sortBy - Sort option.\n * @param queryOptions.minLiquidity - Minimum liquidity filter.\n * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter.\n * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter.\n * @param queryOptions.minMarketCap - Minimum market cap filter.\n * @param queryOptions.maxMarketCap - Maximum market cap filter.\n * @param queryOptions.includeTokenSecurityData - Whether to include token security data.\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getV3TrendingTokensQueryOptions(\n chainIds: string[],\n queryOptions?: {\n sortBy?: TrendingSortOption;\n minLiquidity?: number;\n minVolume24hUsd?: number;\n maxVolume24hUsd?: number;\n minMarketCap?: number;\n maxMarketCap?: number;\n includeTokenSecurityData?: boolean;\n },\n options?: FetchOptions,\n ): FetchQueryOptions<TrendingToken[]> {\n return {\n queryKey: [\n 'token',\n 'v3Trending',\n { chainIds: [...chainIds].sort(), options: queryOptions },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<TrendingToken[]>(this.apiUrls.TOKEN, '/v3/tokens/trending', {\n signal,\n params: {\n chainIds,\n sort: queryOptions?.sortBy,\n minLiquidity: queryOptions?.minLiquidity,\n minVolume24hUsd: queryOptions?.minVolume24hUsd,\n maxVolume24hUsd: queryOptions?.maxVolume24hUsd,\n minMarketCap: queryOptions?.minMarketCap,\n maxMarketCap: queryOptions?.maxMarketCap,\n includeTokenSecurityData: queryOptions?.includeTokenSecurityData,\n },\n }),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.TRENDING,\n gcTime: options?.gcTime ?? GC_TIMES.SHORT,\n };\n }\n\n /**\n * Get trending tokens (v3 endpoint).\n *\n * @param chainIds - Array of chain IDs.\n * @param queryOptions - Query options.\n * @param queryOptions.sortBy - Sort option.\n * @param queryOptions.minLiquidity - Minimum liquidity filter.\n * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter.\n * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter.\n * @param queryOptions.minMarketCap - Minimum market cap filter.\n * @param queryOptions.maxMarketCap - Maximum market cap filter.\n * @param queryOptions.includeTokenSecurityData - Whether to include token security data.\n * @param options - Fetch options including cache settings.\n * @returns Array of trending tokens.\n */\n async fetchV3TrendingTokens(\n chainIds: string[],\n queryOptions?: {\n sortBy?: TrendingSortOption;\n minLiquidity?: number;\n minVolume24hUsd?: number;\n maxVolume24hUsd?: number;\n minMarketCap?: number;\n maxMarketCap?: number;\n includeTokenSecurityData?: boolean;\n },\n options?: FetchOptions,\n ): Promise<TrendingToken[]> {\n return this.queryClient.fetchQuery(\n this.getV3TrendingTokensQueryOptions(chainIds, queryOptions, options),\n );\n }\n\n /**\n * Returns the TanStack Query options object for v3 top gainers.\n *\n * @param chainIds - Array of chain IDs.\n * @param queryOptions - Query options.\n * @param queryOptions.sort - Sort option.\n * @param queryOptions.blockRegion - Region filter (global/us).\n * @param queryOptions.minLiquidity - Minimum liquidity filter.\n * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter.\n * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter.\n * @param queryOptions.minMarketCap - Minimum market cap filter.\n * @param queryOptions.maxMarketCap - Maximum market cap filter.\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getV3TopGainersQueryOptions(\n chainIds: string[],\n queryOptions?: {\n sort?: TopGainersSortOption;\n blockRegion?: 'global' | 'us';\n minLiquidity?: number;\n minVolume24hUsd?: number;\n maxVolume24hUsd?: number;\n minMarketCap?: number;\n maxMarketCap?: number;\n },\n options?: FetchOptions,\n ): FetchQueryOptions<TrendingToken[]> {\n return {\n queryKey: [\n 'token',\n 'v3TopGainers',\n { chainIds: [...chainIds].sort(), options: queryOptions },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<TrendingToken[]>(\n this.apiUrls.TOKEN,\n '/v3/tokens/top-gainers',\n {\n signal,\n params: {\n chainIds,\n sort: queryOptions?.sort,\n blockRegion: queryOptions?.blockRegion,\n minLiquidity: queryOptions?.minLiquidity,\n minVolume24hUsd: queryOptions?.minVolume24hUsd,\n maxVolume24hUsd: queryOptions?.maxVolume24hUsd,\n minMarketCap: queryOptions?.minMarketCap,\n maxMarketCap: queryOptions?.maxMarketCap,\n },\n },\n ),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.TRENDING,\n gcTime: options?.gcTime ?? GC_TIMES.SHORT,\n };\n }\n\n /**\n * Get top gainers/losers (v3 endpoint).\n *\n * @param chainIds - Array of chain IDs.\n * @param queryOptions - Query options.\n * @param queryOptions.sort - Sort option.\n * @param queryOptions.blockRegion - Region filter (global/us).\n * @param queryOptions.minLiquidity - Minimum liquidity filter.\n * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter.\n * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter.\n * @param queryOptions.minMarketCap - Minimum market cap filter.\n * @param queryOptions.maxMarketCap - Maximum market cap filter.\n * @param options - Fetch options including cache settings.\n * @returns Array of top gainer tokens.\n */\n async fetchV3TopGainers(\n chainIds: string[],\n queryOptions?: {\n sort?: TopGainersSortOption;\n blockRegion?: 'global' | 'us';\n minLiquidity?: number;\n minVolume24hUsd?: number;\n maxVolume24hUsd?: number;\n minMarketCap?: number;\n maxMarketCap?: number;\n },\n options?: FetchOptions,\n ): Promise<TrendingToken[]> {\n return this.queryClient.fetchQuery(\n this.getV3TopGainersQueryOptions(chainIds, queryOptions, options),\n );\n }\n\n /**\n * Returns the TanStack Query options object for v3 popular tokens.\n *\n * @param chainIds - Array of chain IDs.\n * @param queryOptions - Query options.\n * @param queryOptions.blockRegion - Region filter (global/us).\n * @param queryOptions.minLiquidity - Minimum liquidity filter.\n * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter.\n * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter.\n * @param queryOptions.minMarketCap - Minimum market cap filter.\n * @param queryOptions.maxMarketCap - Maximum market cap filter.\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getV3PopularTokensQueryOptions(\n chainIds: string[],\n queryOptions?: {\n blockRegion?: 'global' | 'us';\n minLiquidity?: number;\n minVolume24hUsd?: number;\n maxVolume24hUsd?: number;\n minMarketCap?: number;\n maxMarketCap?: number;\n },\n options?: FetchOptions,\n ): FetchQueryOptions<TrendingToken[]> {\n return {\n queryKey: [\n 'token',\n 'v3Popular',\n { chainIds: [...chainIds].sort(), options: queryOptions },\n ],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<TrendingToken[]>(this.apiUrls.TOKEN, '/v3/tokens/popular', {\n signal,\n params: {\n chainIds,\n blockRegion: queryOptions?.blockRegion,\n minLiquidity: queryOptions?.minLiquidity,\n minVolume24hUsd: queryOptions?.minVolume24hUsd,\n maxVolume24hUsd: queryOptions?.maxVolume24hUsd,\n minMarketCap: queryOptions?.minMarketCap,\n maxMarketCap: queryOptions?.maxMarketCap,\n },\n }),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.TRENDING,\n gcTime: options?.gcTime ?? GC_TIMES.SHORT,\n };\n }\n\n /**\n * Get popular tokens (v3 endpoint).\n *\n * @param chainIds - Array of chain IDs.\n * @param queryOptions - Query options.\n * @param queryOptions.blockRegion - Region filter (global/us).\n * @param queryOptions.minLiquidity - Minimum liquidity filter.\n * @param queryOptions.minVolume24hUsd - Minimum 24h volume filter.\n * @param queryOptions.maxVolume24hUsd - Maximum 24h volume filter.\n * @param queryOptions.minMarketCap - Minimum market cap filter.\n * @param queryOptions.maxMarketCap - Maximum market cap filter.\n * @param options - Fetch options including cache settings.\n * @returns Array of popular tokens.\n */\n async fetchV3PopularTokens(\n chainIds: string[],\n queryOptions?: {\n blockRegion?: 'global' | 'us';\n minLiquidity?: number;\n minVolume24hUsd?: number;\n maxVolume24hUsd?: number;\n minMarketCap?: number;\n maxMarketCap?: number;\n },\n options?: FetchOptions,\n ): Promise<TrendingToken[]> {\n return this.queryClient.fetchQuery(\n this.getV3PopularTokensQueryOptions(chainIds, queryOptions, options),\n );\n }\n\n // ==========================================================================\n // TOP ASSETS\n // ==========================================================================\n\n /**\n * Returns the TanStack Query options object for top assets.\n *\n * @param chainId - The chain ID.\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getTopAssetsQueryOptions(\n chainId: number,\n options?: FetchOptions,\n ): FetchQueryOptions<TopAsset[]> {\n return {\n queryKey: ['token', 'topAssets', chainId],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<TopAsset[]>(this.apiUrls.TOKEN, `/topAssets/${chainId}`, {\n signal,\n }),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.TRENDING,\n gcTime: options?.gcTime ?? GC_TIMES.SHORT,\n };\n }\n\n /**\n * Get top assets for a chain.\n *\n * @param chainId - The chain ID.\n * @param options - Fetch options including cache settings.\n * @returns Array of top assets.\n */\n async fetchTopAssets(\n chainId: number,\n options?: FetchOptions,\n ): Promise<TopAsset[]> {\n return this.queryClient.fetchQuery(\n this.getTopAssetsQueryOptions(chainId, options),\n );\n }\n\n // ==========================================================================\n // UTILITY\n // ==========================================================================\n\n /**\n * Returns the TanStack Query options object for v1 suggested occurrence floors.\n *\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getV1SuggestedOccurrenceFloorsQueryOptions(\n options?: FetchOptions,\n ): FetchQueryOptions<V1SuggestedOccurrenceFloorsResponse> {\n return {\n queryKey: ['token', 'v1SuggestedOccurrenceFloors'],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<V1SuggestedOccurrenceFloorsResponse>(\n this.apiUrls.TOKEN,\n '/v1/suggestedOccurrenceFloors',\n { signal },\n ),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.SUPPORTED_NETWORKS,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n };\n }\n\n /**\n * Get suggested occurrence floors for all chains.\n *\n * @param options - Fetch options including cache settings.\n * @returns The suggested occurrence floors response.\n */\n async fetchV1SuggestedOccurrenceFloors(\n options?: FetchOptions,\n ): Promise<V1SuggestedOccurrenceFloorsResponse> {\n return this.queryClient.fetchQuery(\n this.getV1SuggestedOccurrenceFloorsQueryOptions(options),\n );\n }\n\n // ==========================================================================\n // ASSETS (V2)\n // ==========================================================================\n\n /**\n * Returns the TanStack Query options object for v2 assets.\n *\n * @param assetIds - Array of CAIP-19 asset IDs.\n * @param queryOptions - Query options to include additional data in response.\n * @param options - Fetch options including cache settings.\n * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n */\n getV2AssetsQueryOptions(\n assetIds: string[],\n queryOptions?: V2AssetsQueryOptions,\n options?: FetchOptions,\n ): FetchQueryOptions<V2AssetResponse[]> {\n return {\n queryKey: ['token', 'v2Assets', { assetIds, options: queryOptions }],\n queryFn: ({ signal }: QueryFunctionContext) =>\n this.fetch<V2AssetResponse[]>(this.apiUrls.TOKEN, '/v2/assets', {\n signal,\n params: { assetIds, ...queryOptions },\n }),\n ...getQueryOptionsOverrides(options),\n staleTime: options?.staleTime ?? STALE_TIMES.TOKEN_METADATA,\n gcTime: options?.gcTime ?? GC_TIMES.EXTENDED,\n };\n }\n\n /**\n * Fetch assets by IDs (v2) with caching. Unlike the Tokens API v3 endpoint,\n * this supports `includeLaunchpadData` and `includeTokenSecurityData`.\n *\n * @param assetIds - Array of CAIP-19 asset IDs.\n * @param queryOptions - Query options to include additional data in response.\n * @param options - Fetch options including cache settings.\n * @returns Array of asset responses.\n */\n async fetchV2Assets(\n assetIds: string[],\n queryOptions?: V2AssetsQueryOptions,\n options?: FetchOptions,\n ): Promise<V2AssetResponse[]> {\n if (assetIds.length === 0) {\n return [];\n }\n return this.queryClient.fetchQuery(\n this.getV2AssetsQueryOptions(assetIds, queryOptions, options),\n );\n }\n}\n"]}
@@ -2,5 +2,5 @@
2
2
  * Token API barrel export.
3
3
  */
4
4
  export { TokenApiClient } from './client.js';
5
- export type { TokenMetadata, TokenListQueryOptions, TokenV2SupportedNetworksResponse, V1TokenDescriptionResponse, NetworkInfo, TopAsset, TrendingSortBy, TrendingToken, TopGainersSortOption, TrendingSortOption, V1SuggestedOccurrenceFloorsResponse, TokenSecurityData, TokenSecurityFeature, TokenSecurityHolder, TokenSecurityMarket, TokenSecurityFees, TokenSecurityFinancialStats, TokenSecurityMetadata, } from './types.js';
5
+ export type { TokenMetadata, TokenListQueryOptions, TokenV2SupportedNetworksResponse, V1TokenDescriptionResponse, NetworkInfo, TopAsset, TrendingSortBy, TrendingToken, TopGainersSortOption, TrendingSortOption, V1SuggestedOccurrenceFloorsResponse, V2AssetResponse, V2AssetsQueryOptions, TokenSecurityData, TokenSecurityFeature, TokenSecurityHolder, TokenSecurityMarket, TokenSecurityFees, TokenSecurityFinancialStats, TokenSecurityMetadata, } from './types.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/token/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,gCAAgC,EAChC,0BAA0B,EAC1B,WAAW,EACX,QAAQ,EACR,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,mCAAmC,EACnC,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/token/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,gCAAgC,EAChC,0BAA0B,EAC1B,WAAW,EACX,QAAQ,EACR,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,mCAAmC,EACnC,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/token/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC","sourcesContent":["/**\n * Token API barrel export.\n */\n\nexport { TokenApiClient } from './client.js';\nexport type {\n TokenMetadata,\n TokenListQueryOptions,\n TokenV2SupportedNetworksResponse,\n V1TokenDescriptionResponse,\n NetworkInfo,\n TopAsset,\n TrendingSortBy,\n TrendingToken,\n TopGainersSortOption,\n TrendingSortOption,\n V1SuggestedOccurrenceFloorsResponse,\n TokenSecurityData,\n TokenSecurityFeature,\n TokenSecurityHolder,\n TokenSecurityMarket,\n TokenSecurityFees,\n TokenSecurityFinancialStats,\n TokenSecurityMetadata,\n} from './types.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/token/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC","sourcesContent":["/**\n * Token API barrel export.\n */\n\nexport { TokenApiClient } from './client.js';\nexport type {\n TokenMetadata,\n TokenListQueryOptions,\n TokenV2SupportedNetworksResponse,\n V1TokenDescriptionResponse,\n NetworkInfo,\n TopAsset,\n TrendingSortBy,\n TrendingToken,\n TopGainersSortOption,\n TrendingSortOption,\n V1SuggestedOccurrenceFloorsResponse,\n V2AssetResponse,\n V2AssetsQueryOptions,\n TokenSecurityData,\n TokenSecurityFeature,\n TokenSecurityHolder,\n TokenSecurityMarket,\n TokenSecurityFees,\n TokenSecurityFinancialStats,\n TokenSecurityMetadata,\n} from './types.js';\n"]}
@@ -127,6 +127,38 @@ export type TokenSecurityData = {
127
127
  metadata: TokenSecurityMetadata;
128
128
  created: string;
129
129
  };
130
+ /**
131
+ * Query options for Token API `GET /v2/assets`.
132
+ */
133
+ export type V2AssetsQueryOptions = {
134
+ /** Include token list occurrences in response. */
135
+ includeOccurrences?: boolean;
136
+ /** Include token security data (Blockaid) in response. */
137
+ includeTokenSecurityData?: boolean;
138
+ /** Include launchpad data (and the `launchpad` identifier) in response. */
139
+ includeLaunchpadData?: boolean;
140
+ };
141
+ /**
142
+ * Asset from Token API `GET /v2/assets`. Optional fields appear only when
143
+ * their include flag is set.
144
+ */
145
+ export type V2AssetResponse = {
146
+ /** CAIP-19 asset ID. */
147
+ assetId: string;
148
+ symbol: string;
149
+ name: string;
150
+ decimals: number;
151
+ /** Number of token list occurrences. */
152
+ occurrences?: number;
153
+ /** Token security data. `resultType` may be null when not scanned. */
154
+ securityData?: Partial<Omit<TokenSecurityData, 'resultType'>> & {
155
+ resultType?: string | null;
156
+ };
157
+ /** Launchpad identifier (e.g. `flap`); present only for launchpad tokens. */
158
+ launchpad?: string | null;
159
+ /** Launchpad details; present only for launchpad tokens. */
160
+ launchpadData?: Record<string, unknown> | null;
161
+ };
130
162
  /**
131
163
  * Trending token data from Token API v3 /tokens/trending endpoint
132
164
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/token/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/token/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/api/token/types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * Token API types for the API Platform Client.\n * API: token.api.cx.metamask.io\n */\n\n// ============================================================================\n// TOKEN METADATA TYPES\n// ============================================================================\n\n/**\n * Token metadata from Token API v1 /tokens/{chainId} endpoint\n */\nexport type TokenMetadata = {\n address: string;\n symbol: string;\n decimals: number;\n name: string;\n iconUrl?: string;\n aggregators?: string[];\n occurrences?: number;\n};\n\n/**\n * Query options for Token API `GET /tokens/{chainId}`.\n */\nexport type TokenListQueryOptions = {\n /** Minimum aggregator occurrences required for a token to be returned. */\n occurrenceFloor?: number;\n /** Include the chain's native asset in the list. */\n includeNativeAssets?: boolean;\n /** Include token fee data. */\n includeTokenFees?: boolean;\n /** Include asset type data. */\n includeAssetType?: boolean;\n /** Include aggregator data. */\n includeAggregators?: boolean;\n /** Include ERC-20 permit data. */\n includeERC20Permit?: boolean;\n /** Include occurrence counts. */\n includeOccurrences?: boolean;\n /** Include storage slot data. */\n includeStorage?: boolean;\n /** Include the token icon URL. */\n includeIconUrl?: boolean;\n /** Include the token address. */\n includeAddress?: boolean;\n /** Include the token name. */\n includeName?: boolean;\n /** Include real-world-asset data. */\n includeRwaData?: boolean;\n};\n\n/**\n * Supported networks from Token API `GET /v2/supportedNetworks`.\n * Chain IDs are CAIP-2 (for example `eip155:1`).\n */\nexport type TokenV2SupportedNetworksResponse = {\n fullSupport?: string[];\n partialSupport?: string[];\n};\n\n/** Token description response */\nexport type V1TokenDescriptionResponse = {\n description: string;\n};\n\n// ============================================================================\n// NETWORK TYPES\n// ============================================================================\n\n/** Network info */\nexport type NetworkInfo = {\n active: boolean;\n chainId: number;\n chainName: string;\n nativeCurrency: {\n name: string;\n symbol: string;\n decimals: number;\n address: string;\n };\n iconUrl?: string;\n blockExplorerUrl?: string;\n networkType?: string;\n tokenSources?: string[];\n};\n\n// ============================================================================\n// TOP ASSETS TYPES\n// ============================================================================\n\n/** Top asset */\nexport type TopAsset = {\n address: string;\n symbol: string;\n};\n\n// ============================================================================\n// TRENDING TOKENS TYPES\n// ============================================================================\n\n/**\n * Sort options for trending tokens (v3)\n */\nexport type TrendingSortBy =\n | 'm5_trending'\n | 'h1_trending'\n | 'h6_trending'\n | 'h24_trending';\n\n// ============================================================================\n// TOKEN SECURITY TYPES\n// ============================================================================\n\nexport type TokenSecurityFeature = {\n featureId: string;\n type: string;\n description: string;\n};\n\nexport type TokenSecurityHolder = {\n label: string;\n name: string | null;\n address: string;\n holdingPercentage: number;\n};\n\nexport type TokenSecurityMarket = {\n marketType: string;\n marketName: string;\n pairName: string;\n reserveUSD: number;\n};\n\nexport type TokenSecurityFees = {\n transfer: number;\n transferFeeMaxAmount: number | null;\n buy: number;\n sell: number | null;\n};\n\nexport type TokenSecurityFinancialStats = {\n supply: number;\n topHolders: TokenSecurityHolder[];\n holdersCount: number;\n tradeVolume24h: number | null;\n lockedLiquidityPct: number | null;\n markets: TokenSecurityMarket[];\n};\n\nexport type TokenSecurityMetadata = {\n externalLinks: {\n homepage: string | null;\n twitterPage: string | null;\n telegramChannelId: string | null;\n };\n};\n\nexport type TokenSecurityData = {\n resultType: string;\n maliciousScore: string;\n fees: TokenSecurityFees;\n features: TokenSecurityFeature[];\n financialStats: TokenSecurityFinancialStats;\n metadata: TokenSecurityMetadata;\n created: string;\n};\n\n/**\n * Trending token data from Token API v3 /tokens/trending endpoint\n */\nexport type TrendingToken = {\n assetId: string;\n name: string;\n symbol: string;\n decimals: number;\n price: string;\n aggregatedUsdVolume: number;\n marketCap: number;\n priceChangePct?: {\n m5?: string;\n m15?: string;\n m30?: string;\n h1?: string;\n h6?: string;\n h24?: string;\n };\n labels?: string[];\n /** Optional security data for tokens when includeTokenSecurityData is true */\n securityData?: TokenSecurityData;\n};\n\n/** Top gainers sort options */\nexport type TopGainersSortOption =\n | 'm5_price_change_percentage_desc'\n | 'h1_price_change_percentage_desc'\n | 'h6_price_change_percentage_desc'\n | 'h24_price_change_percentage_desc'\n | 'm5_price_change_percentage_asc'\n | 'h1_price_change_percentage_asc'\n | 'h6_price_change_percentage_asc'\n | 'h24_price_change_percentage_asc';\n\n/** Trending sort options */\nexport type TrendingSortOption =\n | 'm5_trending'\n | 'h1_trending'\n | 'h6_trending'\n | 'h24_trending';\n\n// ============================================================================\n// UTILITY TYPES\n// ============================================================================\n\n/** Suggested occurrence floors response */\nexport type V1SuggestedOccurrenceFloorsResponse = {\n [chainId: string]: number;\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/api/token/types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * Token API types for the API Platform Client.\n * API: token.api.cx.metamask.io\n */\n\n// ============================================================================\n// TOKEN METADATA TYPES\n// ============================================================================\n\n/**\n * Token metadata from Token API v1 /tokens/{chainId} endpoint\n */\nexport type TokenMetadata = {\n address: string;\n symbol: string;\n decimals: number;\n name: string;\n iconUrl?: string;\n aggregators?: string[];\n occurrences?: number;\n};\n\n/**\n * Query options for Token API `GET /tokens/{chainId}`.\n */\nexport type TokenListQueryOptions = {\n /** Minimum aggregator occurrences required for a token to be returned. */\n occurrenceFloor?: number;\n /** Include the chain's native asset in the list. */\n includeNativeAssets?: boolean;\n /** Include token fee data. */\n includeTokenFees?: boolean;\n /** Include asset type data. */\n includeAssetType?: boolean;\n /** Include aggregator data. */\n includeAggregators?: boolean;\n /** Include ERC-20 permit data. */\n includeERC20Permit?: boolean;\n /** Include occurrence counts. */\n includeOccurrences?: boolean;\n /** Include storage slot data. */\n includeStorage?: boolean;\n /** Include the token icon URL. */\n includeIconUrl?: boolean;\n /** Include the token address. */\n includeAddress?: boolean;\n /** Include the token name. */\n includeName?: boolean;\n /** Include real-world-asset data. */\n includeRwaData?: boolean;\n};\n\n/**\n * Supported networks from Token API `GET /v2/supportedNetworks`.\n * Chain IDs are CAIP-2 (for example `eip155:1`).\n */\nexport type TokenV2SupportedNetworksResponse = {\n fullSupport?: string[];\n partialSupport?: string[];\n};\n\n/** Token description response */\nexport type V1TokenDescriptionResponse = {\n description: string;\n};\n\n// ============================================================================\n// NETWORK TYPES\n// ============================================================================\n\n/** Network info */\nexport type NetworkInfo = {\n active: boolean;\n chainId: number;\n chainName: string;\n nativeCurrency: {\n name: string;\n symbol: string;\n decimals: number;\n address: string;\n };\n iconUrl?: string;\n blockExplorerUrl?: string;\n networkType?: string;\n tokenSources?: string[];\n};\n\n// ============================================================================\n// TOP ASSETS TYPES\n// ============================================================================\n\n/** Top asset */\nexport type TopAsset = {\n address: string;\n symbol: string;\n};\n\n// ============================================================================\n// TRENDING TOKENS TYPES\n// ============================================================================\n\n/**\n * Sort options for trending tokens (v3)\n */\nexport type TrendingSortBy =\n | 'm5_trending'\n | 'h1_trending'\n | 'h6_trending'\n | 'h24_trending';\n\n// ============================================================================\n// TOKEN SECURITY TYPES\n// ============================================================================\n\nexport type TokenSecurityFeature = {\n featureId: string;\n type: string;\n description: string;\n};\n\nexport type TokenSecurityHolder = {\n label: string;\n name: string | null;\n address: string;\n holdingPercentage: number;\n};\n\nexport type TokenSecurityMarket = {\n marketType: string;\n marketName: string;\n pairName: string;\n reserveUSD: number;\n};\n\nexport type TokenSecurityFees = {\n transfer: number;\n transferFeeMaxAmount: number | null;\n buy: number;\n sell: number | null;\n};\n\nexport type TokenSecurityFinancialStats = {\n supply: number;\n topHolders: TokenSecurityHolder[];\n holdersCount: number;\n tradeVolume24h: number | null;\n lockedLiquidityPct: number | null;\n markets: TokenSecurityMarket[];\n};\n\nexport type TokenSecurityMetadata = {\n externalLinks: {\n homepage: string | null;\n twitterPage: string | null;\n telegramChannelId: string | null;\n };\n};\n\nexport type TokenSecurityData = {\n resultType: string;\n maliciousScore: string;\n fees: TokenSecurityFees;\n features: TokenSecurityFeature[];\n financialStats: TokenSecurityFinancialStats;\n metadata: TokenSecurityMetadata;\n created: string;\n};\n\n/**\n * Query options for Token API `GET /v2/assets`.\n */\nexport type V2AssetsQueryOptions = {\n /** Include token list occurrences in response. */\n includeOccurrences?: boolean;\n /** Include token security data (Blockaid) in response. */\n includeTokenSecurityData?: boolean;\n /** Include launchpad data (and the `launchpad` identifier) in response. */\n includeLaunchpadData?: boolean;\n};\n\n/**\n * Asset from Token API `GET /v2/assets`. Optional fields appear only when\n * their include flag is set.\n */\nexport type V2AssetResponse = {\n /** CAIP-19 asset ID. */\n assetId: string;\n symbol: string;\n name: string;\n decimals: number;\n /** Number of token list occurrences. */\n occurrences?: number;\n /** Token security data. `resultType` may be null when not scanned. */\n securityData?: Partial<Omit<TokenSecurityData, 'resultType'>> & {\n resultType?: string | null;\n };\n /** Launchpad identifier (e.g. `flap`); present only for launchpad tokens. */\n launchpad?: string | null;\n /** Launchpad details; present only for launchpad tokens. */\n launchpadData?: Record<string, unknown> | null;\n};\n\n/**\n * Trending token data from Token API v3 /tokens/trending endpoint\n */\nexport type TrendingToken = {\n assetId: string;\n name: string;\n symbol: string;\n decimals: number;\n price: string;\n aggregatedUsdVolume: number;\n marketCap: number;\n priceChangePct?: {\n m5?: string;\n m15?: string;\n m30?: string;\n h1?: string;\n h6?: string;\n h24?: string;\n };\n labels?: string[];\n /** Optional security data for tokens when includeTokenSecurityData is true */\n securityData?: TokenSecurityData;\n};\n\n/** Top gainers sort options */\nexport type TopGainersSortOption =\n | 'm5_price_change_percentage_desc'\n | 'h1_price_change_percentage_desc'\n | 'h6_price_change_percentage_desc'\n | 'h24_price_change_percentage_desc'\n | 'm5_price_change_percentage_asc'\n | 'h1_price_change_percentage_asc'\n | 'h6_price_change_percentage_asc'\n | 'h24_price_change_percentage_asc';\n\n/** Trending sort options */\nexport type TrendingSortOption =\n | 'm5_trending'\n | 'h1_trending'\n | 'h6_trending'\n | 'h24_trending';\n\n// ============================================================================\n// UTILITY TYPES\n// ============================================================================\n\n/** Suggested occurrence floors response */\nexport type V1SuggestedOccurrenceFloorsResponse = {\n [chainId: string]: number;\n};\n"]}
package/dist/index.d.ts CHANGED
@@ -12,5 +12,5 @@ export type { ChannelSubscriptionManagerMessenger, ChannelSubscriptionManagerOpt
12
12
  export { LaunchpadTokenDetailsService, LAUNCHPAD_TDP_SERVICE_ALLOWED_ACTIONS, LAUNCHPAD_TDP_SERVICE_ALLOWED_EVENTS, buildChannel, normalizeEvent, parseBatch, LAUNCHPAD_SUBSCRIPTION_NAMESPACE, } from './ws/launchpad/index.js';
13
13
  export type { LaunchpadSystemNotificationData, LaunchpadTokenDetailsServiceOptions, LaunchpadTokenDetailsServiceActions, LaunchpadTokenDetailsServiceAllowedActions, LaunchpadTokenDetailsServiceTokenUpdatedEvent, LaunchpadTokenDetailsServiceStatusChangedEvent, LaunchpadTokenDetailsServiceSubscriptionErrorEvent, LaunchpadTokenDetailsServiceEvents, LaunchpadTokenDetailsServiceAllowedEvents, LaunchpadTokenDetailsServiceMessenger, LaunchpadEventType, RawLaunchpadTokenEvent, LaunchpadTokenCreatedEvent, LaunchpadTokenStatsEvent, LaunchpadTokenMigratedEvent, LaunchpadTokenEvent, LaunchpadTokenDetailsSubscriptionOptions, } from './ws/launchpad/index.js';
14
14
  export { ApiPlatformClient, createApiPlatformClient, AccountsApiClient, PricesApiClient, TokenApiClient, TokensApiClient, API_URLS, STALE_TIMES, GC_TIMES, V6_DEFI_POSITION_TYPES, calculateRetryDelay, getQueryOptionsOverrides, shouldRetry, HttpError, } from './api/index.js';
15
- export type { ApiPlatformClientOptions, ApiUrls, FetchOptions, PageInfo, SupportedCurrency, MarketDataDetails, V5BalanceItem, V5BalancesResponse, V2BalanceItem, V2BalancesResponse, V4BalancesResponse, V6VsCurrency, V6DeFiPositionType, V6BalanceMetadata, V6StellarTokenBalanceMetadata, V6TokenBalanceMetadata, V6BalanceItem, V6BalancesResponse, V1SupportedNetworksResponse, V2SupportedNetworksResponse, V2ActiveNetworksResponse, V1TransactionByHashResponse, V1AccountTransactionsResponse, V4MultiAccountTransactionsResponse, V5Transaction, V5TransactionValueTransfer, V5TransactionMiscOperation, V5TransactionFeeAsset, V5TransactionFee, V5TransactionLog, V5TransactionRecord, V5MultiAccountTransactionsResponse, V5MultiAccountTransactionsQueryOptions, ValueTransfer, V1AccountRelationshipResult, NftItem, V2NftsResponse, TokenDiscoveryItem, V2TokensResponse, V3SpotPricesResponse, CoinGeckoSpotPrice, ExchangeRateInfo, V1ExchangeRatesResponse, PriceSupportedNetworksResponse, PriceV1SupportedNetworksResponse, PriceV2SupportedNetworksResponse, V1HistoricalPricesResponse, V3HistoricalPricesResponse, TokenMetadata, TokenListQueryOptions, TokenV2SupportedNetworksResponse, V1TokenDescriptionResponse, NetworkInfo, TopAsset, TrendingSortBy, TrendingToken, TopGainersSortOption, TrendingSortOption, V1SuggestedOccurrenceFloorsResponse, V1TokenSupportedNetworksResponse, V2TokenSupportedNetworksResponse, V3AssetResponse, } from './api/index.js';
15
+ export type { ApiPlatformClientOptions, ApiUrls, FetchOptions, PageInfo, SupportedCurrency, MarketDataDetails, V5BalanceItem, V5BalancesResponse, V2BalanceItem, V2BalancesResponse, V4BalancesResponse, V6VsCurrency, V6DeFiPositionType, V6BalanceMetadata, V6StellarTokenBalanceMetadata, V6TokenBalanceMetadata, V6BalanceItem, V6BalancesResponse, V1SupportedNetworksResponse, V2SupportedNetworksResponse, V2ActiveNetworksResponse, V1TransactionByHashResponse, V1AccountTransactionsResponse, V4MultiAccountTransactionsResponse, V5Transaction, V5TransactionValueTransfer, V5TransactionMiscOperation, V5TransactionFeeAsset, V5TransactionFee, V5TransactionLog, V5TransactionRecord, V5MultiAccountTransactionsResponse, V5MultiAccountTransactionsQueryOptions, ValueTransfer, V1AccountRelationshipResult, NftItem, V2NftsResponse, TokenDiscoveryItem, V2TokensResponse, V3SpotPricesResponse, CoinGeckoSpotPrice, ExchangeRateInfo, V1ExchangeRatesResponse, PriceSupportedNetworksResponse, PriceV1SupportedNetworksResponse, PriceV2SupportedNetworksResponse, V1HistoricalPricesResponse, V3HistoricalPricesResponse, TokenMetadata, TokenListQueryOptions, TokenV2SupportedNetworksResponse, V1TokenDescriptionResponse, NetworkInfo, TopAsset, TrendingSortBy, TrendingToken, TopGainersSortOption, TrendingSortOption, V1SuggestedOccurrenceFloorsResponse, V2AssetResponse, V2AssetsQueryOptions, V1TokenSupportedNetworksResponse, V2TokenSupportedNetworksResponse, V3AssetResponse, } from './api/index.js';
16
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,kBAAkB,GACnB,MAAM,iCAAiC,CAAC;AAiBzC,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,OAAO,EACL,sBAAsB,EACtB,wCAAwC,EACxC,uCAAuC,GACxC,MAAM,gCAAgC,CAAC;AA8BxC,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAE/E,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,+BAA+B,CAAC;AASvC,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,OAAO,EACL,YAAY,EACZ,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAiB7B,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAQhF,+EAA+E;AAC/E,kCAAkC;AAClC,+EAA+E;AAE/E,OAAO,EACL,4BAA4B,EAC5B,qCAAqC,EACrC,oCAAoC,EACpC,YAAY,EACZ,cAAc,EACd,UAAU,EACV,gCAAgC,GACjC,MAAM,yBAAyB,CAAC;AAsBjC,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EACL,iBAAiB,EACjB,uBAAuB;AACvB,yBAAyB;AACzB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,eAAe;AACf,YAAY;AACZ,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,sBAAsB;AACtB,UAAU;AACV,mBAAmB,EACnB,wBAAwB,EACxB,WAAW;AACX,SAAS;AACT,SAAS,GACV,MAAM,gBAAgB,CAAC","sourcesContent":["// Core Backend Package Exports\n\n// ============================================================================\n// BACKEND WEBSOCKET SERVICE\n// ============================================================================\n\nexport {\n BackendWebSocketService,\n getCloseReason,\n WebSocketState,\n WebSocketEventType,\n} from './ws/BackendWebSocketService.js';\n\nexport type {\n BackendWebSocketServiceOptions,\n ClientRequestMessage,\n ServerResponseMessage,\n ServerNotificationMessage,\n WebSocketMessage,\n ChannelCallback,\n WebSocketSubscription,\n WebSocketConnectionInfo,\n BackendWebSocketServiceActions,\n BackendWebSocketServiceConnectionStateChangedEvent,\n BackendWebSocketServiceEvents,\n BackendWebSocketServiceMessenger,\n} from './ws/BackendWebSocketService.js';\n\n// ============================================================================\n// ACCOUNT ACTIVITY SERVICE\n// ============================================================================\n\nexport {\n AccountActivityService,\n ACCOUNT_ACTIVITY_SERVICE_ALLOWED_ACTIONS,\n ACCOUNT_ACTIVITY_SERVICE_ALLOWED_EVENTS,\n} from './ws/AccountActivityService.js';\n\nexport type {\n SystemNotificationData,\n SubscriptionOptions,\n AccountActivityServiceOptions,\n AccountActivityServiceActions,\n AllowedActions as AccountActivityServiceAllowedActions,\n AccountActivityServiceTransactionUpdatedEvent,\n AccountActivityServiceBalanceUpdatedEvent,\n AccountActivityServiceSubscriptionErrorEvent,\n AccountActivityServiceStatusChangedEvent,\n AccountActivityServiceEvents,\n AllowedEvents as AccountActivityServiceAllowedEvents,\n AccountActivityServiceMessenger,\n} from './ws/AccountActivityService.js';\n\n// ============================================================================\n// SHARED TYPES\n// ============================================================================\n\nexport type {\n Transaction,\n Asset,\n Balance,\n Transfer,\n BalanceUpdate,\n AccountActivityMessage,\n} from './types.js';\n\n// ============================================================================\n// API PLATFORM CLIENT SERVICE\n// ============================================================================\n\nexport {\n ApiPlatformClientService,\n apiPlatformClientServiceName,\n} from './ApiPlatformClientService.js';\n\nexport type {\n ApiPlatformClientServiceOptions,\n ApiPlatformClientServiceActions,\n ApiPlatformClientServiceEvents,\n ApiPlatformClientServiceMessenger,\n} from './ApiPlatformClientService.js';\n\n// ============================================================================\n// OHLCV SERVICE\n// ============================================================================\n\nexport {\n OHLCVService,\n OHLCV_SERVICE_ALLOWED_ACTIONS,\n OHLCV_SERVICE_ALLOWED_EVENTS,\n} from './ws/ohlcv/index.js';\n\nexport type {\n OHLCVBar,\n OHLCVSubscriptionOptions,\n OHLCVSystemNotificationData,\n OHLCVServiceOptions,\n OHLCVServiceActions,\n OHLCVServiceAllowedActions,\n OHLCVServiceBarUpdatedEvent,\n OHLCVServiceChainStatusChangedEvent,\n OHLCVServiceSubscriptionErrorEvent,\n OHLCVServiceEvents,\n OHLCVServiceAllowedEvents,\n OHLCVServiceMessenger,\n} from './ws/ohlcv/index.js';\n\n// ============================================================================\n// CHANNEL SUBSCRIPTION MANAGER\n// ============================================================================\n\nexport { ChannelSubscriptionManager } from './ws/ChannelSubscriptionManager.js';\n\nexport type {\n ChannelSubscriptionManagerMessenger,\n ChannelSubscriptionManagerOptions,\n ChannelSubscriptionOperation,\n} from './ws/ChannelSubscriptionManager.js';\n\n// ============================================================================\n// LAUNCHPAD TOKEN DETAILS SERVICE\n// ============================================================================\n\nexport {\n LaunchpadTokenDetailsService,\n LAUNCHPAD_TDP_SERVICE_ALLOWED_ACTIONS,\n LAUNCHPAD_TDP_SERVICE_ALLOWED_EVENTS,\n buildChannel,\n normalizeEvent,\n parseBatch,\n LAUNCHPAD_SUBSCRIPTION_NAMESPACE,\n} from './ws/launchpad/index.js';\n\nexport type {\n LaunchpadSystemNotificationData,\n LaunchpadTokenDetailsServiceOptions,\n LaunchpadTokenDetailsServiceActions,\n LaunchpadTokenDetailsServiceAllowedActions,\n LaunchpadTokenDetailsServiceTokenUpdatedEvent,\n LaunchpadTokenDetailsServiceStatusChangedEvent,\n LaunchpadTokenDetailsServiceSubscriptionErrorEvent,\n LaunchpadTokenDetailsServiceEvents,\n LaunchpadTokenDetailsServiceAllowedEvents,\n LaunchpadTokenDetailsServiceMessenger,\n LaunchpadEventType,\n RawLaunchpadTokenEvent,\n LaunchpadTokenCreatedEvent,\n LaunchpadTokenStatsEvent,\n LaunchpadTokenMigratedEvent,\n LaunchpadTokenEvent,\n LaunchpadTokenDetailsSubscriptionOptions,\n} from './ws/launchpad/index.js';\n\n// ============================================================================\n// API PLATFORM CLIENT\n// ============================================================================\n\nexport {\n ApiPlatformClient,\n createApiPlatformClient,\n // Individual API clients\n AccountsApiClient,\n PricesApiClient,\n TokenApiClient,\n TokensApiClient,\n // Constants\n API_URLS,\n STALE_TIMES,\n GC_TIMES,\n V6_DEFI_POSITION_TYPES,\n // Helpers\n calculateRetryDelay,\n getQueryOptionsOverrides,\n shouldRetry,\n // Errors\n HttpError,\n} from './api/index.js';\n\n// ============================================================================\n// API PLATFORM CLIENT TYPES\n// ============================================================================\n\nexport type {\n // Client options\n ApiPlatformClientOptions,\n ApiUrls,\n FetchOptions,\n // Shared types\n PageInfo,\n SupportedCurrency,\n MarketDataDetails,\n // Accounts API types\n V5BalanceItem,\n V5BalancesResponse,\n V2BalanceItem,\n V2BalancesResponse,\n V4BalancesResponse,\n V6VsCurrency,\n V6DeFiPositionType,\n V6BalanceMetadata,\n V6StellarTokenBalanceMetadata,\n V6TokenBalanceMetadata,\n V6BalanceItem,\n V6BalancesResponse,\n V1SupportedNetworksResponse,\n V2SupportedNetworksResponse,\n V2ActiveNetworksResponse,\n V1TransactionByHashResponse,\n V1AccountTransactionsResponse,\n V4MultiAccountTransactionsResponse,\n V5Transaction,\n V5TransactionValueTransfer,\n V5TransactionMiscOperation,\n V5TransactionFeeAsset,\n V5TransactionFee,\n V5TransactionLog,\n V5TransactionRecord,\n V5MultiAccountTransactionsResponse,\n V5MultiAccountTransactionsQueryOptions,\n ValueTransfer,\n V1AccountRelationshipResult,\n NftItem,\n V2NftsResponse,\n TokenDiscoveryItem,\n V2TokensResponse,\n // Prices API types\n V3SpotPricesResponse,\n CoinGeckoSpotPrice,\n ExchangeRateInfo,\n V1ExchangeRatesResponse,\n PriceSupportedNetworksResponse,\n PriceV1SupportedNetworksResponse,\n PriceV2SupportedNetworksResponse,\n V1HistoricalPricesResponse,\n V3HistoricalPricesResponse,\n // Token API types\n TokenMetadata,\n TokenListQueryOptions,\n TokenV2SupportedNetworksResponse,\n V1TokenDescriptionResponse,\n NetworkInfo,\n TopAsset,\n TrendingSortBy,\n TrendingToken,\n TopGainersSortOption,\n TrendingSortOption,\n V1SuggestedOccurrenceFloorsResponse,\n // Tokens API types\n V1TokenSupportedNetworksResponse,\n V2TokenSupportedNetworksResponse,\n V3AssetResponse,\n} from './api/index.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,kBAAkB,GACnB,MAAM,iCAAiC,CAAC;AAiBzC,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,OAAO,EACL,sBAAsB,EACtB,wCAAwC,EACxC,uCAAuC,GACxC,MAAM,gCAAgC,CAAC;AA8BxC,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAE/E,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,+BAA+B,CAAC;AASvC,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,OAAO,EACL,YAAY,EACZ,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAiB7B,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAQhF,+EAA+E;AAC/E,kCAAkC;AAClC,+EAA+E;AAE/E,OAAO,EACL,4BAA4B,EAC5B,qCAAqC,EACrC,oCAAoC,EACpC,YAAY,EACZ,cAAc,EACd,UAAU,EACV,gCAAgC,GACjC,MAAM,yBAAyB,CAAC;AAsBjC,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,OAAO,EACL,iBAAiB,EACjB,uBAAuB;AACvB,yBAAyB;AACzB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,eAAe;AACf,YAAY;AACZ,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,sBAAsB;AACtB,UAAU;AACV,mBAAmB,EACnB,wBAAwB,EACxB,WAAW;AACX,SAAS;AACT,SAAS,GACV,MAAM,gBAAgB,CAAC","sourcesContent":["// Core Backend Package Exports\n\n// ============================================================================\n// BACKEND WEBSOCKET SERVICE\n// ============================================================================\n\nexport {\n BackendWebSocketService,\n getCloseReason,\n WebSocketState,\n WebSocketEventType,\n} from './ws/BackendWebSocketService.js';\n\nexport type {\n BackendWebSocketServiceOptions,\n ClientRequestMessage,\n ServerResponseMessage,\n ServerNotificationMessage,\n WebSocketMessage,\n ChannelCallback,\n WebSocketSubscription,\n WebSocketConnectionInfo,\n BackendWebSocketServiceActions,\n BackendWebSocketServiceConnectionStateChangedEvent,\n BackendWebSocketServiceEvents,\n BackendWebSocketServiceMessenger,\n} from './ws/BackendWebSocketService.js';\n\n// ============================================================================\n// ACCOUNT ACTIVITY SERVICE\n// ============================================================================\n\nexport {\n AccountActivityService,\n ACCOUNT_ACTIVITY_SERVICE_ALLOWED_ACTIONS,\n ACCOUNT_ACTIVITY_SERVICE_ALLOWED_EVENTS,\n} from './ws/AccountActivityService.js';\n\nexport type {\n SystemNotificationData,\n SubscriptionOptions,\n AccountActivityServiceOptions,\n AccountActivityServiceActions,\n AllowedActions as AccountActivityServiceAllowedActions,\n AccountActivityServiceTransactionUpdatedEvent,\n AccountActivityServiceBalanceUpdatedEvent,\n AccountActivityServiceSubscriptionErrorEvent,\n AccountActivityServiceStatusChangedEvent,\n AccountActivityServiceEvents,\n AllowedEvents as AccountActivityServiceAllowedEvents,\n AccountActivityServiceMessenger,\n} from './ws/AccountActivityService.js';\n\n// ============================================================================\n// SHARED TYPES\n// ============================================================================\n\nexport type {\n Transaction,\n Asset,\n Balance,\n Transfer,\n BalanceUpdate,\n AccountActivityMessage,\n} from './types.js';\n\n// ============================================================================\n// API PLATFORM CLIENT SERVICE\n// ============================================================================\n\nexport {\n ApiPlatformClientService,\n apiPlatformClientServiceName,\n} from './ApiPlatformClientService.js';\n\nexport type {\n ApiPlatformClientServiceOptions,\n ApiPlatformClientServiceActions,\n ApiPlatformClientServiceEvents,\n ApiPlatformClientServiceMessenger,\n} from './ApiPlatformClientService.js';\n\n// ============================================================================\n// OHLCV SERVICE\n// ============================================================================\n\nexport {\n OHLCVService,\n OHLCV_SERVICE_ALLOWED_ACTIONS,\n OHLCV_SERVICE_ALLOWED_EVENTS,\n} from './ws/ohlcv/index.js';\n\nexport type {\n OHLCVBar,\n OHLCVSubscriptionOptions,\n OHLCVSystemNotificationData,\n OHLCVServiceOptions,\n OHLCVServiceActions,\n OHLCVServiceAllowedActions,\n OHLCVServiceBarUpdatedEvent,\n OHLCVServiceChainStatusChangedEvent,\n OHLCVServiceSubscriptionErrorEvent,\n OHLCVServiceEvents,\n OHLCVServiceAllowedEvents,\n OHLCVServiceMessenger,\n} from './ws/ohlcv/index.js';\n\n// ============================================================================\n// CHANNEL SUBSCRIPTION MANAGER\n// ============================================================================\n\nexport { ChannelSubscriptionManager } from './ws/ChannelSubscriptionManager.js';\n\nexport type {\n ChannelSubscriptionManagerMessenger,\n ChannelSubscriptionManagerOptions,\n ChannelSubscriptionOperation,\n} from './ws/ChannelSubscriptionManager.js';\n\n// ============================================================================\n// LAUNCHPAD TOKEN DETAILS SERVICE\n// ============================================================================\n\nexport {\n LaunchpadTokenDetailsService,\n LAUNCHPAD_TDP_SERVICE_ALLOWED_ACTIONS,\n LAUNCHPAD_TDP_SERVICE_ALLOWED_EVENTS,\n buildChannel,\n normalizeEvent,\n parseBatch,\n LAUNCHPAD_SUBSCRIPTION_NAMESPACE,\n} from './ws/launchpad/index.js';\n\nexport type {\n LaunchpadSystemNotificationData,\n LaunchpadTokenDetailsServiceOptions,\n LaunchpadTokenDetailsServiceActions,\n LaunchpadTokenDetailsServiceAllowedActions,\n LaunchpadTokenDetailsServiceTokenUpdatedEvent,\n LaunchpadTokenDetailsServiceStatusChangedEvent,\n LaunchpadTokenDetailsServiceSubscriptionErrorEvent,\n LaunchpadTokenDetailsServiceEvents,\n LaunchpadTokenDetailsServiceAllowedEvents,\n LaunchpadTokenDetailsServiceMessenger,\n LaunchpadEventType,\n RawLaunchpadTokenEvent,\n LaunchpadTokenCreatedEvent,\n LaunchpadTokenStatsEvent,\n LaunchpadTokenMigratedEvent,\n LaunchpadTokenEvent,\n LaunchpadTokenDetailsSubscriptionOptions,\n} from './ws/launchpad/index.js';\n\n// ============================================================================\n// API PLATFORM CLIENT\n// ============================================================================\n\nexport {\n ApiPlatformClient,\n createApiPlatformClient,\n // Individual API clients\n AccountsApiClient,\n PricesApiClient,\n TokenApiClient,\n TokensApiClient,\n // Constants\n API_URLS,\n STALE_TIMES,\n GC_TIMES,\n V6_DEFI_POSITION_TYPES,\n // Helpers\n calculateRetryDelay,\n getQueryOptionsOverrides,\n shouldRetry,\n // Errors\n HttpError,\n} from './api/index.js';\n\n// ============================================================================\n// API PLATFORM CLIENT TYPES\n// ============================================================================\n\nexport type {\n // Client options\n ApiPlatformClientOptions,\n ApiUrls,\n FetchOptions,\n // Shared types\n PageInfo,\n SupportedCurrency,\n MarketDataDetails,\n // Accounts API types\n V5BalanceItem,\n V5BalancesResponse,\n V2BalanceItem,\n V2BalancesResponse,\n V4BalancesResponse,\n V6VsCurrency,\n V6DeFiPositionType,\n V6BalanceMetadata,\n V6StellarTokenBalanceMetadata,\n V6TokenBalanceMetadata,\n V6BalanceItem,\n V6BalancesResponse,\n V1SupportedNetworksResponse,\n V2SupportedNetworksResponse,\n V2ActiveNetworksResponse,\n V1TransactionByHashResponse,\n V1AccountTransactionsResponse,\n V4MultiAccountTransactionsResponse,\n V5Transaction,\n V5TransactionValueTransfer,\n V5TransactionMiscOperation,\n V5TransactionFeeAsset,\n V5TransactionFee,\n V5TransactionLog,\n V5TransactionRecord,\n V5MultiAccountTransactionsResponse,\n V5MultiAccountTransactionsQueryOptions,\n ValueTransfer,\n V1AccountRelationshipResult,\n NftItem,\n V2NftsResponse,\n TokenDiscoveryItem,\n V2TokensResponse,\n // Prices API types\n V3SpotPricesResponse,\n CoinGeckoSpotPrice,\n ExchangeRateInfo,\n V1ExchangeRatesResponse,\n PriceSupportedNetworksResponse,\n PriceV1SupportedNetworksResponse,\n PriceV2SupportedNetworksResponse,\n V1HistoricalPricesResponse,\n V3HistoricalPricesResponse,\n // Token API types\n TokenMetadata,\n TokenListQueryOptions,\n TokenV2SupportedNetworksResponse,\n V1TokenDescriptionResponse,\n NetworkInfo,\n TopAsset,\n TrendingSortBy,\n TrendingToken,\n TopGainersSortOption,\n TrendingSortOption,\n V1SuggestedOccurrenceFloorsResponse,\n V2AssetResponse,\n V2AssetsQueryOptions,\n // Tokens API types\n V1TokenSupportedNetworksResponse,\n V2TokenSupportedNetworksResponse,\n V3AssetResponse,\n} from './api/index.js';\n"]}
@@ -2,7 +2,7 @@
2
2
  * OHLCV Service for real-time candlestick data streaming via WebSocket.
3
3
  *
4
4
  * Wraps {@link BackendWebSocketService} through the messenger pattern to
5
- * provide subscribe/unsubscribe semantics for OHLCV market-data channels.
5
+ * provide subscribe/unsubscribe semantics for OHLCV channels.
6
6
  * The per-channel subscription lifecycle (reference counting, grace-period
7
7
  * unsubscribe, unsubscribe retry, resubscribe on reconnect) is delegated to a
8
8
  * shared {@link ChannelSubscriptionManager} by composition; this service keeps
@@ -17,7 +17,7 @@ import type { OHLCVServiceMethodActions } from './OHLCVService-method-action-typ
17
17
  import type { OHLCVBar, OHLCVSubscriptionOptions } from './types.js';
18
18
  declare const SERVICE_NAME = "OHLCVService";
19
19
  /**
20
- * System notification data for chain status updates on market-data channels.
20
+ * System notification data for chain status updates on OHLCV channels.
21
21
  */
22
22
  export type OHLCVSystemNotificationData = {
23
23
  chainIds: string[];
@@ -28,6 +28,11 @@ export type OHLCVSystemNotificationData = {
28
28
  * Configuration options for the OHLCV service.
29
29
  */
30
30
  export type OHLCVServiceOptions = {
31
+ /**
32
+ * Channel namespace (default: 'ohlcv.v1').
33
+ * Pass 'market-data.v1' to feature-flag the previous stream.
34
+ */
35
+ subscriptionNamespace?: string;
31
36
  /** Optional callback to trace performance of OHLCV operations (default: no-op) */
32
37
  traceFn?: TraceCallback;
33
38
  };
@@ -1 +1 @@
1
- {"version":3,"file":"OHLCVService.d.ts","sourceRoot":"","sources":["../../../src/ws/ohlcv/OHLCVService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,aAAa,EAGd,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,mDAAmD,CAAC;AAC9G,OAAO,KAAK,EAEV,kDAAkD,EAEnD,MAAM,+BAA+B,CAAC;AAOvC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,KAAK,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAMrE,QAAA,MAAM,YAAY,iBAAiB,CAAC;AAcpC;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAMF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,kFAAkF;IAClF,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAMF,MAAM,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AAE5D,eAAO,MAAM,6BAA6B,sUAEhC,CAAC;AAEX,eAAO,MAAM,4BAA4B,6DAE/B,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,oCAAoC,CAAC;AAIlE,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,yBAAyB,CAAC;IAChC,OAAO,EAAE,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,IAAI,EAAE,iCAAiC,CAAC;IACxC,OAAO,EAAE,CAAC;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9E,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,IAAI,EAAE,gCAAgC,CAAC;IACvC,OAAO,EAAE,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClE,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAC1B,2BAA2B,GAC3B,mCAAmC,GACnC,kCAAkC,CAAC;AAEvC,MAAM,MAAM,aAAa,GAAG,kDAAkD,CAAC;AAE/E,MAAM,MAAM,qBAAqB,GAAG,SAAS,CAC3C,OAAO,YAAY,EACnB,mBAAmB,GAAG,cAAc,EACpC,kBAAkB,GAAG,aAAa,CACnC,CAAC;AAMF;;;;;;;;;;;;;;GAcG;AACH,qBAAa,YAAY;;IACvB,QAAQ,CAAC,IAAI,kBAAgB;IAc7B,YACE,OAAO,EAAE,mBAAmB,GAAG;QAAE,SAAS,EAAE,qBAAqB,CAAA;KAAE,EAkCpE;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,CAEX;IAMD;;;;;;;;OAQG;IACG,SAAS,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhE;IAED;;;;;;;OAOG;IACG,WAAW,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;IA4FD;;OAEG;IACH,OAAO,IAAI,IAAI,CAGd;CACF"}
1
+ {"version":3,"file":"OHLCVService.d.ts","sourceRoot":"","sources":["../../../src/ws/ohlcv/OHLCVService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,aAAa,EAGd,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,mDAAmD,CAAC;AAC9G,OAAO,KAAK,EAEV,kDAAkD,EAEnD,MAAM,+BAA+B,CAAC;AAOvC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,KAAK,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAMrE,QAAA,MAAM,YAAY,iBAAiB,CAAC;AAYpC;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAMF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kFAAkF;IAClF,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAMF,MAAM,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AAE5D,eAAO,MAAM,6BAA6B,sUAEhC,CAAC;AAEX,eAAO,MAAM,4BAA4B,6DAE/B,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,oCAAoC,CAAC;AAIlE,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,yBAAyB,CAAC;IAChC,OAAO,EAAE,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,mCAAmC,GAAG;IAChD,IAAI,EAAE,iCAAiC,CAAC;IACxC,OAAO,EAAE,CAAC;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9E,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,IAAI,EAAE,gCAAgC,CAAC;IACvC,OAAO,EAAE,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClE,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAC1B,2BAA2B,GAC3B,mCAAmC,GACnC,kCAAkC,CAAC;AAEvC,MAAM,MAAM,aAAa,GAAG,kDAAkD,CAAC;AAE/E,MAAM,MAAM,qBAAqB,GAAG,SAAS,CAC3C,OAAO,YAAY,EACnB,mBAAmB,GAAG,cAAc,EACpC,kBAAkB,GAAG,aAAa,CACnC,CAAC;AAMF;;;;;;;;;;;;;;GAcG;AACH,qBAAa,YAAY;;IACvB,QAAQ,CAAC,IAAI,kBAAgB;IAgB7B,YACE,OAAO,EAAE,mBAAmB,GAAG;QAAE,SAAS,EAAE,qBAAqB,CAAA;KAAE,EAoCpE;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,CAEX;IAMD;;;;;;;;OAQG;IACG,SAAS,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhE;IAED;;;;;;;OAOG;IACG,WAAW,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;IA4FD;;OAEG;IACH,OAAO,IAAI,IAAI,CAGd;CACF"}
@@ -2,7 +2,7 @@
2
2
  * OHLCV Service for real-time candlestick data streaming via WebSocket.
3
3
  *
4
4
  * Wraps {@link BackendWebSocketService} through the messenger pattern to
5
- * provide subscribe/unsubscribe semantics for OHLCV market-data channels.
5
+ * provide subscribe/unsubscribe semantics for OHLCV channels.
6
6
  * The per-channel subscription lifecycle (reference counting, grace-period
7
7
  * unsubscribe, unsubscribe retry, resubscribe on reconnect) is delegated to a
8
8
  * shared {@link ChannelSubscriptionManager} by composition; this service keeps
@@ -18,8 +18,7 @@ import { ChannelSubscriptionManager, CHANNEL_SUBSCRIPTION_MANAGER_ALLOWED_ACTION
18
18
  const SERVICE_NAME = 'OHLCVService';
19
19
  const log = createModuleLogger(projectLogger, SERVICE_NAME);
20
20
  const MESSENGER_EXPOSED_METHODS = ['subscribe', 'unsubscribe'];
21
- const SUBSCRIPTION_NAMESPACE = 'market-data.v1';
22
- const SYSTEM_NOTIFICATIONS_CHANNEL = `system-notifications.v1.${SUBSCRIPTION_NAMESPACE}`;
21
+ const DEFAULT_SUBSCRIPTION_NAMESPACE = 'ohlcv.v1';
23
22
  export const OHLCV_SERVICE_ALLOWED_ACTIONS = [
24
23
  ...CHANNEL_SUBSCRIPTION_MANAGER_ALLOWED_ACTIONS,
25
24
  ];
@@ -47,6 +46,7 @@ export const OHLCV_SERVICE_ALLOWED_EVENTS = [
47
46
  export class OHLCVService {
48
47
  name = SERVICE_NAME;
49
48
  #messenger;
49
+ #subscriptionNamespace;
50
50
  #trace;
51
51
  #manager;
52
52
  #chainsUp = new Set();
@@ -55,12 +55,14 @@ export class OHLCVService {
55
55
  // =============================================================================
56
56
  constructor(options) {
57
57
  this.#messenger = options.messenger;
58
+ this.#subscriptionNamespace =
59
+ options.subscriptionNamespace ?? DEFAULT_SUBSCRIPTION_NAMESPACE;
58
60
  this.#trace =
59
61
  options.traceFn ??
60
62
  ((_request, fn) => fn?.());
61
63
  this.#manager = new ChannelSubscriptionManager({
62
64
  messenger: this.#messenger,
63
- channelType: SUBSCRIPTION_NAMESPACE,
65
+ channelType: this.#subscriptionNamespace,
64
66
  logPrefix: 'OHLCV-WS',
65
67
  onMessage: (channel, notification) => this.#handleBarUpdate(channel, notification),
66
68
  onSubscriptionError: (channel, error, operation) => this.#messenger.publish('OHLCVService:subscriptionError', {
@@ -68,7 +70,7 @@ export class OHLCVService {
68
70
  error,
69
71
  operation,
70
72
  }),
71
- systemNotificationsChannel: SYSTEM_NOTIFICATIONS_CHANNEL,
73
+ systemNotificationsChannel: `system-notifications.v1.${this.#subscriptionNamespace}`,
72
74
  onSystemNotification: (notification) => this.#handleSystemNotification(notification),
73
75
  onConnectionStateChange: (connectionInfo) => this.#handleConnectionStateChange(connectionInfo),
74
76
  });
@@ -168,7 +170,7 @@ export class OHLCVService {
168
170
  // Private — Utility
169
171
  // =============================================================================
170
172
  #buildChannel(options) {
171
- return `${SUBSCRIPTION_NAMESPACE}.${options.assetId}.${options.interval}.${options.currency}`;
173
+ return `${this.#subscriptionNamespace}.${options.assetId}.${options.interval}.${options.currency}`;
172
174
  }
173
175
  // =============================================================================
174
176
  // Public — Cleanup
@@ -1 +1 @@
1
- {"version":3,"file":"OHLCVService.js","sourceRoot":"","sources":["../../../src/ws/ohlcv/OHLCVService.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * OHLCV Service for real-time candlestick data streaming via WebSocket.\n *\n * Wraps {@link BackendWebSocketService} through the messenger pattern to\n * provide subscribe/unsubscribe semantics for OHLCV market-data channels.\n * The per-channel subscription lifecycle (reference counting, grace-period\n * unsubscribe, unsubscribe retry, resubscribe on reconnect) is delegated to a\n * shared {@link ChannelSubscriptionManager} by composition; this service keeps\n * only the OHLCV domain concerns (channel-string building, bar forwarding, and\n * chain-status system notifications).\n */\n\nimport type {\n TraceCallback,\n TraceContext,\n TraceRequest,\n} from '@metamask/controller-utils';\nimport type { Messenger } from '@metamask/messenger';\n\nimport { projectLogger, createModuleLogger } from '../../logger.js';\nimport type { BackendWebSocketServiceMethodActions } from '../BackendWebSocketService-method-action-types.js';\nimport type {\n WebSocketConnectionInfo,\n BackendWebSocketServiceConnectionStateChangedEvent,\n ServerNotificationMessage,\n} from '../BackendWebSocketService.js';\nimport { WebSocketState } from '../BackendWebSocketService.js';\nimport {\n ChannelSubscriptionManager,\n CHANNEL_SUBSCRIPTION_MANAGER_ALLOWED_ACTIONS,\n CHANNEL_SUBSCRIPTION_MANAGER_ALLOWED_EVENTS,\n} from '../ChannelSubscriptionManager.js';\nimport type { OHLCVServiceMethodActions } from './OHLCVService-method-action-types.js';\nimport type { OHLCVBar, OHLCVSubscriptionOptions } from './types.js';\n\n// =============================================================================\n// Constants\n// =============================================================================\n\nconst SERVICE_NAME = 'OHLCVService';\n\nconst log = createModuleLogger(projectLogger, SERVICE_NAME);\n\nconst MESSENGER_EXPOSED_METHODS = ['subscribe', 'unsubscribe'] as const;\n\nconst SUBSCRIPTION_NAMESPACE = 'market-data.v1';\n\nconst SYSTEM_NOTIFICATIONS_CHANNEL = `system-notifications.v1.${SUBSCRIPTION_NAMESPACE}`;\n\n// =============================================================================\n// Types — System Notifications\n// =============================================================================\n\n/**\n * System notification data for chain status updates on market-data channels.\n */\nexport type OHLCVSystemNotificationData = {\n chainIds: string[];\n status: 'down' | 'up';\n timestamp?: number;\n};\n\n// =============================================================================\n// Types — Service Options\n// =============================================================================\n\n/**\n * Configuration options for the OHLCV service.\n */\nexport type OHLCVServiceOptions = {\n /** Optional callback to trace performance of OHLCV operations (default: no-op) */\n traceFn?: TraceCallback;\n};\n\n// =============================================================================\n// Action and Event Types\n// =============================================================================\n\nexport type OHLCVServiceActions = OHLCVServiceMethodActions;\n\nexport const OHLCV_SERVICE_ALLOWED_ACTIONS = [\n ...CHANNEL_SUBSCRIPTION_MANAGER_ALLOWED_ACTIONS,\n] as const;\n\nexport const OHLCV_SERVICE_ALLOWED_EVENTS = [\n ...CHANNEL_SUBSCRIPTION_MANAGER_ALLOWED_EVENTS,\n] as const;\n\nexport type AllowedActions = BackendWebSocketServiceMethodActions;\n\n// Events published by OHLCVService\n\nexport type OHLCVServiceBarUpdatedEvent = {\n type: `OHLCVService:barUpdated`;\n payload: [{ channel: string; bar: OHLCVBar }];\n};\n\nexport type OHLCVServiceChainStatusChangedEvent = {\n type: `OHLCVService:chainStatusChanged`;\n payload: [{ chainIds: string[]; status: 'up' | 'down'; timestamp?: number }];\n};\n\nexport type OHLCVServiceSubscriptionErrorEvent = {\n type: `OHLCVService:subscriptionError`;\n payload: [{ channel: string; error: string; operation: string }];\n};\n\nexport type OHLCVServiceEvents =\n | OHLCVServiceBarUpdatedEvent\n | OHLCVServiceChainStatusChangedEvent\n | OHLCVServiceSubscriptionErrorEvent;\n\nexport type AllowedEvents = BackendWebSocketServiceConnectionStateChangedEvent;\n\nexport type OHLCVServiceMessenger = Messenger<\n typeof SERVICE_NAME,\n OHLCVServiceActions | AllowedActions,\n OHLCVServiceEvents | AllowedEvents\n>;\n\n// =============================================================================\n// Main Service Class\n// =============================================================================\n\n/**\n * Service for real-time OHLCV candlestick streaming via the backend WebSocket\n * gateway. Communicates with {@link BackendWebSocketService} exclusively\n * through the messenger — no direct import of the class.\n *\n * Features:\n * - Reference counting: multiple UI consumers share one WebSocket subscription\n * - Grace-period unsubscribe: reuses same-channel subs on rapid back navigation\n * - Grace-period flush: immediately unsubscribes other channels on navigation\n * - Unsubscribe retry: retries failed unsubs with backoff before force reconnect\n * - Idempotency: duplicate subscribe calls for the same channel are no-ops\n * - Reconnect resilience: resubscribes all active channels on reconnect\n * - Chain-status forwarding: listens to system-notifications for chain up/down\n *\n */\nexport class OHLCVService {\n readonly name = SERVICE_NAME;\n\n readonly #messenger: OHLCVServiceMessenger;\n\n readonly #trace: TraceCallback;\n\n readonly #manager: ChannelSubscriptionManager;\n\n readonly #chainsUp = new Set<string>();\n\n // =============================================================================\n // Constructor\n // =============================================================================\n\n constructor(\n options: OHLCVServiceOptions & { messenger: OHLCVServiceMessenger },\n ) {\n this.#messenger = options.messenger;\n\n this.#trace =\n options.traceFn ??\n ((<Result>(\n _request: TraceRequest,\n fn?: (context?: TraceContext) => Result,\n ) => fn?.()) as TraceCallback);\n\n this.#manager = new ChannelSubscriptionManager({\n messenger: this.#messenger,\n channelType: SUBSCRIPTION_NAMESPACE,\n logPrefix: 'OHLCV-WS',\n onMessage: (channel, notification): void =>\n this.#handleBarUpdate(channel, notification),\n onSubscriptionError: (channel, error, operation): void =>\n this.#messenger.publish('OHLCVService:subscriptionError', {\n channel,\n error,\n operation,\n }),\n systemNotificationsChannel: SYSTEM_NOTIFICATIONS_CHANNEL,\n onSystemNotification: (notification): void =>\n this.#handleSystemNotification(notification),\n onConnectionStateChange: (connectionInfo): void =>\n this.#handleConnectionStateChange(connectionInfo),\n });\n\n this.#messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n }\n\n /**\n * Register the system-notifications channel callback.\n */\n init(): void {\n this.#manager.init();\n }\n\n // =============================================================================\n // Public — Subscribe / Unsubscribe\n // =============================================================================\n\n /**\n * Subscribe to an OHLCV channel. If this is the first subscriber for the\n * given asset/interval/currency combination a WebSocket subscription is\n * created. Additional calls for the same combination only bump the reference\n * count.\n *\n * @param options - The subscription parameters.\n * @returns A promise that resolves once the subscription is established.\n */\n async subscribe(options: OHLCVSubscriptionOptions): Promise<void> {\n await this.#manager.subscribe(this.#buildChannel(options));\n }\n\n /**\n * Unsubscribe from an OHLCV channel. Decrements the reference count and,\n * when it reaches zero, starts a grace-period timer before actually\n * unsubscribing from the WebSocket to absorb rapid navigation patterns.\n *\n * @param options - The subscription parameters to unsubscribe from.\n * @returns A promise that resolves once the unsubscription is processed.\n */\n async unsubscribe(options: OHLCVSubscriptionOptions): Promise<void> {\n await this.#manager.unsubscribe(this.#buildChannel(options));\n }\n\n // =============================================================================\n // Private — Message Handlers\n // =============================================================================\n\n #handleBarUpdate(\n channel: string,\n notification: ServerNotificationMessage,\n ): void {\n const bar = notification.data as OHLCVBar;\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.#trace(\n {\n name: `${SERVICE_NAME} Bar Update`,\n data: { channel, timestamp: bar.timestamp },\n tags: { service: SERVICE_NAME },\n },\n () => {\n this.#messenger.publish('OHLCVService:barUpdated', { channel, bar });\n },\n );\n }\n\n #handleSystemNotification(notification: ServerNotificationMessage): void {\n const data = notification.data as OHLCVSystemNotificationData;\n const { timestamp } = notification;\n\n if (!data.chainIds || !Array.isArray(data.chainIds) || !data.status) {\n throw new Error(\n 'Invalid system notification data: missing chainIds or status',\n );\n }\n\n if (data.status === 'up') {\n for (const chainId of data.chainIds) {\n this.#chainsUp.add(chainId);\n }\n } else {\n for (const chainId of data.chainIds) {\n this.#chainsUp.delete(chainId);\n }\n }\n\n this.#messenger.publish('OHLCVService:chainStatusChanged', {\n chainIds: data.chainIds,\n status: data.status,\n timestamp,\n });\n\n log(`OHLCV-WS: Chain status change: ${data.status}`, {\n chains: data.chainIds,\n status: data.status,\n });\n }\n\n #handleConnectionStateChange(connectionInfo: WebSocketConnectionInfo): void {\n if (connectionInfo.state !== WebSocketState.DISCONNECTED) {\n return;\n }\n\n const chainsToMarkDown = Array.from(this.#chainsUp);\n\n if (chainsToMarkDown.length > 0) {\n this.#messenger.publish('OHLCVService:chainStatusChanged', {\n chainIds: chainsToMarkDown,\n status: 'down',\n timestamp: Date.now(),\n });\n\n log('OHLCV-WS: WebSocket disconnection — marked tracked chains as down', {\n count: chainsToMarkDown.length,\n chains: chainsToMarkDown,\n });\n\n this.#chainsUp.clear();\n }\n }\n\n // =============================================================================\n // Private — Utility\n // =============================================================================\n\n #buildChannel(options: OHLCVSubscriptionOptions): string {\n return `${SUBSCRIPTION_NAMESPACE}.${options.assetId}.${options.interval}.${options.currency}`;\n }\n\n // =============================================================================\n // Public — Cleanup\n // =============================================================================\n\n /**\n * Destroy the service and clean up all resources.\n */\n destroy(): void {\n this.#chainsUp.clear();\n this.#manager.destroy();\n }\n}\n"]}
1
+ {"version":3,"file":"OHLCVService.js","sourceRoot":"","sources":["../../../src/ws/ohlcv/OHLCVService.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * OHLCV Service for real-time candlestick data streaming via WebSocket.\n *\n * Wraps {@link BackendWebSocketService} through the messenger pattern to\n * provide subscribe/unsubscribe semantics for OHLCV channels.\n * The per-channel subscription lifecycle (reference counting, grace-period\n * unsubscribe, unsubscribe retry, resubscribe on reconnect) is delegated to a\n * shared {@link ChannelSubscriptionManager} by composition; this service keeps\n * only the OHLCV domain concerns (channel-string building, bar forwarding, and\n * chain-status system notifications).\n */\n\nimport type {\n TraceCallback,\n TraceContext,\n TraceRequest,\n} from '@metamask/controller-utils';\nimport type { Messenger } from '@metamask/messenger';\n\nimport { projectLogger, createModuleLogger } from '../../logger.js';\nimport type { BackendWebSocketServiceMethodActions } from '../BackendWebSocketService-method-action-types.js';\nimport type {\n WebSocketConnectionInfo,\n BackendWebSocketServiceConnectionStateChangedEvent,\n ServerNotificationMessage,\n} from '../BackendWebSocketService.js';\nimport { WebSocketState } from '../BackendWebSocketService.js';\nimport {\n ChannelSubscriptionManager,\n CHANNEL_SUBSCRIPTION_MANAGER_ALLOWED_ACTIONS,\n CHANNEL_SUBSCRIPTION_MANAGER_ALLOWED_EVENTS,\n} from '../ChannelSubscriptionManager.js';\nimport type { OHLCVServiceMethodActions } from './OHLCVService-method-action-types.js';\nimport type { OHLCVBar, OHLCVSubscriptionOptions } from './types.js';\n\n// =============================================================================\n// Constants\n// =============================================================================\n\nconst SERVICE_NAME = 'OHLCVService';\n\nconst log = createModuleLogger(projectLogger, SERVICE_NAME);\n\nconst MESSENGER_EXPOSED_METHODS = ['subscribe', 'unsubscribe'] as const;\n\nconst DEFAULT_SUBSCRIPTION_NAMESPACE = 'ohlcv.v1';\n\n// =============================================================================\n// Types — System Notifications\n// =============================================================================\n\n/**\n * System notification data for chain status updates on OHLCV channels.\n */\nexport type OHLCVSystemNotificationData = {\n chainIds: string[];\n status: 'down' | 'up';\n timestamp?: number;\n};\n\n// =============================================================================\n// Types — Service Options\n// =============================================================================\n\n/**\n * Configuration options for the OHLCV service.\n */\nexport type OHLCVServiceOptions = {\n /**\n * Channel namespace (default: 'ohlcv.v1').\n * Pass 'market-data.v1' to feature-flag the previous stream.\n */\n subscriptionNamespace?: string;\n /** Optional callback to trace performance of OHLCV operations (default: no-op) */\n traceFn?: TraceCallback;\n};\n\n// =============================================================================\n// Action and Event Types\n// =============================================================================\n\nexport type OHLCVServiceActions = OHLCVServiceMethodActions;\n\nexport const OHLCV_SERVICE_ALLOWED_ACTIONS = [\n ...CHANNEL_SUBSCRIPTION_MANAGER_ALLOWED_ACTIONS,\n] as const;\n\nexport const OHLCV_SERVICE_ALLOWED_EVENTS = [\n ...CHANNEL_SUBSCRIPTION_MANAGER_ALLOWED_EVENTS,\n] as const;\n\nexport type AllowedActions = BackendWebSocketServiceMethodActions;\n\n// Events published by OHLCVService\n\nexport type OHLCVServiceBarUpdatedEvent = {\n type: `OHLCVService:barUpdated`;\n payload: [{ channel: string; bar: OHLCVBar }];\n};\n\nexport type OHLCVServiceChainStatusChangedEvent = {\n type: `OHLCVService:chainStatusChanged`;\n payload: [{ chainIds: string[]; status: 'up' | 'down'; timestamp?: number }];\n};\n\nexport type OHLCVServiceSubscriptionErrorEvent = {\n type: `OHLCVService:subscriptionError`;\n payload: [{ channel: string; error: string; operation: string }];\n};\n\nexport type OHLCVServiceEvents =\n | OHLCVServiceBarUpdatedEvent\n | OHLCVServiceChainStatusChangedEvent\n | OHLCVServiceSubscriptionErrorEvent;\n\nexport type AllowedEvents = BackendWebSocketServiceConnectionStateChangedEvent;\n\nexport type OHLCVServiceMessenger = Messenger<\n typeof SERVICE_NAME,\n OHLCVServiceActions | AllowedActions,\n OHLCVServiceEvents | AllowedEvents\n>;\n\n// =============================================================================\n// Main Service Class\n// =============================================================================\n\n/**\n * Service for real-time OHLCV candlestick streaming via the backend WebSocket\n * gateway. Communicates with {@link BackendWebSocketService} exclusively\n * through the messenger — no direct import of the class.\n *\n * Features:\n * - Reference counting: multiple UI consumers share one WebSocket subscription\n * - Grace-period unsubscribe: reuses same-channel subs on rapid back navigation\n * - Grace-period flush: immediately unsubscribes other channels on navigation\n * - Unsubscribe retry: retries failed unsubs with backoff before force reconnect\n * - Idempotency: duplicate subscribe calls for the same channel are no-ops\n * - Reconnect resilience: resubscribes all active channels on reconnect\n * - Chain-status forwarding: listens to system-notifications for chain up/down\n *\n */\nexport class OHLCVService {\n readonly name = SERVICE_NAME;\n\n readonly #messenger: OHLCVServiceMessenger;\n\n readonly #subscriptionNamespace: string;\n\n readonly #trace: TraceCallback;\n\n readonly #manager: ChannelSubscriptionManager;\n\n readonly #chainsUp = new Set<string>();\n\n // =============================================================================\n // Constructor\n // =============================================================================\n\n constructor(\n options: OHLCVServiceOptions & { messenger: OHLCVServiceMessenger },\n ) {\n this.#messenger = options.messenger;\n this.#subscriptionNamespace =\n options.subscriptionNamespace ?? DEFAULT_SUBSCRIPTION_NAMESPACE;\n\n this.#trace =\n options.traceFn ??\n ((<Result>(\n _request: TraceRequest,\n fn?: (context?: TraceContext) => Result,\n ) => fn?.()) as TraceCallback);\n\n this.#manager = new ChannelSubscriptionManager({\n messenger: this.#messenger,\n channelType: this.#subscriptionNamespace,\n logPrefix: 'OHLCV-WS',\n onMessage: (channel, notification): void =>\n this.#handleBarUpdate(channel, notification),\n onSubscriptionError: (channel, error, operation): void =>\n this.#messenger.publish('OHLCVService:subscriptionError', {\n channel,\n error,\n operation,\n }),\n systemNotificationsChannel: `system-notifications.v1.${this.#subscriptionNamespace}`,\n onSystemNotification: (notification): void =>\n this.#handleSystemNotification(notification),\n onConnectionStateChange: (connectionInfo): void =>\n this.#handleConnectionStateChange(connectionInfo),\n });\n\n this.#messenger.registerMethodActionHandlers(\n this,\n MESSENGER_EXPOSED_METHODS,\n );\n }\n\n /**\n * Register the system-notifications channel callback.\n */\n init(): void {\n this.#manager.init();\n }\n\n // =============================================================================\n // Public — Subscribe / Unsubscribe\n // =============================================================================\n\n /**\n * Subscribe to an OHLCV channel. If this is the first subscriber for the\n * given asset/interval/currency combination a WebSocket subscription is\n * created. Additional calls for the same combination only bump the reference\n * count.\n *\n * @param options - The subscription parameters.\n * @returns A promise that resolves once the subscription is established.\n */\n async subscribe(options: OHLCVSubscriptionOptions): Promise<void> {\n await this.#manager.subscribe(this.#buildChannel(options));\n }\n\n /**\n * Unsubscribe from an OHLCV channel. Decrements the reference count and,\n * when it reaches zero, starts a grace-period timer before actually\n * unsubscribing from the WebSocket to absorb rapid navigation patterns.\n *\n * @param options - The subscription parameters to unsubscribe from.\n * @returns A promise that resolves once the unsubscription is processed.\n */\n async unsubscribe(options: OHLCVSubscriptionOptions): Promise<void> {\n await this.#manager.unsubscribe(this.#buildChannel(options));\n }\n\n // =============================================================================\n // Private — Message Handlers\n // =============================================================================\n\n #handleBarUpdate(\n channel: string,\n notification: ServerNotificationMessage,\n ): void {\n const bar = notification.data as OHLCVBar;\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.#trace(\n {\n name: `${SERVICE_NAME} Bar Update`,\n data: { channel, timestamp: bar.timestamp },\n tags: { service: SERVICE_NAME },\n },\n () => {\n this.#messenger.publish('OHLCVService:barUpdated', { channel, bar });\n },\n );\n }\n\n #handleSystemNotification(notification: ServerNotificationMessage): void {\n const data = notification.data as OHLCVSystemNotificationData;\n const { timestamp } = notification;\n\n if (!data.chainIds || !Array.isArray(data.chainIds) || !data.status) {\n throw new Error(\n 'Invalid system notification data: missing chainIds or status',\n );\n }\n\n if (data.status === 'up') {\n for (const chainId of data.chainIds) {\n this.#chainsUp.add(chainId);\n }\n } else {\n for (const chainId of data.chainIds) {\n this.#chainsUp.delete(chainId);\n }\n }\n\n this.#messenger.publish('OHLCVService:chainStatusChanged', {\n chainIds: data.chainIds,\n status: data.status,\n timestamp,\n });\n\n log(`OHLCV-WS: Chain status change: ${data.status}`, {\n chains: data.chainIds,\n status: data.status,\n });\n }\n\n #handleConnectionStateChange(connectionInfo: WebSocketConnectionInfo): void {\n if (connectionInfo.state !== WebSocketState.DISCONNECTED) {\n return;\n }\n\n const chainsToMarkDown = Array.from(this.#chainsUp);\n\n if (chainsToMarkDown.length > 0) {\n this.#messenger.publish('OHLCVService:chainStatusChanged', {\n chainIds: chainsToMarkDown,\n status: 'down',\n timestamp: Date.now(),\n });\n\n log('OHLCV-WS: WebSocket disconnection — marked tracked chains as down', {\n count: chainsToMarkDown.length,\n chains: chainsToMarkDown,\n });\n\n this.#chainsUp.clear();\n }\n }\n\n // =============================================================================\n // Private — Utility\n // =============================================================================\n\n #buildChannel(options: OHLCVSubscriptionOptions): string {\n return `${this.#subscriptionNamespace}.${options.assetId}.${options.interval}.${options.currency}`;\n }\n\n // =============================================================================\n // Public — Cleanup\n // =============================================================================\n\n /**\n * Destroy the service and clean up all resources.\n */\n destroy(): void {\n this.#chainsUp.clear();\n this.#manager.destroy();\n }\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  * OHLCV WebSocket streaming types for real-time candlestick data.
3
3
  */
4
4
  /**
5
- * A single OHLCV candlestick bar received from the market-data WebSocket stream.
5
+ * A single OHLCV candlestick bar received from the OHLCV WebSocket stream.
6
6
  */
7
7
  export type OHLCVBar = {
8
8
  /** Unix timestamp (seconds) of the candle open */
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ws/ohlcv/types.ts"],"names":[],"mappings":"AAAA;;GAEG","sourcesContent":["/**\n * OHLCV WebSocket streaming types for real-time candlestick data.\n */\n\n/**\n * A single OHLCV candlestick bar received from the market-data WebSocket stream.\n */\nexport type OHLCVBar = {\n /** Unix timestamp (seconds) of the candle open */\n timestamp: number;\n /** Opening price */\n open: number;\n /** Highest price during the candle period */\n high: number;\n /** Lowest price during the candle period */\n low: number;\n /** Closing price (latest) */\n close: number;\n /** Trading volume during the candle period */\n volume: number;\n};\n\n/**\n * Options for subscribing to an OHLCV channel.\n */\nexport type OHLCVSubscriptionOptions = {\n /** CAIP-19 asset identifier, e.g. \"eip155:8453/erc20:0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\" */\n assetId: string;\n /** Candle interval, e.g. \"1m\", \"5m\", \"15m\", \"1h\", \"4h\", \"1d\" */\n interval: string;\n /** Fiat currency code, e.g. \"usd\", \"eur\" */\n currency: string;\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ws/ohlcv/types.ts"],"names":[],"mappings":"AAAA;;GAEG","sourcesContent":["/**\n * OHLCV WebSocket streaming types for real-time candlestick data.\n */\n\n/**\n * A single OHLCV candlestick bar received from the OHLCV WebSocket stream.\n */\nexport type OHLCVBar = {\n /** Unix timestamp (seconds) of the candle open */\n timestamp: number;\n /** Opening price */\n open: number;\n /** Highest price during the candle period */\n high: number;\n /** Lowest price during the candle period */\n low: number;\n /** Closing price (latest) */\n close: number;\n /** Trading volume during the candle period */\n volume: number;\n};\n\n/**\n * Options for subscribing to an OHLCV channel.\n */\nexport type OHLCVSubscriptionOptions = {\n /** CAIP-19 asset identifier, e.g. \"eip155:8453/erc20:0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\" */\n assetId: string;\n /** Candle interval, e.g. \"1m\", \"5m\", \"15m\", \"1h\", \"4h\", \"1d\" */\n interval: string;\n /** Fiat currency code, e.g. \"usd\", \"eur\" */\n currency: string;\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/core-backend",
3
- "version": "13.0.0-preview-d4ac59b6e",
3
+ "version": "13.0.0-preview-c3d36da85",
4
4
  "description": "Core backend services for MetaMask",
5
5
  "keywords": [
6
6
  "Ethereum",
@@ -38,7 +38,7 @@
38
38
  "build:docs": "typedoc",
39
39
  "build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'",
40
40
  "changelog:update": "../../scripts/update-changelog.sh @metamask/core-backend",
41
- "changelog:validate": "../../scripts/validate-changelog.sh @metamask/core-backend",
41
+ "changelog:validate": "../../scripts/validate-changelog.sh",
42
42
  "lint:tsconfigs": "node --import ../../scripts/resolver/register.ts ../../scripts/lint-tsconfigs/lint-tsconfigs.ts",
43
43
  "lint:tsconfigs:fix": "node --import ../../scripts/resolver/register.ts ../../scripts/lint-tsconfigs/lint-tsconfigs.ts --fix",
44
44
  "messenger-action-types:check": "node --import ../../scripts/resolver/register.ts ../../packages/messenger-cli/src/cli.ts --formatter oxfmt --esm --check",
@@ -46,6 +46,7 @@
46
46
  "since-latest-release": "../../scripts/since-latest-release.sh",
47
47
  "test": "vitest",
48
48
  "test:clean": "vitest --clearCache",
49
+ "test:coverage": "vitest --coverage",
49
50
  "test:verbose": "vitest --reporter=verbose",
50
51
  "test:watch": "vitest --watch"
51
52
  },
@@ -60,17 +61,17 @@
60
61
  "@tanstack/query-core": "^5.103.2",
61
62
  "async-mutex": "^0.5.0",
62
63
  "cockatiel": "^3.2.1",
63
- "uuid": "^14.0.0"
64
+ "uuid": "^14.0.1"
64
65
  },
65
66
  "devDependencies": {
66
- "@metamask/auto-changelog": "^6.2.1",
67
+ "@metamask/auto-changelog": "^7.1.0",
67
68
  "@typescript/native": "npm:typescript@^7.0.2",
68
69
  "jsdom": "^27.0.0",
69
70
  "rimraf": "^6.1.3",
70
71
  "typedoc": "^0.28.20",
71
72
  "typedoc-plugin-missing-exports": "^4.1.4",
72
73
  "typescript": "npm:@typescript/typescript6@^6.0.2",
73
- "vitest": "^5.0.0"
74
+ "vitest": "5.0.3"
74
75
  },
75
76
  "engines": {
76
77
  "node": "^22.14.0 || ^24 || ^26"