import type { DehydratedState, DehydrateOptions, QueryClient } from '@tanstack/react-query';
import type { TRPCClient } from '@trpc/client';
import { TRPCUntypedClient } from '@trpc/client';
import { type TransformerOptions } from '@trpc/client/unstable-internals';
import type { AnyQueryProcedure, AnyRootTypes, AnyRouter, inferClientTypes, inferRouterContext, ProtectedIntersection, RouterRecord } from '@trpc/server/unstable-core-do-not-import';
import type { CreateTRPCReactQueryClientConfig, DecorateQueryProcedure } from '../shared';
type CreateSSGHelpersInternal<TRouter extends AnyRouter> = {
    router: TRouter;
    ctx: inferRouterContext<TRouter>;
} & TransformerOptions<inferClientTypes<TRouter>>;
interface CreateSSGHelpersExternal<TRouter extends AnyRouter> {
    client: TRPCClient<TRouter> | TRPCUntypedClient<TRouter>;
}
type CreateServerSideHelpersOptions<TRouter extends AnyRouter> = CreateTRPCReactQueryClientConfig & (CreateSSGHelpersExternal<TRouter> | CreateSSGHelpersInternal<TRouter>);
type SSGFns = 'queryOptions' | 'infiniteQueryOptions' | 'fetch' | 'fetchInfinite' | 'prefetch' | 'prefetchInfinite';
/**
 * @internal
 */
type DecoratedProcedureSSGRecord<TRoot extends AnyRootTypes, TRecord extends RouterRecord> = {
    [TKey in keyof TRecord]: TRecord[TKey] extends infer $Value ? $Value extends AnyQueryProcedure ? Pick<DecorateQueryProcedure<TRoot, $Value>, SSGFns> : $Value extends RouterRecord ? DecoratedProcedureSSGRecord<TRoot, $Value> : never : never;
};
/**
 * Create functions you can use for server-side rendering / static generation
 * @see 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["_def"]["_config"]["$types"], TRouter["_def"]["record"]>>;
export {};
//# sourceMappingURL=ssgProxy.d.ts.map