{"version":3,"file":"client.cjs","sourceRoot":"","sources":["../../../src/api/tokens/client.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Tokens API Client - tokens.api.cx.metamask.io\n *\n * Handles bulk token operations including:\n * - Supported networks (v1, v2)\n * - V3 Assets\n */\n\nimport type {\n  FetchQueryOptions,\n  QueryFunctionContext,\n} from '@tanstack/query-core';\n\nimport { BaseApiClient, API_URLS, STALE_TIMES, GC_TIMES } from '../base-client';\nimport { getQueryOptionsOverrides } from '../shared-types';\nimport type { FetchOptions } from '../shared-types';\nimport type {\n  V1TokenSupportedNetworksResponse,\n  V2TokenSupportedNetworksResponse,\n  V3AssetResponse,\n  V3AssetsQueryOptions,\n} from './types';\n\n/**\n * Tokens API Client.\n * Provides methods for interacting with the Tokens API.\n */\nexport class TokensApiClient extends BaseApiClient {\n  // ==========================================================================\n  // CACHE MANAGEMENT\n  // ==========================================================================\n\n  /**\n   * Invalidate all token queries.\n   */\n  async invalidateTokens(): Promise<void> {\n    await this.queryClient.invalidateQueries({\n      queryKey: ['tokens'],\n    });\n  }\n\n  // ==========================================================================\n  // SUPPORTED NETWORKS\n  // ==========================================================================\n\n  /**\n   * Returns the TanStack Query options object for token v1 supported networks.\n   *\n   * @param options - Fetch options including cache settings.\n   * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n   */\n  getTokenV1SupportedNetworksQueryOptions(\n    options?: FetchOptions,\n  ): FetchQueryOptions<V1TokenSupportedNetworksResponse> {\n    return {\n      queryKey: ['tokens', 'v1SupportedNetworks'],\n      queryFn: ({ signal }: QueryFunctionContext) =>\n        this.fetch<V1TokenSupportedNetworksResponse>(\n          API_URLS.TOKENS,\n          '/v1/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 token supported networks (v1 endpoint).\n   *\n   * @param options - Fetch options including cache settings.\n   * @returns The supported networks response.\n   */\n  async fetchTokenV1SupportedNetworks(\n    options?: FetchOptions,\n  ): Promise<V1TokenSupportedNetworksResponse> {\n    return this.queryClient.fetchQuery(\n      this.getTokenV1SupportedNetworksQueryOptions(options),\n    );\n  }\n\n  /**\n   * Returns the TanStack Query options object for token 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  getTokenV2SupportedNetworksQueryOptions(\n    options?: FetchOptions,\n  ): FetchQueryOptions<V2TokenSupportedNetworksResponse> {\n    return {\n      queryKey: ['tokens', 'v2SupportedNetworks'],\n      queryFn: ({ signal }: QueryFunctionContext) =>\n        this.fetch<V2TokenSupportedNetworksResponse>(\n          API_URLS.TOKENS,\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 token supported networks (v2 endpoint).\n   * Returns both fullSupport and partialSupport networks.\n   *\n   * @param options - Fetch options including cache settings.\n   * @returns The supported networks response.\n   */\n  async fetchTokenV2SupportedNetworks(\n    options?: FetchOptions,\n  ): Promise<V2TokenSupportedNetworksResponse> {\n    return this.queryClient.fetchQuery(\n      this.getTokenV2SupportedNetworksQueryOptions(options),\n    );\n  }\n\n  // ==========================================================================\n  // V3 ASSETS\n  // ==========================================================================\n\n  /**\n   * Returns the TanStack Query options object for v3 assets.\n   *\n   * @param assetIds - Array of CAIP-19 asset IDs.\n   * @param queryOptions - API query options (filters, etc.).\n   * @param fetchOptions - Fetch options including cache settings.\n   * @returns TanStack Query options for use with useQuery, useSuspenseQuery, etc.\n   */\n  getV3AssetsQueryOptions(\n    assetIds: string[],\n    queryOptions?: V3AssetsQueryOptions,\n    fetchOptions?: FetchOptions,\n  ): FetchQueryOptions<V3AssetResponse[]> {\n    return {\n      queryKey: [\n        'tokens',\n        'v3Assets',\n        { assetIds: [...assetIds].sort(), ...queryOptions },\n      ],\n      queryFn: async ({\n        signal,\n      }: QueryFunctionContext): Promise<V3AssetResponse[]> => {\n        if (assetIds.length === 0) {\n          return [];\n        }\n        return this.fetch<V3AssetResponse[]>(API_URLS.TOKENS, '/v3/assets', {\n          signal,\n          params: {\n            assetIds,\n            ...queryOptions,\n          },\n        });\n      },\n      ...getQueryOptionsOverrides(fetchOptions),\n      staleTime: fetchOptions?.staleTime ?? STALE_TIMES.TOKEN_METADATA,\n      gcTime: fetchOptions?.gcTime ?? GC_TIMES.EXTENDED,\n    };\n  }\n\n  /**\n   * Fetch assets by IDs (v3) with caching.\n   *\n   * @param assetIds - Array of CAIP-19 asset IDs.\n   * @param queryOptions - Query options to include additional data in response.\n   * @param fetchOptions - Fetch options including cache settings.\n   * @returns Array of asset responses.\n   */\n  async fetchV3Assets(\n    assetIds: string[],\n    queryOptions?: V3AssetsQueryOptions,\n    fetchOptions?: FetchOptions,\n  ): Promise<V3AssetResponse[]> {\n    if (assetIds.length === 0) {\n      return [];\n    }\n    return this.queryClient.fetchQuery(\n      this.getV3AssetsQueryOptions(assetIds, queryOptions, fetchOptions),\n    );\n  }\n}\n"]}