import type * as http from "node:http" import type * as stream from "node:stream" import type * as buffer from "node:buffer" export type HttpServerOptions = { listener: Listener timeout?: number transmuters?: Transmuter[] } export type Listener = (request: http.IncomingMessage, response: http.ServerResponse) => (void | Promise) export const asListener = (l: L) => l export type Transmuter = (listener: http.RequestListener) => http.RequestListener export const asTransmuter = (tm: Tm) => tm export type ResponseData = { code: number headers: Record body: string | ArrayBuffer | null } export type Responder = (request: http.IncomingMessage) => Promise export type Upgrader = (request: http.IncomingMessage, socket: stream.Duplex, head: buffer.Buffer) => void