import { QueryObserver } from '../core' import { QueryFunction, QueryKey } from '../core/types' import { parseQueryArgs } from '../core/utils' import { UseQueryOptions, UseQueryResult } from './types' import { useBaseQuery } from './useBaseQuery' // HOOK 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?: UseQueryOptions ): UseQueryResult export function useQuery< TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey >( queryKey: TQueryKey, queryFn: QueryFunction, options?: UseQueryOptions ): 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) }