import type { TemplatedApp } from 'uWebSockets.js';
import type { AnyRouter } from '@trpc/server';
import { type NodeHTTPCreateContextFnOptions, type NodeHTTPCreateContextOption } from '@trpc/server/adapters/node-http';
import { type HTTPBaseHandlerOptions } from '@trpc/server/http';
import { HttpResponseDecorated } from './fetchCompat';
import { WebSocketConnection } from './websockets';
export interface CreateHandlerOptions<TRouter extends AnyRouter> {
    /**
     * Url path prefix where the tRPC server will be registered.
     * @default ''
     */
    prefix?: string | undefined;
    /**
     * Specify if SSL is used. Set to true if your application is served over HTTPS.
     * @default false
     */
    ssl?: boolean | undefined;
    /**
     * Maximum request body size in bytes. If the body is larger than this, the request will be aborted.
     * Null value allows for unlimited body size.
     * @default null
     */
    maxBodySize?: number | undefined;
    trpcOptions: HandlerOptions<TRouter, Request, HttpResponseDecorated>;
}
export type CreateContextOptions = NodeHTTPCreateContextFnOptions<Request, HttpResponseDecorated> & {
    /**
     * Client must be passed along when the context is created.
     **/
    client?: WebSocketConnection | undefined;
};
/**
 * Applies tRPC request handler to uWebSockets app.
 * @param app - The uWebSockets application.
 * @param opts - Options for configuring the tRPC request handler.
 */
export declare function applyRequestHandler<TRouter extends AnyRouter>(app: TemplatedApp, opts: CreateHandlerOptions<TRouter>): void;
export type HandlerOptions<TRouter extends AnyRouter, TRequest extends Request, TResponse extends HttpResponseDecorated> = HTTPBaseHandlerOptions<TRouter, TRequest> & NodeHTTPCreateContextOption<TRouter, TRequest, TResponse>;
type RequestHandlerOptions<TRouter extends AnyRouter, TRequest extends Request, TResponse extends HttpResponseDecorated> = HandlerOptions<TRouter, TRequest, TResponse> & {
    req: TRequest;
    res: TResponse;
    path: string;
};
export declare function uWsRequestHandler<TRouter extends AnyRouter, TRequest extends Request, TResponse extends HttpResponseDecorated>(opts: RequestHandlerOptions<TRouter, TRequest, TResponse>): Promise<void>;
export {};
