import type { DehydratedState, DehydrateOptions, InfiniteData, QueryClient } from '@tanstack/react-query';
import type { inferRouterClient, TRPCClientError } from '@trpc/client';
import { TRPCUntypedClient } from '@trpc/client';
import type { AnyProcedure, AnyQueryProcedure, AnyRootConfig, AnyRouter, DataTransformerOptions, Filter, inferProcedureInput, inferRouterContext, inferTransformedProcedureOutput, ProtectedIntersection } from '@trpc/server/unstable-core-do-not-import';
import type { CreateTRPCReactQueryClientConfig, ExtractCursorType, TRPCFetchInfiniteQueryOptions, TRPCFetchQueryOptions } from '../shared';
interface CreateSSGHelpersInternal<TRouter extends AnyRouter> {
    router: TRouter;
    ctx: inferRouterContext<TRouter>;
    transformer?: DataTransformerOptions;
}
interface CreateSSGHelpersExternal<TRouter extends AnyRouter> {
    client: inferRouterClient<TRouter> | TRPCUntypedClient<TRouter>;
}
type CreateServerSideHelpersOptions<TRouter extends AnyRouter> = CreateTRPCReactQueryClientConfig & (CreateSSGHelpersExternal<TRouter> | CreateSSGHelpersInternal<TRouter>);
type DecorateProcedure<TConfig extends AnyRootConfig, TProcedure extends AnyProcedure> = {
    /**
     * @link https://tanstack.com/query/v5/docs/react/guides/prefetching
     */
    fetch(input: inferProcedureInput<TProcedure>, opts?: TRPCFetchQueryOptions<inferTransformedProcedureOutput<TConfig, TProcedure>, TRPCClientError<TConfig>>): Promise<inferTransformedProcedureOutput<TConfig, TProcedure>>;
    /**
     * @link https://tanstack.com/query/v5/docs/react/guides/prefetching
     */
    fetchInfinite(input: inferProcedureInput<TProcedure>, opts?: TRPCFetchInfiniteQueryOptions<inferProcedureInput<TProcedure>, inferTransformedProcedureOutput<TConfig, TProcedure>, TRPCClientError<TConfig>>): Promise<InfiniteData<inferTransformedProcedureOutput<TConfig, TProcedure>, NonNullable<ExtractCursorType<inferProcedureInput<TProcedure>>> | null>>;
    /**
     * @link https://tanstack.com/query/v5/docs/react/guides/prefetching
     */
    prefetch(input: inferProcedureInput<TProcedure>, opts?: TRPCFetchQueryOptions<inferTransformedProcedureOutput<TConfig, TProcedure>, TRPCClientError<TConfig>>): Promise<void>;
    /**
     * @link https://tanstack.com/query/v5/docs/react/guides/prefetching
     */
    prefetchInfinite(input: inferProcedureInput<TProcedure>, opts?: TRPCFetchInfiniteQueryOptions<inferProcedureInput<TProcedure>, inferTransformedProcedureOutput<TConfig, TProcedure>, TRPCClientError<TConfig>>): Promise<void>;
};
/**
 * @internal
 */
type DecoratedProcedureSSGRecord<TRouter extends AnyRouter> = {
    [TKey in keyof Filter<TRouter['_def']['record'], AnyQueryProcedure | AnyRouter>]: TRouter['_def']['record'][TKey] extends AnyRouter ? DecoratedProcedureSSGRecord<TRouter['_def']['record'][TKey]> : DecorateProcedure<TRouter['_def']['_config'], TRouter['_def']['record'][TKey]>;
};
/**
 * Create functions you can use for server-side rendering / static generation
 * @link https://trpc.io/docs/v11/client/nextjs/server-side-helpers
 */
export declare function createServerSideHelpers<TRouter extends AnyRouter>(opts: CreateServerSideHelpersOptions<TRouter>): ProtectedIntersection<{
    queryClient: QueryClient;
    dehydrate: (opts?: DehydrateOptions) => DehydratedState;
}, DecoratedProcedureSSGRecord<TRouter>>;
export {};
//# sourceMappingURL=ssgProxy.d.ts.map