///
import * as net from 'net';
import { OnPreConnectionDataResult } from './models/on-pre-connection-data-result';
import { SOCKSProxyConnectionStatus } from './models/socks-proxy-connection-status';
import { ProxyServer } from './proxy-server';
export declare class SOCKSProxyServer extends ProxyServer {
protected authenticateFn: (password: string, userName: string) => boolean;
protected allowedIPAddresses: string[];
protected deniedIPAddresses: string[];
protected requiresUsernamePasswordAuthentication: boolean;
protected buffers: {};
protected socksProxyStates: {};
constructor(authenticateFn: (password: string, userName: string) => boolean, allowedIPAddresses: string[], deniedIPAddresses: string[], hostname: string, port: number, requiresUsernamePasswordAuthentication: boolean);
protected createServer(onConnectionFn: (socket: net.Socket) => void): net.Server;
protected createDestinationSocket(destinationHostname: string, destinationPort: number, sourceSocket: net.Socket): net.Socket;
protected handleAuthenticationRequest(data: Buffer, sourceSocket: net.Socket): void;
protected handleConnectionRequest(data: Buffer, sourceSocket: net.Socket): Promise;
protected handleGreetingRequest(data: Buffer, sourceSocket: net.Socket): void;
protected resolveDomainName(domainName: string): Promise;
protected onPreConnectionData(data: Buffer, destinationSocket: net.Socket, sourceSocket: net.Socket): OnPreConnectionDataResult;
protected saveToBuffer(data: Buffer, socket: net.Socket): void;
protected sendConnectionResponse(addressType: number, connectionStatus: SOCKSProxyConnectionStatus, ipAddressBytes: number[], portBytes: number[], sourceSocket: net.Socket, version: number): void;
}