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;
}
