///
import * as net from 'net';
import * as tls from 'tls';
import { IProxyServer } from './interfaces/proxy-server';
import { OnPreConnectionDataResult } from './models/on-pre-connection-data-result';
export declare abstract class ProxyServer implements IProxyServer {
protected hostname: string;
protected port: number;
protected server: T;
constructor(hostname: string, port: number);
listen(): void;
protected closeSocket(socket: net.Socket | tls.TLSSocket): void;
protected connectToDestinationSocket(sourceSocket: net.Socket | tls.TLSSocket, destinationHostname: string, destinationPort: number): net.Socket | tls.TLSSocket;
protected abstract createServer(onConnectionFn: (socket: net.Socket | tls.TLSSocket) => void): T;
protected abstract createDestinationSocket(destinationHostname: string, destinationPort: number, sourceSocket: net.Socket | tls.TLSSocket): net.Socket | tls.TLSSocket;
protected handleSocketConnection(sourceSocket: net.Socket | tls.TLSSocket): void;
protected handleSocketError(error: Error, socket: net.Socket | tls.TLSSocket): void;
protected abstract onPreConnectionData(data: Buffer, destinationSocket: net.Socket | tls.TLSSocket, sourceSocket: net.Socket | tls.TLSSocket): OnPreConnectionDataResult;
}