import { Buffer } from 'buffer'; import * as net from 'net'; import * as http from 'http'; import * as http2 from 'http2'; import { MaybePromise } from '@httptoolkit/util'; import { Headers, OngoingRequest, CompletedRequest, OngoingResponse, CompletedResponse, OngoingBody, CompletedBody, TimingEvents, InitiatedRequest, RawHeaders, Destination, InitiatedResponse } from "../types"; import { SocketMetadata } from './socket-extensions'; export declare const shouldKeepAlive: (req: OngoingRequest) => boolean; export declare const writeHead: (response: http.ServerResponse | http2.Http2ServerResponse, status: number, statusMessage?: string | undefined, headers?: Headers | RawHeaders | undefined) => void; export declare function isHttp2(message: http.IncomingMessage | http.ServerResponse | http2.Http2ServerRequest | http2.Http2ServerResponse | OngoingRequest | OngoingResponse): message is http2.Http2ServerRequest | http2.Http2ServerResponse; export declare function encodeBodyBuffer(buffer: Uint8Array, headers: Headers | RawHeaders): Promise; export declare function decodeBodyBuffer(buffer: Buffer, headers: Headers): Promise; export declare const isMockttpBody: (body: any) => body is CompletedBody; type BodyDecoder = (buffer: Buffer, headers: Headers) => MaybePromise; export declare const buildBodyReader: (body: Buffer, headers: Headers, bufferDecoder?: BodyDecoder) => CompletedBody; export declare const parseRequestBody: (req: http.IncomingMessage | http2.Http2ServerRequest, options: { maxSize: number; }) => void; export type ExtendedRawRequest = (http.IncomingMessage | http2.Http2ServerRequest) & { protocol?: string; body?: OngoingBody; path?: string; destination?: Destination; [SocketMetadata]?: SocketMetadata; }; /** * For both normal requests & websockets, we do some standard preprocessing to ensure we have the absolute * URL destination in place, and timing, tags & id metadata all ready for an OngoingRequest. */ export declare function preprocessRequest(req: ExtendedRawRequest, options: { type: 'request' | 'websocket'; serverPort: number; maxBodySize: number; onBodyData?: (id: string, timestamp: number, content: Uint8Array, isEnded: boolean) => void; }): OngoingRequest | null; /** * Build an initiated request: the external representation of a request * that's just started. */ export declare function buildInitiatedRequest(request: OngoingRequest): InitiatedRequest; /** * Build a completed request: the external representation of a request * that's been completely received (but not necessarily replied to). */ export declare function waitForCompletedRequest(request: OngoingRequest): Promise; export declare function trackResponse(response: http.ServerResponse, timingEvents: TimingEvents, tags: string[], options: { maxSize: number; onWriteHead: () => void; onBodyData?: (id: string, timestamp: number, content: Uint8Array, isEnded: boolean) => void; }): OngoingResponse; /** * Build an initiated response: the external representation of a response * that's just started. */ export declare function buildInitiatedResponse(response: OngoingResponse): InitiatedResponse; /** * Build a completed response: the external representation of a response * that's been completely written out and sent back to the client. */ export declare function waitForCompletedResponse(response: OngoingResponse | CompletedResponse): Promise; export declare function tryToParseHttpRequest(input: Buffer, socket: net.Socket): PartiallyParsedHttpRequest; type PartiallyParsedHttpRequest = { protocol?: string; httpVersion?: string; method?: string; url?: string; headers?: Headers; rawHeaders?: RawHeaders; destination?: Destination; path?: string; }; export declare function parseRawHttpResponse(input: Buffer, request: OngoingRequest): CompletedResponse; export {}; //# sourceMappingURL=request-utils.d.ts.map