import basicAuthParser from 'basic-auth-parser'; import { EventEmitter } from 'eventemitter3'; import * as http from 'http'; import * as net from 'net'; export type Middleware = (req: Request, cltSocket: net.Socket, head: Buffer, next: () => void) => void; export type NetConnectPromise = (port: number, hostname: string, cltSocket: net.Socket, req: Request) => Promise; export declare class Request extends http.IncomingMessage { auth?: ReturnType; } export declare class Tunnel extends EventEmitter { private readonly stack; private readonly server; constructor(); use(middleware: Middleware): void; private handleMiddleware; protected connect(port: number, host: string, _cltSocket: net.Socket, _req: Request): Promise; listen: { (port?: number, hostname?: string, backlog?: number, listeningListener?: () => void): http.Server; (port?: number, hostname?: string, listeningListener?: () => void): http.Server; (port?: number, backlog?: number, listeningListener?: () => void): http.Server; (port?: number, listeningListener?: () => void): http.Server; (path: string, backlog?: number, listeningListener?: () => void): http.Server; (path: string, listeningListener?: () => void): http.Server; (options: net.ListenOptions, listeningListener?: () => void): http.Server; (handle: any, backlog?: number, listeningListener?: () => void): http.Server; (handle: any, listeningListener?: () => void): http.Server; }; close: (callback?: (err?: Error) => void) => http.Server; } export declare const basicAuth: Middleware;