import { IncomingMessage, ServerResponse } from "node:http"; //#region src/infra/http-body.d.ts declare const DEFAULT_WEBHOOK_MAX_BODY_BYTES: number; declare const DEFAULT_WEBHOOK_BODY_TIMEOUT_MS = 30000; type RequestBodyLimitErrorCode = "PAYLOAD_TOO_LARGE" | "REQUEST_BODY_TIMEOUT" | "CONNECTION_CLOSED"; type RequestBodyLimitErrorInit = { code: RequestBodyLimitErrorCode; message?: string; }; declare class RequestBodyLimitError extends Error { readonly code: RequestBodyLimitErrorCode; readonly statusCode: number; constructor(init: RequestBodyLimitErrorInit); } declare function isRequestBodyLimitError(error: unknown, code?: RequestBodyLimitErrorCode): error is RequestBodyLimitError; declare function requestBodyErrorToText(code: RequestBodyLimitErrorCode): string; type ReadRequestBodyOptions = { maxBytes: number; timeoutMs?: number; encoding?: BufferEncoding; }; type RequestBodyLimitValues = { maxBytes: number; timeoutMs: number; }; declare function resolveRequestBodyLimitValues(options: { maxBytes: number; timeoutMs?: number; }): RequestBodyLimitValues; declare const testApi: { resolveRequestBodyLimitValues: typeof resolveRequestBodyLimitValues; }; /** Reads one chunk, rejecting and cancelling the reader after an idle timeout. */ declare function readChunkWithIdleTimeout(reader: ReadableStreamDefaultReader, chunkTimeoutMs: number, onIdleTimeout?: (params: { chunkTimeoutMs: number; }) => Error): Promise>>; /** Reads a response body under a byte cap, cancelling the stream on overflow or idle timeout. */ declare function readResponseWithLimit(response: Response, maxBytes: number, options?: { onOverflow?: (params: { size: number; maxBytes: number; res: Response; }) => Error; chunkTimeoutMs?: number; onIdleTimeout?: (params: { chunkTimeoutMs: number; }) => Error; }): Promise; /** Reads a small collapsed text prefix from a response body for diagnostics/errors. */ declare function readResponseTextSnippet(response: Response, options?: { maxBytes?: number; maxChars?: number; chunkTimeoutMs?: number; onIdleTimeout?: (params: { chunkTimeoutMs: number; }) => Error; }): Promise; declare function readRequestBodyWithLimit(req: IncomingMessage, options: ReadRequestBodyOptions): Promise; type ReadJsonBodyResult = { ok: true; value: unknown; } | { ok: false; error: string; code: RequestBodyLimitErrorCode | "INVALID_JSON"; }; type ReadJsonBodyOptions = ReadRequestBodyOptions & { emptyObjectOnEmpty?: boolean; }; declare function readJsonBodyWithLimit(req: IncomingMessage, options: ReadJsonBodyOptions): Promise; type RequestBodyLimitGuard = { dispose: () => void; isTripped: () => boolean; code: () => RequestBodyLimitErrorCode | null; }; type RequestBodyLimitGuardOptions = { maxBytes: number; timeoutMs?: number; responseFormat?: "json" | "text"; responseText?: Partial>; }; declare function installRequestBodyLimitGuard(req: IncomingMessage, res: ServerResponse, options: RequestBodyLimitGuardOptions): RequestBodyLimitGuard; //#endregion export { requestBodyErrorToText as _, ReadRequestBodyOptions as a, RequestBodyLimitGuard as c, isRequestBodyLimitError as d, readChunkWithIdleTimeout as f, readResponseWithLimit as g, readResponseTextSnippet as h, ReadJsonBodyResult as i, RequestBodyLimitGuardOptions as l, readRequestBodyWithLimit as m, DEFAULT_WEBHOOK_MAX_BODY_BYTES as n, RequestBodyLimitError as o, readJsonBodyWithLimit as p, ReadJsonBodyOptions as r, RequestBodyLimitErrorCode as s, DEFAULT_WEBHOOK_BODY_TIMEOUT_MS as t, installRequestBodyLimitGuard as u, testApi as v };