import type { Buffer } from "../buffer.ts";
type ParserType = | "REQUEST" | "RESPONSE";
type RequestMethod = | "DELETE" | "GET" | "HEAD" | "POST" | "PUT" | "CONNECT" | "OPTIONS" | "TRACE" | "COPY" | "LOCK" | "MKCOL" | "MOVE" | "PROPFIND" | "PROPPATCH" | "SEARCH" | "UNLOCK" | "BIND" | "REBIND" | "UNBIND" | "ACL" | "REPORT" | "MKACTIVITY" | "CHECKOUT" | "MERGE" | "M-SEARCH" | "NOTIFY" | "SUBSCRIBE" | "UNSUBSCRIBE" | "PATCH" | "PURGE" | "MKCALENDAR" | "LINK" | "UNLINK" | string;
type StateHeaderKey = | "REQUEST_LINE" | "RESPONSE_LINE" | "HEADER";
type StateFinishAllowedKey = | "REQUEST_LINE" | "RESPONSE_LINE" | "BODY_RAW";
type HeaderObject = Record<string, string>;type noop<T = void> = () => T;
type HeaderInfo<HEADER = HeaderObject> = { versionMajor: number; versionMinor: number; headers: HEADER; method: RequestMethod; url: string; statusCode: number; statusMessage: string; upgrade: boolean; shouldKeepAlive: boolean;};export type OnHeadersCompleteParser< HEADER = HeaderObject, Mode_0_12 extends boolean = true,> = Mode_0_12 extends true ? (info: HeaderInfo<HEADER>) => number | void : ( versionMajor: number, versionMinor: number, headers: HEADER, method: RequestMethod, url: string, statusCode: number, statusMessage: string, upgrade: boolean, shouldKeepAlive: boolean, ) => number | void;export type OnBodyParser = ( chunk: Buffer, offset: number, length: number,) => void;export type OnHeadersParser = (headers: string[], url: string) => void;
declare class HTTPParserJS { initialize(type: ParserType, async_resource?: unknown): void;
[HTTPParser.kOnHeaders]: OnHeadersParser; [HTTPParser.kOnHeadersComplete]: OnHeadersCompleteParser; [HTTPParser.kOnBody]: OnBodyParser; [HTTPParser.kOnMessageComplete]: noop;
reinitialize: HTTPParserConstructor; close: noop; pause: noop; resume: noop; free: noop; private _compatMode0_11: false | boolean; getAsyncId: noop<0>;
execute(chunk: Buffer, start?: number, length?: number): number | Error; finish(): void | Error;
consume: noop; unconsume: noop; getCurrentBuffer: noop;
userCall<T = unknown>(): (ret?: T) => T; private nextRequest: noop; private consumeLine: noop<string | void>; parseHeader(line: string, headers: string[]): void; private REQUEST_LINE: noop; private RESPONSE_LINE: noop; shouldKeepAlive(): boolean; private HEADER(): void | boolean; private BODY_CHUNKHEAD(): void; private BODY_CHUNK(): void; private BODY_CHUNKEMPTYLINE(): void; private BODY_CHUNKTRAILERS(): void; private BODY_RAW(): void; private BODY_SIZED(): void;
get onHeaders(): OnHeadersParser; set onHeaders(to: OnHeadersParser);
get onHeadersComplete(): OnHeadersCompleteParser; set onHeadersComplete(to: OnHeadersCompleteParser);
get onBody(): OnBodyParser; set onBody(to: OnBodyParser);
get onMessageComplete(): noop; set onMessageComplete(to: noop);}
interface HTTPParserConstructor extends Function { new (type?: ParserType): HTTPParserJS; (type?: ParserType): void;
readonly prototype: HTTPParserJS;
readonly REQUEST: "REQUEST"; readonly RESPONSE: "RESPONSE"; readonly methods: RequestMethod[];
encoding: "ascii" | string; maxHeaderSize: 81920 | number;
readonly kOnHeaders: 1; readonly kOnHeadersComplete: 2; readonly kOnBody: 3; readonly kOnMessageComplete: 4;
kOnExecute(): void;}export const HTTPParser: HTTPParserConstructor;export const methods: RequestMethod[];