| 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 = Array<string> | 
| type noop<T = void> = ()=> T | 
|   | 
| type HeaderInfo<HEADER = HeaderObject> = { | 
|   versionMajor: number | 
|   versionMinor: number | 
|   headers: HEADER | 
|   method: number | 
|   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: number, | 
|     url: string, | 
|     statusCode: number, | 
|     statusMessage: string, | 
|     upgrade: boolean, | 
|     shouldKeepAlive: boolean, | 
|   )=> number | void | 
| export type OnBodyParser = (chunk: Buffer, offset: number, length: number)=> void | 
| // Only called in the slow case where slow means | 
| // that the request headers were either fragmented | 
| // across multiple TCP packets or too large to be | 
| // processed in a single run. This method is also | 
| // called to process trailing HTTP headers. | 
| export type OnHeadersParser = (headers: string[], url: string)=> void | 
|   | 
| declare class HTTPParserJS { | 
|   initialize(type: ParserType, async_resource?: unknown): void | 
|   | 
|   // Some handler stubs, needed for compatibility | 
|   [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 | 
|   | 
|   // These three methods are used for an internal speed optimization, and it also | 
|   // works if theses are noops. Basically consume() asks us to read the bytes | 
|   // ourselves, but if we don't do it we get them through execute(). | 
|   consume: noop | 
|   unconsume: noop | 
|   getCurrentBuffer: noop | 
|   | 
|   /** | 
|    * For correct error handling - see HTTPParser#execute | 
|    * @example this.userCall()(userFunction('arg')); | 
|    */ | 
|   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 | 
|   /** | 
|    * For older versions of node (v6.x and older?), that return `skipBody=1` or `skipBody=true`, need this `return true;` if it's an upgrade request. | 
|    */ | 
|   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 (in bytes) is configurable, but 80kb by default; | 
|    * @default 80 * 1024 = 80kb | 
|    */ | 
|   maxHeaderSize: 81920|number | 
|   | 
|   // Note: *not* starting with kOnHeaders=0 line the Node parser, because any | 
|   // newly added constants (kOnTimeout in Node v12.19.0) will overwrite 0! | 
|   readonly kOnHeaders: 1 | 
|   readonly kOnHeadersComplete: 2 | 
|   readonly kOnBody: 3 | 
|   readonly kOnMessageComplete: 4 | 
|   | 
|   kOnExecute(): void | 
| } | 
| export const HTTPParser: HTTPParserConstructor | 
| export const methods: RequestMethod[] |