import type { TRPCClientErrorLike } from '@trpc/client';
import type { AnyRouter } from '@trpc/server/unstable-core-do-not-import';
import type { TRPCContextState } from '../../internals/context';
import type { TRPCUseQueries, TRPCUseSuspenseQueries } from '../../internals/useQueries';
import type { CreateTRPCReactOptions } from '../types';
import type { CreateClient, TRPCProvider, UseDehydratedState, UseTRPCInfiniteQueryOptions, UseTRPCInfiniteQueryResult, UseTRPCMutationOptions, UseTRPCMutationResult, UseTRPCQueryOptions, UseTRPCQueryResult, UseTRPCSubscriptionOptions, UseTRPCSuspenseInfiniteQueryOptions, UseTRPCSuspenseInfiniteQueryResult, UseTRPCSuspenseQueryOptions, UseTRPCSuspenseQueryResult } from './types';
/**
 * @internal
 */
export declare function createRootHooks<TRouter extends AnyRouter, TSSRContext = unknown>(config?: CreateTRPCReactOptions<TRouter>): {
    Provider: TRPCProvider<TRouter, TSSRContext>;
    createClient: CreateClient<TRouter>;
    useContext: () => TRPCContextState<TRouter, TSSRContext>;
    useUtils: () => TRPCContextState<TRouter, TSSRContext>;
    useQuery: (path: string[], input: unknown, opts?: UseTRPCQueryOptions<unknown, unknown, TRPCClientErrorLike<TRouter>, unknown> | undefined) => UseTRPCQueryResult<unknown, TRPCClientErrorLike<TRouter>>;
    useSuspenseQuery: (path: string[], input: unknown, opts?: UseTRPCSuspenseQueryOptions<unknown, unknown, TRPCClientErrorLike<TRouter>> | undefined) => UseTRPCSuspenseQueryResult<unknown, TRPCClientErrorLike<TRouter>>;
    useQueries: TRPCUseQueries<TRouter>;
    useSuspenseQueries: TRPCUseSuspenseQueries<TRouter>;
    useMutation: (path: string[], opts?: UseTRPCMutationOptions<unknown, TRPCClientErrorLike<TRouter>, unknown, unknown> | undefined) => UseTRPCMutationResult<unknown, TRPCClientErrorLike<TRouter>, unknown, unknown>;
    useSubscription: (path: string[], input: unknown, opts: UseTRPCSubscriptionOptions<unknown, TRPCClientErrorLike<TRouter>>) => void;
    useDehydratedState: UseDehydratedState<TRouter>;
    useInfiniteQuery: (path: string[], input: unknown, opts: UseTRPCInfiniteQueryOptions<unknown, unknown, TRPCClientErrorLike<TRouter>>) => UseTRPCInfiniteQueryResult<unknown, TRPCClientErrorLike<TRouter>, unknown>;
    useSuspenseInfiniteQuery: (path: string[], input: unknown, opts: UseTRPCSuspenseInfiniteQueryOptions<unknown, unknown, TRPCClientErrorLike<TRouter>>) => UseTRPCSuspenseInfiniteQueryResult<unknown, TRPCClientErrorLike<TRouter>, unknown>;
};
/**
 * Hack to infer the type of `createReactQueryHooks`
 * @link https://stackoverflow.com/a/59072991
 */
declare class GnClass<TRouter extends AnyRouter, TSSRContext = unknown> {
    fn(): {
        Provider: TRPCProvider<TRouter, TSSRContext>;
        createClient: CreateClient<TRouter>;
        useContext: () => TRPCContextState<TRouter, TSSRContext>;
        useUtils: () => TRPCContextState<TRouter, TSSRContext>;
        useQuery: (path: string[], input: unknown, opts?: UseTRPCQueryOptions<unknown, unknown, TRPCClientErrorLike<TRouter>, unknown> | undefined) => UseTRPCQueryResult<unknown, TRPCClientErrorLike<TRouter>>;
        useSuspenseQuery: (path: string[], input: unknown, opts?: UseTRPCSuspenseQueryOptions<unknown, unknown, TRPCClientErrorLike<TRouter>> | undefined) => UseTRPCSuspenseQueryResult<unknown, TRPCClientErrorLike<TRouter>>;
        useQueries: TRPCUseQueries<TRouter>;
        useSuspenseQueries: TRPCUseSuspenseQueries<TRouter>;
        useMutation: (path: string[], opts?: UseTRPCMutationOptions<unknown, TRPCClientErrorLike<TRouter>, unknown, unknown> | undefined) => UseTRPCMutationResult<unknown, TRPCClientErrorLike<TRouter>, unknown, unknown>;
        useSubscription: (path: string[], input: unknown, opts: UseTRPCSubscriptionOptions<unknown, TRPCClientErrorLike<TRouter>>) => void;
        useDehydratedState: UseDehydratedState<TRouter>;
        useInfiniteQuery: (path: string[], input: unknown, opts: UseTRPCInfiniteQueryOptions<unknown, unknown, TRPCClientErrorLike<TRouter>>) => UseTRPCInfiniteQueryResult<unknown, TRPCClientErrorLike<TRouter>, unknown>;
        useSuspenseInfiniteQuery: (path: string[], input: unknown, opts: UseTRPCSuspenseInfiniteQueryOptions<unknown, unknown, TRPCClientErrorLike<TRouter>>) => UseTRPCSuspenseInfiniteQueryResult<unknown, TRPCClientErrorLike<TRouter>, unknown>;
    };
}
type returnTypeInferer<TType> = TType extends (a: Record<string, string>) => infer U ? U : never;
type fooType<TRouter extends AnyRouter, TSSRContext = unknown> = GnClass<TRouter, TSSRContext>['fn'];
/**
 * Infer the type of a `createReactQueryHooks` function
 * @internal
 */
export type CreateReactQueryHooks<TRouter extends AnyRouter, TSSRContext = unknown> = returnTypeInferer<fooType<TRouter, TSSRContext>>;
export {};
//# sourceMappingURL=createHooksInternal.d.ts.map