import { InfiniteData, InfiniteQuery, Query, QueryClient } from '../vanilla'; import { UseSuspenseInfiniteQueryOptions, UseSuspenseInfiniteQueryResult, UseSuspenseQueryOptions, UseSuspenseQueryResult } from './useSuspenseQuery'; type MAXIMUM_DEPTH = 20; type GetSuspenseOptions = T extends { query: InfiniteQuery; select: (data: any) => infer TData; } ? UseSuspenseInfiniteQueryOptions : T extends { query: InfiniteQuery; } ? UseSuspenseInfiniteQueryOptions : T extends { query: Query; select: (data: any) => infer TData; } ? UseSuspenseQueryOptions : T extends { query: Query; } ? UseSuspenseQueryOptions : UseSuspenseQueryOptions; type GetSuspenseResults = T extends { query: InfiniteQuery; select: (data: any) => infer TData; } ? UseSuspenseInfiniteQueryResult : T extends { query: InfiniteQuery; } ? UseSuspenseInfiniteQueryResult, TError> : T extends { query: Query; select: (data: any) => infer TData; } ? UseSuspenseQueryResult : T extends { query: Query; } ? UseSuspenseQueryResult : UseSuspenseQueryResult; /** * QueriesOptions reducer recursively unwraps function arguments to infer/enforce type param */ export type SuspenseQueriesOptions = []> = Depth['length'] extends MAXIMUM_DEPTH ? UseSuspenseQueryOptions[] : T extends [] ? [] : T extends [infer Head] ? [...Result, GetSuspenseOptions] : T extends [infer Head, ...infer Tail] ? SuspenseQueriesOptions<[ ...Tail ], [ ...Result, GetSuspenseOptions ], [ ...Depth, 1 ]> : unknown[] extends T ? T : T extends UseSuspenseQueryOptions[] ? UseSuspenseQueryOptions[] : UseSuspenseQueryOptions[]; /** * QueriesResults reducer recursively maps type param to results */ export type SuspenseQueriesResults = []> = Depth['length'] extends MAXIMUM_DEPTH ? UseSuspenseQueryOptions[] : T extends [] ? [] : T extends [infer Head] ? [...Result, GetSuspenseResults] : T extends [infer Head, ...infer Tail] ? SuspenseQueriesResults<[ ...Tail ], [ ...Result, GetSuspenseResults ], [ ...Depth, 1 ]> : T extends UseSuspenseQueryOptions[] ? UseSuspenseQueryResult[] : UseSuspenseQueryResult[]; export declare function useSuspenseQueries>(options: { queries: readonly [...SuspenseQueriesOptions]; combine?: (result: SuspenseQueriesResults) => TCombinedResult; }, queryClient?: QueryClient): TCombinedResult; export {};