/// import * as http from "http"; import { Promisable } from "type-fest"; import { Parameters, Route, RouteNode, Status, Verb } from "./utils/index.js"; export interface ServerIncomingRequest { url: URL; source?: string; method: Verb; headers: Parameters; stream(signal?: AbortSignal): AsyncIterable; } export interface ServerOutgoingResponse { status: Status; headers: Parameters; stream?(signal?: AbortSignal): AsyncIterable; } export interface ServerContext { request: ServerIncomingRequest; response: ServerOutgoingResponse; } export interface ServerMiddleware { (this: ServerBase, route: Route | null, request: ServerIncomingRequest, next: (request: ServerIncomingRequest) => Promisable): Promisable; } export interface ServerRouteHandler { (this: ServerBase, route: Route, request: ServerIncomingRequest): Promise; } export interface RequestListenerOptions { onError?: (error: unknown) => void; } export interface ServerOperationMetadata { requestHeaders: string[]; responseHeaders: string[]; } export interface ServerOptions { baseUrl: URL; signal?: AbortSignal; } export declare abstract class ServerBase { protected baseUrl: URL; private signal?; protected abstract rootRouteNode: RouteNode; protected abstract operations: Record>>; protected abstract operationsMetadata: Record; private operationHandlers; constructor(options: ServerOptions); registerMiddleware(middleware: ServerMiddleware): void; asRequestListener(options?: RequestListenerOptions): http.RequestListener; getRouteVerbs(routeKey: string): string[]; getOperationId(routeKey: string, verb: Verb): string | undefined; getOperationRequestHeaders(operationId: string): string[]; getOperationResponseHeaders(operationId: string): string[]; protected registerOperationHandler(operation: string, handler: ServerRouteHandler): void; private receive; private middleware; }