/********************************************************************
 * @author:      Kaven
 * @email:       kaven@wuwenkai.com
 * @website:     http://blog.kaven.xyz
 * @file:        [Kaven-Utils] /src/net/proxy/AbstractProxyServer.ts
 * @create:      2022-04-18 13:40:29.991
 * @modify:      2024-11-01 10:48:07.314
 * @version:     5.4.5
 * @times:       45
 * @lines:       198
 * @copyright:   Copyright © 2022-2024 Kaven. All Rights Reserved.
 * @description: [description]
 * @license:     [license]
 ********************************************************************/
import { Socket } from "node:net";
import { KavenAuthentication } from "../authentication/KavenAuthentication.js";
import { HttpRequestMessage } from "../http/HttpRequestMessage.js";
import { HttpProxyUser } from "./HttpProxyUser.js";
export declare abstract class AbstractProxyServer {
    protected readonly socketClientMap: Map<Socket, HttpProxyUser>;
    EnableLog: boolean;
    EnableError: boolean;
    Verbose: boolean;
    Authorization?: KavenAuthentication;
    protected Log(...args: unknown[]): void;
    protected Error(...args: unknown[]): void;
    protected onData(client: HttpProxyUser, data: Buffer): Promise<void>;
    protected writeToServer(req: HttpRequestMessage, proxyToServerSocket: Socket): void;
    protected connect(port: number, host?: string): Promise<Socket>;
    protected handleHttpRequest(client: HttpProxyUser, req: HttpRequestMessage): Promise<void>;
    protected onSocketConnected(userSocket: Socket): void;
    protected Stop(client: HttpProxyUser, msg?: string): void;
}
