import { type HttpContractConfig } from "../contracts/index.js";
import type { HttpRequestLike, HttpResponseLike } from "./http.js";
/**
 * Request body limits enforced before contract body validation.
 */
export interface RequestBodyOptions {
    /**
     * Maximum request body size in bytes for JSON/text route bodies.
     *
     * @default 1048576
     */
    maxBytes?: number;
}
export type PreparedRequestInputs = {
    path: unknown;
    query: unknown;
    headers: unknown;
    body: unknown;
    rawHeaders: Record<string, string>;
};
export type RequestPreparationResult = {
    ok: true;
    inputs: PreparedRequestInputs;
} | {
    ok: false;
    response: HttpResponseLike;
};
export declare function requestHeadersToRecord(headers: Headers): Record<string, string>;
export declare function requestBodyLimit(options: RequestBodyOptions | undefined): number;
export declare function prepareRequestInputs(args: {
    contract: HttpContractConfig;
    req: HttpRequestLike;
    url: URL;
    rawHeaders: Record<string, string>;
    matchedParams: Record<string, string>;
    maxRequestBodyBytes: number;
    rawRoute?: boolean;
}): Promise<RequestPreparationResult>;
//# sourceMappingURL=request-preparation.d.ts.map