import { Ref } from "vue-demi"; import type { QueryFunction, QueryObserverResult } from "react-query/types/core"; import { UseQueryOptions } from "./useQuery"; declare type MAXIMUM_DEPTH = 20; declare type GetOptions = T extends { queryFnData: infer TQueryFnData; error?: infer TError; data: infer TData; } ? UseQueryOptions : T extends { queryFnData: infer TQueryFnData; error?: infer TError; } ? UseQueryOptions : T extends { data: infer TData; error?: infer TError; } ? UseQueryOptions : T extends [infer TQueryFnData, infer TError, infer TData] ? UseQueryOptions : T extends [infer TQueryFnData, infer TError] ? UseQueryOptions : T extends [infer TQueryFnData] ? UseQueryOptions : T extends { queryFn?: QueryFunction; select: (data: any) => infer TData; } ? UseQueryOptions : T extends { queryFn?: QueryFunction; } ? UseQueryOptions : UseQueryOptions; declare type GetResults = T extends { queryFnData: any; error?: infer TError; data: infer TData; } ? QueryObserverResult : T extends { queryFnData: infer TQueryFnData; error?: infer TError; } ? QueryObserverResult : T extends { data: infer TData; error?: infer TError; } ? QueryObserverResult : T extends [any, infer TError, infer TData] ? QueryObserverResult : T extends [infer TQueryFnData, infer TError] ? QueryObserverResult : T extends [infer TQueryFnData] ? QueryObserverResult : T extends { queryFn?: QueryFunction; select: (data: any) => infer TData; } ? QueryObserverResult : T extends { queryFn?: QueryFunction; } ? QueryObserverResult : QueryObserverResult; /** * UseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param */ export declare type UseQueriesOptions = []> = Depth["length"] extends MAXIMUM_DEPTH ? UseQueryOptions[] : T extends [] ? [] : T extends [infer Head] ? [...Result, GetOptions] : T extends [infer Head, ...infer Tail] ? UseQueriesOptions<[...Tail], [...Result, GetOptions], [...Depth, 1]> : unknown[] extends T ? T : T extends UseQueryOptions[] ? UseQueryOptions[] : UseQueryOptions[]; /** * UseQueriesResults reducer recursively maps type param to results */ export declare type UseQueriesResults = []> = Depth["length"] extends MAXIMUM_DEPTH ? QueryObserverResult[] : T extends [] ? [] : T extends [infer Head] ? [...Result, GetResults] : T extends [infer Head, ...infer Tail] ? UseQueriesResults<[...Tail], [...Result, GetResults], [...Depth, 1]> : T extends UseQueryOptions[] ? QueryObserverResult[] : QueryObserverResult[]; declare type UseQueriesOptionsArg = readonly [...UseQueriesOptions]; export declare function useQueries(queries: Ref> | UseQueriesOptionsArg): Readonly>; export {};