import type { DeepUnwrapRef, MaybeRefOrGetter, ShallowOption } from './types' import type { DataTag, DefaultError, InitialDataFunction, NonUndefinedGuard, QueryBooleanOption, QueryKey, QueryObserverOptions, } from '@tanstack/query-core' export type QueryOptions< TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, > = { [Property in keyof QueryObserverOptions< TQueryFnData, TError, TData, TQueryData, TQueryKey >]: Property extends 'enabled' ? | MaybeRefOrGetter | (() => QueryBooleanOption< TQueryFnData, TError, TQueryData, DeepUnwrapRef >) : Property extends 'queryKey' ? MaybeRefOrGetter : QueryObserverOptions< TQueryFnData, TError, TData, TQueryData, DeepUnwrapRef >[Property] } & ShallowOption export type UndefinedInitialQueryOptions< TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, > = QueryOptions & { initialData?: | undefined | InitialDataFunction> | NonUndefinedGuard } export type DefinedInitialQueryOptions< TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, > = QueryOptions & { initialData: | NonUndefinedGuard | (() => NonUndefinedGuard) } export function queryOptions< TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( options: DefinedInitialQueryOptions, ): DefinedInitialQueryOptions & { queryKey: DataTag } export function queryOptions< TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( options: () => DefinedInitialQueryOptions< TQueryFnData, TError, TData, TQueryKey >, ): () => DefinedInitialQueryOptions & { queryKey: DataTag } export function queryOptions< TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( options: UndefinedInitialQueryOptions, ): UndefinedInitialQueryOptions & { queryKey: DataTag } export function queryOptions< TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( options: () => UndefinedInitialQueryOptions< TQueryFnData, TError, TData, TQueryKey >, ): () => UndefinedInitialQueryOptions< TQueryFnData, TError, TData, TQueryKey > & { queryKey: DataTag } export function queryOptions(options: unknown) { return options }