'use client' import type { QueryFunction, QueryKey } from '@tanstack/query-core' import { parseQueryArgs, QueryObserver } from '@tanstack/query-core' import type { DefinedUseQueryResult, UseQueryOptions, UseQueryResult, } from './types' import { useBaseQuery } from './useBaseQuery' // HOOK export function useQuery< TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( options: Omit< UseQueryOptions, 'initialData' > & { initialData?: () => undefined }, ): UseQueryResult export function useQuery< TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( options: Omit< UseQueryOptions, 'initialData' > & { initialData: TQueryFnData | (() => TQueryFnData) }, ): DefinedUseQueryResult export function useQuery< TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( options: UseQueryOptions, ): UseQueryResult export function useQuery< TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( queryKey: TQueryKey, options?: Omit< UseQueryOptions, 'queryKey' | 'initialData' > & { initialData?: () => undefined }, ): UseQueryResult export function useQuery< TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( queryKey: TQueryKey, options?: Omit< UseQueryOptions, 'queryKey' | 'initialData' > & { initialData: TQueryFnData | (() => TQueryFnData) }, ): DefinedUseQueryResult export function useQuery< TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( queryKey: TQueryKey, options?: Omit< UseQueryOptions, 'queryKey' >, ): UseQueryResult export function useQuery< TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( queryKey: TQueryKey, queryFn: QueryFunction, options?: Omit< UseQueryOptions, 'queryKey' | 'queryFn' | 'initialData' > & { initialData?: () => undefined }, ): UseQueryResult export function useQuery< TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( queryKey: TQueryKey, queryFn: QueryFunction, options?: Omit< UseQueryOptions, 'queryKey' | 'queryFn' | 'initialData' > & { initialData: TQueryFnData | (() => TQueryFnData) }, ): DefinedUseQueryResult export function useQuery< TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( queryKey: TQueryKey, queryFn: QueryFunction, options?: Omit< UseQueryOptions, 'queryKey' | 'queryFn' >, ): UseQueryResult export function useQuery< TQueryFnData, TError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( arg1: TQueryKey | UseQueryOptions, arg2?: | QueryFunction | UseQueryOptions, arg3?: UseQueryOptions, ): UseQueryResult { const parsedOptions = parseQueryArgs(arg1, arg2, arg3) return useBaseQuery(parsedOptions, QueryObserver) }