import type { QueryKey, UseQueryOptions, UseSuspenseQueryOptions, UseSuspenseQueryResult, } from '@tanstack/react-query'; import type { AnyRouter, DistributiveOmit, } from '@trpc/server/unstable-core-do-not-import'; import type { UseQueriesProcedureRecord, UseSuspenseQueriesProcedureRecord, UseTRPCQueryOptions, UseTRPCQueryResult, UseTRPCSuspenseQueryOptions, } from '../shared'; /** * @internal */ export type UseQueryOptionsForUseQueries< TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, > = DistributiveOmit< UseQueryOptions, 'queryKey' >; /** * @internal */ export type UseQueryOptionsForUseSuspenseQueries< TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, > = DistributiveOmit< UseSuspenseQueryOptions, 'queryKey' >; /** * @internal */ export type TrpcQueryOptionsForUseQueries = DistributiveOmit, 'queryKey'>; /** * @internal */ export type TrpcQueryOptionsForUseSuspenseQueries = DistributiveOmit< UseTRPCSuspenseQueryOptions, 'queryKey' >; /** * @internal */ export declare type QueriesResults< TQueriesOptions extends UseQueryOptionsForUseQueries[], > = { [TKey in keyof TQueriesOptions]: TQueriesOptions[TKey] extends UseQueryOptionsForUseQueries< infer TQueryFnData, infer TError, infer TData, any > ? UseTRPCQueryResult : never; }; /** * @internal */ export declare type SuspenseQueriesResults< TQueriesOptions extends UseQueryOptionsForUseSuspenseQueries< any, any, any, any >[], > = [ { [TKey in keyof TQueriesOptions]: TQueriesOptions[TKey] extends UseQueryOptionsForUseSuspenseQueries< infer TQueryFnData, any, infer TData, any > ? unknown extends TData ? TQueryFnData : TData : never; }, { [TKey in keyof TQueriesOptions]: TQueriesOptions[TKey] extends UseQueryOptionsForUseSuspenseQueries< infer TQueryFnData, infer TError, infer TData, any > ? UseSuspenseQueryResult< unknown extends TData ? TQueryFnData : TData, TError > : never; }, ]; type GetOptions = TQueryOptions extends UseQueryOptionsForUseQueries ? TQueryOptions : never; /** * @internal */ export type QueriesOptions< TQueriesOptions extends any[], TResult extends any[] = [], > = TQueriesOptions extends [] ? [] : TQueriesOptions extends [infer Head] ? [...TResult, GetOptions] : TQueriesOptions extends [infer Head, ...infer Tail] ? QueriesOptions]> : unknown[] extends TQueriesOptions ? TQueriesOptions : TQueriesOptions extends UseQueryOptionsForUseQueries< infer TQueryFnData, infer TError, infer TData, infer TQueryKey >[] ? UseQueryOptionsForUseQueries< TQueryFnData, TError, TData, TQueryKey >[] : UseQueryOptionsForUseQueries[]; type GetSuspenseOptions = TQueryOptions extends UseQueryOptionsForUseSuspenseQueries ? TQueryOptions : never; /** * @internal */ export type SuspenseQueriesOptions< TQueriesOptions extends any[], TResult extends any[] = [], > = TQueriesOptions extends [] ? [] : TQueriesOptions extends [infer Head] ? [...TResult, GetSuspenseOptions] : TQueriesOptions extends [infer Head, ...infer Tail] ? SuspenseQueriesOptions]> : unknown[] extends TQueriesOptions ? TQueriesOptions : TQueriesOptions extends UseQueryOptionsForUseSuspenseQueries< infer TQueryFnData, infer TError, infer TData, infer TQueryKey >[] ? UseQueryOptionsForUseSuspenseQueries< TQueryFnData, TError, TData, TQueryKey >[] : UseQueryOptionsForUseSuspenseQueries[]; /** * @internal */ export type TRPCUseQueries = < TQueryOptions extends UseQueryOptionsForUseQueries[], TCombinedResult = QueriesResults, >( queriesCallback: ( t: UseQueriesProcedureRecord< TRouter['_def']['_config']['$types'], TRouter['_def']['record'] >, ) => readonly [...QueriesOptions], options?: { combine?: (results: QueriesResults) => TCombinedResult; }, ) => TCombinedResult; /** * @internal */ export type TRPCUseSuspenseQueries = < TQueryOptions extends UseQueryOptionsForUseSuspenseQueries< any, any, any, any >[], >( queriesCallback: ( t: UseSuspenseQueriesProcedureRecord< TRouter['_def']['_config']['$types'], TRouter['_def']['record'] >, ) => readonly [...SuspenseQueriesOptions], ) => SuspenseQueriesResults;