///
///
import * as HTTP from 'http';
import * as x from 'x-value';
import type { ListeningHost } from '../x.js';
import { Port } from '../x.js';
import type { NetProxyBridge, TLSProxyBridge } from './proxy-bridges/index.js';
import type { Router } from './router/index.js';
import { type Web } from './web.js';
export declare const HTTP_PROXY_REFERER_SNIFFING_OPTIONS_DEFAULT = false;
export declare const HTTPProxyRefererSniffingOptions: x.ObjectType<{
include: x.OptionalType>>;
hosts: x.OptionalType>>;
}>>;
exclude: x.OptionalType>>;
hosts: x.OptionalType>>;
}>>;
}>;
export type HTTPProxyRefererSniffingOptions = x.TypeOf;
export type HTTPProxyOptions = {
host?: ListeningHost;
port?: Port;
refererSniffing?: HTTPProxyRefererSniffingOptions | boolean;
};
export declare class HTTPProxy {
readonly netProxyBridge: NetProxyBridge;
readonly tlsProxyBridge: TLSProxyBridge | undefined;
readonly router: Router;
readonly web: Web;
readonly server: HTTP.Server;
private lastContextIdNumber;
/**
* Sockets kept alive.
*/
private handledRequestSocketSet;
private refererSniffingOptions;
constructor(index: number, netProxyBridge: NetProxyBridge, tlsProxyBridge: TLSProxyBridge | undefined, router: Router, web: Web, { host, port, refererSniffing: refererSniffingOptions, }: HTTPProxyOptions);
private connect;
private request;
private preRoute;
private getNextConnectionId;
}