import http, { IncomingMessage, ServerResponse } from 'http'; import httpProxy, { ProxyTargetUrl } from 'http-proxy'; import { Socket } from 'net'; import pino from 'pino'; import { Resolver } from './resolver.js'; export interface SSLConfig { port?: number; ip?: string; key?: string; cert?: string; ca?: string; } export interface ProxyOptions { port?: number; host?: string; keepAlive?: boolean; preferForwardedHost?: boolean; httpProxy?: httpProxy.ServerOptions; logger?: pino.Logger; cluster?: number; letsencrypt?: { path: string; port: number; renewWithin?: number; minRenewTime?: number; }; resolvers?: Resolver[]; ntlm?: boolean; xfwd?: boolean; secure?: boolean; timeout?: number; proxyTimeout?: number; ssl?: SSLConfig | SSLConfig[]; errorHandler?: (err: NodeJS.ErrnoException, req: IncomingMessage, res: ServerResponse | Socket, target?: ProxyTargetUrl) => void; serverModule?: typeof http; }