/*!
* @Author: richen
* @Date: 2025-06-17 02:25:51
* @License: BSD (3-Clause)
* @Copyright (c) - <richenlin(at)gmail.com>
* @HomePage: https://koatty.org/
*/
/// <reference types="node" />

import { ChannelOptions } from '@grpc/grpc-js';
import EventEmitter from 'events';
import { Http2SecureServer } from 'http2';
import { Http2Session } from 'http2';
import { IncomingMessage } from 'http';
import { KoattyApplication } from 'koatty_core';
import { KoattyServer } from 'koatty_core';
import { NativeServer } from 'koatty_core';
import { Server } from '@grpc/grpc-js';
import { Server as Server_2 } from 'http';
import { Server as Server_3 } from 'https';
import { ServiceDefinition } from '@grpc/grpc-js';
import { Socket } from 'net';
import { TLSSocket } from 'tls';
import { UntypedHandleCall } from '@grpc/grpc-js';
import * as WS from 'ws';
import { ws } from 'ws';

/**
 * Base server class with template method pattern
 * 模板方法模式：定义算法骨架，子类实现具体步骤
 */
declare abstract class BaseServer<T extends BaseServerOptions = BaseServerOptions> implements KoattyServer {
    options: T;
    readonly server: any;
    readonly protocol: string;
    status: number;
    listenCallback?: () => void;
    constructor(app: KoattyApplication, options: T);
    /**
     * 模板方法：服务器初始化流程
     * 定义了所有协议服务器的通用初始化步骤
     */
    /**
     * 模板方法：配置热更新流程
     */
    updateConfig(newConfig: Partial<T>): Promise<boolean>;
    /**
     * 模板方法：优雅关闭流程
     * 现在使用统一的 GracefulShutdownManager 来处理关闭流程
     */
    gracefulShutdown(options?: GracefulShutdownOptions): Promise<ShutdownResult>;
    /**
     * 检测配置变更
     */
    /**
     * 设置连接池事件监听（公共逻辑）
     */
    /**
     * 设置定期清理（公共逻辑）
     */
    /**
     * 处理需要重启的配置变更
     */
    /**
     * 处理运行时配置变更
     */
    /**
     * 停止监控和清理（公共逻辑）
     */
    /**
     * 获取活跃连接数（公共逻辑）
     */
    /**
     * 获取连接统计信息（公共接口）
     */
    getConnectionStats(): ConnectionStats;
    /**
     * 获取连接池健康状态（公共接口）
     */
    getConnectionPoolHealth(): ConnectionPoolHealth;
    /**
     * 获取连接池指标（公共接口）
     */
    getConnectionPoolMetrics(): ConnectionPoolMetrics;
    /**
     * 初始化连接池（各协议自定义）
     */
    /**
     * 创建协议特定的服务器实例（各协议自定义）
     */
    /**
     * 配置服务器选项（各协议自定义）
     */
    /**
     * 协议特定的额外初始化（各协议自定义，可选实现）
     */
    /**
     * 分析配置变更影响（各协议自定义）
     */
    /**
     * 运行时配置变更处理（各协议自定义）
     */
    /**
     * 提取相关配置用于日志（各协议自定义）
     */
    /**
     * 停止接受新连接（各协议自定义）
     */
    /**
     * 等待现有连接完成（各协议自定义）
     */
    /**
     * 强制关闭剩余连接（各协议自定义）
     */
    /**
     * 强制关闭（各协议自定义）
     */
    /**
     * 启动服务器
     */
    abstract Start(listenCallback?: () => void): any;
    /**
     * 获取服务器状态
     */
    abstract getStatus(): number;
    /**
     * 获取原生服务器实例
     */
    abstract getNativeServer(): NativeServer;
    /**
     * 停止服务器（向后兼容）
     */
    Stop(callback?: (err?: Error) => void): void;
}

/**
 * Base Server Options
 *
 * @export
 * @interface BaseServerOptions
 * @extends {ListeningOptions}
 */
declare interface BaseServerOptions extends ListeningOptions {
    hostname: string;
    port: number;
    protocol: KoattyProtocol;
    trace?: boolean;
    ext?: Record<string, any>;
    connectionPool?: ConnectionPoolConfig;
}

/**
 * 基础SSL配置
 */
declare interface BaseSSLConfig {
    key?: string;
    cert?: string;
    ca?: string;
    passphrase?: string;
    ciphers?: string;
    honorCipherOrder?: boolean;
    secureProtocol?: string;
}

/**
 * Bind event to the process
 *
 * @param {EventEmitter} event
 * @param {string} originEventName
 * @param {string} [targetEventName]
 */
export declare function BindProcessEvent(event: EventEmitter, originEventName: string, targetEventName?: processEvent): void;

/**
 * Child logger with preset context
 */
declare class ChildLogger {
    constructor(parent: StructuredLogger, childContext: LogContext);
    debug(message: string, additionalContext?: LogContext, data?: any): void;
    info(message: string, additionalContext?: LogContext, data?: any): void;
    warn(message: string, additionalContext?: LogContext, data?: any): void;
    error(message: string, additionalContext?: LogContext, error?: Error | any): void;
    logServerEvent(event: 'starting' | 'started' | 'stopping' | 'stopped' | 'error', additionalContext?: LogContext, data?: any): void;
    logConnectionEvent(event: 'connected' | 'disconnected' | 'error' | 'timeout', additionalContext?: LogContext, data?: any): void;
    logSecurityEvent(event: 'auth_success' | 'auth_failure' | 'rate_limit' | 'blocked', additionalContext?: LogContext, data?: any): void;
    startPerformanceTracking(trackingId: string, additionalContext?: LogContext): void;
    endPerformanceTracking(trackingId: string, additionalContext?: LogContext): PerformanceMetrics | null;
}

/**
 * Configuration change detection result
 */
declare interface ConfigChangeAnalysis {
    requiresRestart: boolean;
    changedKeys: (keyof ListeningOptions)[];
    restartReason?: string;
    canApplyRuntime?: boolean;
}

/**
 * 统一连接池配置接口
 */
declare interface ConnectionPoolConfig {
    connectionTimeout?: number;
    maxConnections?: number;
    maxSessionMemory?: number;
    maxHeaderListSize?: number;
    keepAliveTimeout?: number;
    headersTimeout?: number;
    requestTimeout?: number;
    pingInterval?: number;
    pongTimeout?: number;
    heartbeatInterval?: number;
    protocolSpecific?: {
        maxSessionMemory?: number;
        maxHeaderListSize?: number;
        maxReceiveMessageLength?: number;
        maxSendMessageLength?: number;
        keepAliveTime?: number;
        pingInterval?: number;
        pongTimeout?: number;
        heartbeatInterval?: number;
    };
}

/**
 * Connection pool event types
 */
declare enum ConnectionPoolEvent {
    CONNECTION_ADDED = "connection_added",
    CONNECTION_REMOVED = "connection_removed",
    CONNECTION_TIMEOUT = "connection_timeout",
    CONNECTION_ERROR = "connection_error",
    POOL_LIMIT_REACHED = "pool_limit_reached",
    HEALTH_STATUS_CHANGED = "health_status_changed"
}

/**
 * 连接池健康状态
 */
declare interface ConnectionPoolHealth {
    status: ConnectionPoolStatus;
    utilizationRatio: number;
    activeConnections: number;
    maxConnections: number;
    rejectedConnections: number;
    averageResponseTime: number;
    errorRate: number;
    message: string;
    lastUpdated: number;
}

/**
 * Abstract connection pool manager
 */
declare abstract class ConnectionPoolManager<T = any> {
    protected waitingQueue: Array<{
        resolve: (result: ConnectionRequestResult<T>) => void;
        reject: (error: Error) => void;
        options: ConnectionRequestOptions;
        timestamp: number;
    }>;
    constructor(protocol: string, config?: ConnectionPoolConfig);
    /**
     * 初始化指标
     */
    /**
     * 初始化健康状态
     */
    /**
     * Validate and normalize configuration
     */
    /**
     * 申请连接
     */
    requestConnection(options?: ConnectionRequestOptions): Promise<ConnectionRequestResult<T>>;
    /**
     * 释放连接
     */
    releaseConnection(connection: T, options?: {
        destroy?: boolean;
        error?: Error;
    }): Promise<boolean>;
    /**
     * Add connection to the pool
     */
    addConnection(connection: T, metadata?: any): Promise<boolean>;
    /**
     * Remove connection from pool
     */
    removeConnection(connection: T, reason?: string): Promise<void>;
    /**
     * Get active connection count
     */
    getActiveConnectionCount(): number;
    /**
     * Check if the connection is healthy
     */
    abstract isConnectionHealthy(connection: T): boolean;
    /**
     * Close all connections
     */
    closeAllConnections(timeout?: number): Promise<void>;
    /**
     * Protocol-specific connection validation
     */
    /**
     * Protocol-specific connection cleanup
     */
    /**
     * 获取可用连接
     */
    protected abstract getAvailableConnection(): Promise<{
        connection: T;
        id: string;
    } | null>;
    /**
     * 创建新连接
     */
    protected createNewConnection(options: ConnectionRequestOptions): Promise<{
        connection: T;
        id: string;
        metadata?: any;
    } | null>;
    /**
     * Check if new connections can be accepted
     */
    canAcceptConnection(): boolean;
    /**
     * Update connection pool health status
     */
    updateHealthStatus(): void;
    /**
     * Get connection pool health status
     */
    getHealth(): ConnectionPoolHealth;
    /**
     * Get connection pool metrics
     */
    getMetrics(): ConnectionPoolMetrics;
    /**
     * Get connection pool configuration
     */
    getConfig(): Readonly<ConnectionPoolConfig>;
    /**
     * Update connection pool configuration
     */
    updateConfig(newConfig: Partial<ConnectionPoolConfig>): Promise<boolean>;
    /**
     * Add event listener
     */
    on(event: ConnectionPoolEvent, listener: Function): void;
    /**
     * Remove event listener
     */
    off(event: ConnectionPoolEvent, listener: Function): void;
    /**
     * 辅助方法
     */
    /**
     * 设置统一监控
     */
    /**
     * Trigger event
     */
    /**
     * Record connection event for statistics
     */
    /**
     * Record request latency
     */
    /**
     * Destroy connection pool manager
     */
    destroy(): Promise<void>;
    /**
     * 统一的连接获取接口 - 对外提供统一API
     */
    getConnection(options?: ConnectionRequestOptions): Promise<ConnectionRequestResult<T>>;
    /**
     * 统一的连接添加接口 - 协议无关的连接注册
     * 各协议通过此方法注册新连接到池中
     */
    registerConnection(connection: T, metadata?: any): Promise<boolean>;
    /**
     * 协议特定的连接处理器设置 - 子类实现
     */
    /**
     * 协议特定的连接创建逻辑 - 子类实现
     */
    protected abstract createProtocolConnection(options: ConnectionRequestOptions): Promise<{
        connection: T;
        metadata?: any;
    } | null>;
}

/**
 * 连接池指标
 */
declare interface ConnectionPoolMetrics extends ConnectionStats {
    protocol: string;
    poolConfig: ConnectionPoolConfig;
    health: ConnectionPoolHealth;
    performance: {
        throughput: number;
        latency: {
            p50: number;
            p95: number;
            p99: number;
        };
        memoryUsage: number;
        cpuUsage: number;
    };
    uptime: number;
}

/**
 * 连接池状态枚举
 */
declare enum ConnectionPoolStatus {
    HEALTHY = "healthy",
    DEGRADED = "degraded",
    OVERLOADED = "overloaded",
    UNAVAILABLE = "unavailable"
}

/**
 * 连接申请选项
 */
declare interface ConnectionRequestOptions {
    timeout?: number;
    priority?: 'low' | 'normal' | 'high';
    metadata?: Record<string, any>;
}

/**
 * 连接申请结果
 */
declare interface ConnectionRequestResult<T> {
    connection: T | null;
    success: boolean;
    error?: Error;
    waitTime: number;
    connectionId?: string;
}

/**
 * 连接统计信息接口
 */
declare interface ConnectionStats {
    activeConnections: number;
    totalConnections: number;
    connectionsPerSecond: number;
    averageLatency: number;
    errorRate: number;
}

/**
 * Create terminus event
 *
 * @export
 * @param {KoattyApplication} app
 * @param {(Server | Http2SecureServer)} server
 * @param {TerminusOptions} [options]
 */
export declare function CreateTerminus(app: KoattyApplication, server: KoattyServer, options?: TerminusOptions): void;

/**
 * 优雅关闭管理器
 * 提供统一的优雅关闭流程管理，支持多步骤关闭和详细状态跟踪
 *
 * 性能优化：
 * - 移除不必要的 TimerManager 依赖
 * - 优化日志记录频率
 * - 统一超时机制
 */
declare class GracefulShutdownManager {
    constructor(protocol: string);
    /**
     * 检查是否正在关闭中
     */
    isInShutdown(): boolean;
    /**
     * 获取当前关闭状态
     */
    getStatus(): ShutdownStatus;
    /**
     * 执行优雅关闭流程
     * 优化：减少日志记录频率，统一错误处理
     */
    performGracefulShutdown(steps: ShutdownStep[], options?: GracefulShutdownOptions): Promise<ShutdownResult>;
    /**
     * 执行单个关闭步骤
     */
    /**
     * 执行排空延迟
     */
    /**
     * 设置强制关闭定时器（已优化，移除不必要的实现）
     */
    /**
     * 带超时的执行函数
     */
    /**
     * 创建失败结果
     */
    /**
     * 清理资源
     */
    /**
     * 执行各个关闭步骤
     */
    /**
     * 执行全局超时控制
     */
}

/**
 * 优雅关闭选项
 */
declare interface GracefulShutdownOptions {
    timeout?: number;
    drainDelay?: number;
    stepTimeout?: number;
    forceTimeout?: number;
    steps?: ShutdownStep[];
}

/**
 * 简化的gRPC连接接口
 */
declare interface GrpcConnection {
    id: string;
    peer: string;
    metadata: any;
    cancelled: boolean;
    deadline?: Date;
    [key: string]: any;
}

/**
 * gRPC连接池管理器
 */
declare class GrpcConnectionPoolManager extends ConnectionPoolManager<GrpcConnection> {
    constructor(config?: ConnectionPoolConfig);
    /**
     * 注册gRPC特定的清理任务到统一监控器
     */
    /**
     * 验证gRPC连接
     */
    /**
     * 清理gRPC连接
     */
    /**
     * 获取可用连接
     */
    protected getAvailableConnection(): Promise<{
        connection: GrpcConnection;
        id: string;
    } | null>;
    /**
     * 检查连接是否健康
     */
    isConnectionHealthy(connection: GrpcConnection): boolean;
    /**
     * 添加gRPC连接（由服务器调用）
     */
    addGrpcConnection(peer: string, callMetadata?: any): Promise<boolean>;
    /**
     * 设置连接事件处理器
     */
    /**
     * 处理gRPC调用完成
     */
    handleCallComplete(connection: GrpcConnection, success: boolean): Promise<void>;
    /**
     * 更新调用指标
     */
    /**
     * 判断是否为一元调用
     */
    /**
     * 处理流响应发送
     */
    handleStreamResponse(connection: GrpcConnection, data: any): Promise<void>;
    /**
     * 清理过期连接
     */
    /**
     * 获取连接统计信息
     */
    getConnectionStats(): {
        grpcSpecific: {
            totalCalls: number;
            totalErrors: number;
            totalStreams: number;
            activeStreams: number;
            totalBytesReceived: number;
            totalBytesSent: number;
            errorRate: number;
            callMetrics: {
                totalUnarycalls: number;
                totalStreamingCalls: number;
                totalErrors: number;
                averageCallDuration: number;
                activeStreams: number;
            };
        };
        protocol: string;
        poolConfig: ConnectionPoolConfig;
        health: ConnectionPoolHealth;
        performance: {
            throughput: number;
            latency: {
                p50: number;
                /**
                 * 验证gRPC连接
                 */
                p95: number;
                p99: number;
            };
            memoryUsage: number;
            cpuUsage: number;
        };
        uptime: number;
        activeConnections: number;
        totalConnections: number;
        connectionsPerSecond: number;
        averageLatency: number;
        errorRate: number;
    };
    /**
     * 获取gRPC特定指标
     */
    getGrpcMetrics(): {
        connections: {
            id: any;
            peer: any;
            callCount: any;
            errorCount: any;
            streamCount: any;
            activeStreams: any;
            totalBytesReceived: any;
            totalBytesSent: any;
            age: number;
            idle: number;
        }[];
        totalUnarycalls: number;
        totalStreamingCalls: number;
        totalErrors: number;
        averageCallDuration: number;
        activeStreams: number;
    };
    /**
     * 找到连接ID的辅助方法
     */
    /**
     * 创建连接ID
     */
    /**
     * 销毁连接池
     */
    destroy(): Promise<void>;
    /**
     * 协议特定的连接处理器设置
     */
    /**
     * 协议特定的连接创建逻辑
     */
    protected createProtocolConnection(_options: ConnectionRequestOptions): Promise<{
        connection: GrpcConnection;
        metadata?: any;
    } | null>;
}

export declare class GrpcServer extends BaseServer<GrpcServerOptions> {
    readonly server: Server;
    options: GrpcServerOptions;
    constructor(app: KoattyApplication, options: GrpcServerOptions);
    /**
     * 初始化gRPC连接池
     */
    /**
     * 创建gRPC服务器实例
     */
    /**
     * 配置gRPC服务器选项
     */
    /**
     * gRPC特定的额外初始化
     */
    protected extractRelevantConfig(config: GrpcServerOptions): {
        hostname: string;
        port: number;
        protocol: KoattyProtocol;
        sslEnabled: boolean;
        connectionPool: {
            maxConnections: number;
            keepAliveTime: number;
            keepAliveTimeout: number;
        };
    };
    /**
     * Create SSL credentials from configuration
     * @private
     */
    /**
     * Start Server with enhanced connection management
     */
    Start(listenCallback?: () => void): NativeServer;
    /**
     * Start connection monitoring and statistics collection
     * @private
     */
    /**
     * Register Service with enhanced logging and monitoring
     */
    RegisterService(impl: ServiceImplementation): void;
    /**
     * Get connection statistics
     */
    getConnectionStats(): ConnectionStats;
    /**
     * Get connection pool health
     */
    getConnectionPoolHealth(): ConnectionPoolHealth;
    /**
     * Get connection pool metrics
     */
    getConnectionPoolMetrics(): ConnectionPoolMetrics;
    /**
     * Get status
     */
    getStatus(): number;
    /**
     * Get native server
     */
    getNativeServer(): NativeServer;
    /**
     * 提取连接池配置
     */
}

/**
 * gRPC Server Options with enhanced configuration
 *
 * @export
 * @interface GrpcServerOptions
 * @extends {ListeningOptions}
 */
declare interface GrpcServerOptions extends BaseServerOptions {
    channelOptions?: ChannelOptions;
    ssl?: SSLConfig;
    connectionPool?: ConnectionPoolConfig;
    ext?: {
        key?: string;
        cert?: string;
        ca?: string;
        [key: string]: any;
    };
}

/**
 * HTTP/2连接池管理器
 */
declare class Http2ConnectionPoolManager extends ConnectionPoolManager<Http2Session> {
    constructor(config?: ConnectionPoolConfig);
    /**
     * 验证HTTP/2会话
     */
    /**
     * 清理HTTP/2会话
     */
    /**
     * 获取可用会话
     */
    protected getAvailableConnection(): Promise<{
        connection: Http2Session;
        id: string;
    } | null>;
    /**
     * 创建新连接 - HTTP/2会话通常是被动接受的
     */
    protected createNewConnection(_options: ConnectionRequestOptions): Promise<{
        connection: Http2Session;
        id: string;
        metadata?: any;
    } | null>;
    /**
     * 检查会话是否健康
     */
    isConnectionHealthy(session: Http2Session): boolean;
    /**
     * 添加HTTP/2会话（由服务器调用）
     */
    addHttp2Session(session: Http2Session): Promise<boolean>;
    /**
     * 设置会话事件处理器
     */
    /**
     * 处理新流
     */
    /**
     * 启动会话ping（保留在TimerManager中，因为是动态创建的）
     */
    /**
     * 注册HTTP/2监控任务到统一监控器
     */
    /**
     * 向所有会话发送ping
     */
    /**
     * 执行健康检查
     */
    /**
     * 获取会话统计信息
     */
    getConnectionStats(): {
        availableSessions: number;
        goingAwaySessions: number;
        totalActiveStreams: number;
        totalStreams: number;
        totalStreamErrors: number;
        averageStreamsPerSession: number;
        utilizationRatio: number;
        protocol: string;
        poolConfig: ConnectionPoolConfig;
        health: ConnectionPoolHealth;
        performance: {
            throughput: number;
            latency: {
                p50: number;
                p95: number;
                p99: number;
            };
            memoryUsage: number;
            cpuUsage: number;
        };
        uptime: number;
        activeConnections: number;
        totalConnections: number;
        connectionsPerSecond: number;
        averageLatency: number;
        errorRate: number;
    };
    /**
     * 获取会话详细信息
     */
    getSessionDetails(): Array<{
        id: string;
        remoteAddress: string;
        protocol: string;
        activeStreams: number;
        totalStreams: number;
        streamErrors: number;
        maxConcurrentStreams: number;
        isGoingAway: boolean;
        age: number;
        idle: number;
    }>;
    /**
     * 优雅关闭会话
     */
    gracefulCloseSession(session: Http2Session, timeout?: number): Promise<void>;
    /**
     * 找到会话ID的辅助方法
     */
    /**
     * 销毁连接池
     */
    destroy(): Promise<void>;
    /**
     * 设置协议特定的连接处理器
     */
    /**
     * 协议特定的连接创建逻辑
     */
    protected createProtocolConnection(_options: ConnectionRequestOptions): Promise<{
        connection: Http2Session;
        metadata?: any;
    } | null>;
}

/**
 * HTTP/2 Server implementation using template method pattern
 * 继承BaseServer，只实现HTTP/2特定的逻辑
 */
export declare class Http2Server extends BaseServer<Http2ServerOptions> {
    readonly server: Http2SecureServer;
    constructor(app: KoattyApplication, options: Http2ServerOptions);
    /**
     * 初始化HTTP/2连接池
     */
    /**
     * 创建HTTP/2服务器实例
     */
    /**
     * 配置HTTP/2服务器选项
     */
    /**
     * HTTP/2特定的额外初始化
     */
    /**
     * 创建HTTP/2选项
     */
    /**
     * 创建SSL选项
     */
    /**
     * 自动SSL配置
     */
    /**
     * 手动SSL配置
     */
    /**
     * 双向TLS配置
     */
    /**
     * 加载证书文件
     */
    /**
     * 设置会话处理
     */
    /**
     * 提取连接池配置
     */
    protected extractRelevantConfig(config: Http2ServerOptions): {
        hostname: string;
        port: number;
        protocol: KoattyProtocol;
        sslMode: "auto" | "manual" | "mutual_tls";
        allowHTTP1: boolean;
        connectionPool: {
            maxConnections: number;
            maxSessionMemory: number;
            maxHeaderListSize: number;
        };
        http2Settings: {
            headerTableSize?: number;
            enablePush?: boolean;
            maxConcurrentStreams?: number;
            initialWindowSize?: number;
            maxFrameSize?: number;
            maxHeaderListSize?: number;
        };
    };
    /**
     * 检查SSL配置是否变更
     */
    /**
     * 检查HTTP/2配置是否变更
     */
    /**
     * 检查连接池配置是否变更
     */
    /**
     * 重写停止监控和清理方法以处理HTTP/2特定的监控间隔
     */
    Start(listenCallback?: () => void): NativeServer;
    getStatus(): number;
    getNativeServer(): NativeServer;
    /**
     * 启动连接池监控
     */
    /**
     * 获取HTTP/2统计信息
     */
    getHttp2Stats(): {
        availableSessions: number;
        goingAwaySessions: number;
        totalActiveStreams: number;
        totalStreams: number;
        totalStreamErrors: number;
        averageStreamsPerSession: number;
        utilizationRatio: number;
        protocol: string;
        poolConfig: ConnectionPoolConfig;
        health: ConnectionPoolHealth;
        performance: {
            throughput: number;
            latency: {
                p50: number;
                p95: number;
                p99: number;
            };
            memoryUsage: number;
            cpuUsage: number;
        };
        uptime: number;
        activeConnections: number;
        totalConnections: number;
        connectionsPerSecond: number;
        averageLatency: number;
        errorRate: number;
    };
    /**
     * 获取当前连接状态
     */
    getConnectionsStatus(): {
        current: number;
        max: number;
    };
    /**
     * 销毁服务器
     */
    destroy(): Promise<void>;
}

/**
 * Enhanced HTTP/2 Server Options
 */
declare interface Http2ServerOptions extends BaseServerOptions {
    ssl?: SSL2Config;
    http2?: {
        maxHeaderListSize?: number;
        maxSessionMemory?: number;
        settings?: {
            headerTableSize?: number;
            enablePush?: boolean;
            maxConcurrentStreams?: number;
            initialWindowSize?: number;
            maxFrameSize?: number;
            maxHeaderListSize?: number;
        };
    };
    connectionPool?: ConnectionPoolConfig;
    ext?: {
        key?: string;
        cert?: string;
        ca?: string;
        [key: string]: any;
    };
}

/**
 * HTTP连接池管理器
 */
declare class HttpConnectionPoolManager extends ConnectionPoolManager<Socket> {
    constructor(config?: ConnectionPoolConfig);
    /**
     * 验证HTTP连接
     */
    /**
     * 清理HTTP连接
     */
    /**
     * 获取可用连接
     */
    protected getAvailableConnection(): Promise<{
        connection: Socket;
        id: string;
    } | null>;
    /**
     * 创建新连接
     */
    protected createNewConnection(_options: ConnectionRequestOptions): Promise<{
        connection: Socket;
        id: string;
        metadata?: any;
    } | null>;
    /**
     * 检查连接是否健康
     */
    isConnectionHealthy(connection: Socket): boolean;
    /**
     * 添加HTTP连接（由服务器调用）
     */
    addHttpConnection(connection: Socket): Promise<boolean>;
    /**
     * 设置连接事件处理器
     */
    /**
     * 处理HTTP请求完成
     */
    handleRequestComplete(connection: Socket, bytesSent?: number): Promise<void>;
    /**
     * 注册HTTP特定的清理任务到统一监控器
     */
    /**
     * 清理空闲连接
     */
    /**
     * 获取连接统计信息
     */
    getConnectionStats(): {
        availableConnections: number;
        totalRequests: number;
        totalBytesSent: number;
        totalBytesReceived: number;
        httpsConnections: number;
        httpConnections: number;
        averageRequestsPerConnection: number;
        utilizationRatio: number;
        protocol: string;
        poolConfig: ConnectionPoolConfig;
        health: ConnectionPoolHealth;
        performance: {
            throughput: number;
            latency: {
                p50: number;
                p95: number;
                p99: number;
            };
            memoryUsage: number;
            cpuUsage: number;
        };
        uptime: number;
        activeConnections: number;
        totalConnections: number;
        connectionsPerSecond: number;
        averageLatency: number;
        errorRate: number;
    };
    /**
     * 设置Keep-Alive超时
     */
    setKeepAliveTimeout(timeout: number): void;
    /**
     * 获取连接详细信息
     */
    getConnectionDetails(): Array<{
        id: string;
        remoteAddress: string;
        protocol: string;
        requestCount: number;
        bytesSent: number;
        bytesReceived: number;
        age: number;
        idle: number;
    }>;
    /**
     * 找到连接ID的辅助方法
     */
    /**
     * 销毁连接池
     */
    destroy(): Promise<void>;
    /**
     * 协议特定的连接处理器设置
     */
    /**
     * 协议特定的连接创建逻辑
     */
    protected createProtocolConnection(_options: ConnectionRequestOptions): Promise<{
        connection: Socket;
        metadata?: any;
    } | null>;
}

/**
 * HTTPS连接池管理器
 */
declare class HttpsConnectionPoolManager extends ConnectionPoolManager<TLSSocket> {
    constructor(config?: ConnectionPoolConfig);
    /**
     * 验证HTTPS连接
     */
    /**
     * 清理HTTPS连接
     */
    /**
     * 获取可用连接
     */
    protected getAvailableConnection(): Promise<{
        connection: TLSSocket;
        id: string;
    } | null>;
    /**
     * 创建新连接
     */
    protected createNewConnection(_options: ConnectionRequestOptions): Promise<{
        connection: TLSSocket;
        id: string;
        metadata?: any;
    } | null>;
    /**
     * 检查连接是否健康
     */
    isConnectionHealthy(connection: TLSSocket): boolean;
    /**
     * 添加HTTPS连接（由服务器调用）
     */
    addHttpsConnection(connection: TLSSocket): Promise<boolean>;
    /**
     * 计算连接安全评分
     */
    /**
     * 更新安全指标
     */
    /**
     * 设置连接事件处理器
     */
    /**
     * 处理HTTPS请求完成
     */
    handleRequestComplete(connection: TLSSocket, bytesSent?: number): Promise<void>;
    /**
     * 注册HTTPS特定的清理任务到统一监控器
     */
    /**
     * 清理空闲连接
     */
    /**
     * 获取连接统计信息
     */
    getConnectionStats(): {
        security: {
            totalHandshakes: number;
            successfulHandshakes: number;
            failedHandshakes: number;
            averageHandshakeTime: number;
        };
        total: number;
        active: number;
        available: number;
        authorized: number;
        unauthorized: number;
        totalRequests: number;
        totalBytesSent: number;
        totalBytesReceived: number;
        averageSecurityScore: number;
        protocols: Record<string, number>;
        ciphers: Record<string, number>;
    };
    /**
     * 获取安全指标
     */
    getSecurityMetrics(): {
        connectionSecurityScores: {
            id: any;
            securityScore: any;
            authorized: any;
            cipher: any;
            protocol: any;
        }[];
        totalHandshakes: number;
        successfulHandshakes: number;
        failedHandshakes: number;
        averageHandshakeTime: number;
    };
    /**
     * 设置Keep-Alive超时
     */
    setKeepAliveTimeout(timeout: number): void;
    /**
     * 获取连接详情
     */
    getConnectionDetails(): Array<{
        id: string;
        remoteAddress: string;
        protocol: string;
        cipher: string;
        authorized: boolean;
        securityScore: number;
        requestCount: number;
        bytesSent: number;
        bytesReceived: number;
        age: number;
        idle: number;
    }>;
    /**
     * 查找HTTPS连接ID
     */
    /**
     * 销毁连接池
     */
    destroy(): Promise<void>;
    /**
     * 设置协议特定的连接处理器
     */
    /**
     * 协议特定的连接创建逻辑
     */
    protected createProtocolConnection(_options: ConnectionRequestOptions): Promise<{
        connection: TLSSocket;
        metadata?: any;
    } | null>;
}

/**
 * HTTP Server implementation using template method pattern
 * 继承BaseServer，只实现HTTP特定的逻辑
 */
export declare class HttpServer extends BaseServer<HttpServerOptions> {
    readonly server: Server_2;
    constructor(app: KoattyApplication, options: HttpServerOptions);
    /**
     * 初始化HTTP连接池
     */
    /**
     * 创建HTTP服务器实例
     */
    /**
     * 配置HTTP服务器选项
     */
    /**
     * HTTP特定的额外初始化
     */
    /**
     * 提取连接池配置
     */
    /**
     * 配置连接池设置
     */
    /**
     * 设置连接跟踪
     */
    protected extractRelevantConfig(config: HttpServerOptions): {
        hostname: string;
        port: number;
        protocol: KoattyProtocol;
        connectionPool: {
            maxConnections: number;
            keepAliveTimeout: number;
            headersTimeout: number;
            requestTimeout: number;
        };
    };
    /**
     * 检查连接池配置是否变更
     */
    Start(listenCallback?: () => void): NativeServer;
    getStatus(): number;
    getNativeServer(): NativeServer;
    /**
     * 启动连接池监控
     */
    /**
     * 获取HTTP连接统计信息
     */
    getHttpConnectionStats(): {
        availableConnections: number;
        totalRequests: number;
        totalBytesSent: number;
        totalBytesReceived: number;
        httpsConnections: number;
        httpConnections: number;
        averageRequestsPerConnection: number;
        utilizationRatio: number;
        protocol: string;
        poolConfig: ConnectionPoolConfig;
        health: ConnectionPoolHealth;
        performance: {
            throughput: number;
            latency: {
                p50: number;
                p95: number;
                p99: number;
            };
            memoryUsage: number;
            cpuUsage: number;
        };
        uptime: number;
        activeConnections: number;
        totalConnections: number;
        connectionsPerSecond: number;
        averageLatency: number;
        errorRate: number;
    };
}

/**
 * HTTP Server Options extending base options
 */
declare interface HttpServerOptions extends BaseServerOptions {
    connectionPool?: ConnectionPoolConfig;
}

/**
 * HTTPS Server implementation using template method pattern
 * 继承BaseServer，只实现HTTPS特定的逻辑
 */
export declare class HttpsServer extends BaseServer<HttpsServerOptions> {
    readonly server: Server_3;
    constructor(app: KoattyApplication, options: HttpsServerOptions);
    /**
     * 初始化HTTPS连接池
     */
    /**
     * 创建HTTPS服务器实例
     */
    /**
     * 配置HTTPS服务器选项
     */
    /**
     * HTTPS特定的额外初始化
     */
    /**
     * 创建SSL选项
     */
    /**
     * 自动SSL配置
     */
    /**
     * 手动SSL配置
     */
    /**
     * 双向TLS配置
     */
    /**
     * 加载证书文件
     */
    /**
     * 设置连接处理
     */
    /**
     * 记录请求
     */
    /**
     * 提取连接池配置
     */
    protected extractRelevantConfig(config: HttpsServerOptions): {
        hostname: string;
        port: number;
        protocol: KoattyProtocol;
        sslMode: "auto" | "manual" | "mutual_tls";
        connectionPool: {
            maxConnections: number;
            keepAliveTimeout: number;
            headersTimeout: number;
            requestTimeout: number;
        };
    };
    /**
     * 检查SSL配置是否变更
     */
    /**
     * 检查连接池配置是否变更
     */
    Start(listenCallback?: () => void): NativeServer;
    getStatus(): number;
    getNativeServer(): NativeServer;
    /**
     * 启动连接池监控
     */
    /**
     * 获取安全统计信息
     */
    getSecurityMetrics(): {
        sslMode: "auto" | "manual" | "mutual_tls";
        ciphers: string;
        secureProtocol: string;
        mutualTLS: boolean;
    };
    /**
     * 获取当前连接状态
     */
    getConnectionsStatus(): {
        current: number;
        max: number;
    };
    /**
     * 销毁服务器
     */
    destroy(): Promise<void>;
}

/**
 * Enhanced HTTPS Server Options
 */
declare interface HttpsServerOptions extends BaseServerOptions {
    ssl?: SSL1Config;
    connectionPool?: ConnectionPoolConfig;
    ext?: {
        key?: string;
        cert?: string;
        ca?: string;
        [key: string]: any;
    };
}

/**
 * Implementation
 *
 * @interface Implementation
 */
declare interface Implementation {
    [methodName: string]: UntypedHandleCall;
}

export declare type KoattyProtocol = 'http' | "https" | 'http2' | 'grpc' | 'ws' | 'wss';

/**
 * listening options
 *
 * @interface ListeningOptions
 */
export declare interface ListeningOptions {
    hostname: string;
    port: number;
    protocol: KoattyProtocol | KoattyProtocol[];
    trace?: boolean;
    ext?: Record<string, any>;
    connectionPool?: ConnectionPoolConfig;
}

/**
 * Log context interface
 */
declare interface LogContext {
    module?: string;
    protocol?: string;
    serverId?: string;
    connectionId?: string;
    requestId?: string;
    userId?: string;
    sessionId?: string;
    traceId?: string;
    action?: string;
    [key: string]: any;
}

/**
 * 监控统计信息
 */
declare interface MonitoringStats {
    tasksExecuted: number;
    tasksSuccessful: number;
    tasksFailed: number;
    lastExecutionTime: number;
    averageExecutionTime: number;
    uptime: number;
}

/**
 * 监控任务接口
 */
declare interface MonitoringTask {
    name: string;
    interval: number;
    priority: number;
    execute: () => Promise<void> | void;
    onError?: (error: Error) => void;
    enabled?: boolean;
    description?: string;
}

/**
 * Multi-protocol server manager
 */
export declare class MultiProtocolServer implements KoattyServer {
    readonly options: ListeningOptions;
    server?: NativeServer;
    constructor(app: KoattyApplication, opt: ListeningOptions);
    /**
     * Start all servers
     */
    Start(listenCallback?: () => void): NativeServer;
    /**
     * Stop all servers
     */
    Stop(callback?: () => void): void;
    /**
     * Register Service for gRPC server
     */
    RegisterService(impl: (...args: any[]) => any, protocolType?: KoattyProtocol, port?: number): void;
    /**
     * Get status by protocol and port
     * @param protocolType
     * @param port
     * @returns
     */
    getStatus(protocolType?: KoattyProtocol, port?: number): number;
    /**
     * Get native server by protocol and port
     * @param protocolType
     * @param port
     * @returns
     */
    getNativeServer(protocolType?: KoattyProtocol, port?: number): NativeServer;
    /**
     * Get server by protocol and port
     */
    getServer(protocolType?: KoattyProtocol, port?: number): KoattyServer | undefined;
    /**
     * Get all running servers
     */
    getAllServers(): Map<string, KoattyServer>;
    /**
     * Get all failed servers
     */
    getFailedServers(): Map<string, Error>;
    /**
     * Get protocols as array
     */
    /**
     * Create protocol servers based on configuration
     */
    /**
     * Create server instance based on protocol
     */
}

/**
 * Create Server
 *
 * @export
 * @param {KoattyApplication} app
 * @param {ListeningOptions} [opt]
 * @returns {*}  {KoattyServer}
 */
export declare function NewServe(app: KoattyApplication, opt?: ListeningOptions): KoattyServer;

/**
 * cleanup function, returning a promise (used to be onSigterm)
 *
 * @returns {*}
 */
export declare function onSignal(event: string, app: KoattyApplication, server: KoattyServer, forceTimeout: number): Promise<never>;

/**
 * Performance metrics interface
 */
declare interface PerformanceMetrics {
    startTime: number;
    endTime?: number;
    duration?: number;
    memoryUsage?: NodeJS.MemoryUsage;
    [key: string]: any;
}

declare type processEvent = "beforeExit" | "exit" | NodeJS.Signals;

/**
 * ServiceImplementation
 *
 * @interface ServiceImplementation
 */
declare interface ServiceImplementation {
    service: ServiceDefinition;
    implementation: Implementation;
}

/**
 * 优雅关闭结果
 */
declare interface ShutdownResult {
    status: ShutdownStatus;
    totalTime: number;
    completedSteps: string[];
    failedSteps: Array<{
        step: string;
        error: string;
        timestamp: number;
    }>;
}

/**
 * 优雅关闭状态
 */
declare enum ShutdownStatus {
    NOT_STARTED = "not_started",
    IN_PROGRESS = "in_progress",
    DRAINING = "draining",
    COMPLETING = "completing",
    COMPLETED = "completed",
    FAILED = "failed",
    FORCED = "forced"
}

/**
 * 优雅关闭步骤接口
 */
declare interface ShutdownStep {
    name: string;
    description: string;
    timeout?: number;
    execute: (traceId: string) => Promise<void>;
    isRequired?: boolean;
    retryCount?: number;
}

/**
 * HTTPS使用的高级SSL配置
 */
declare interface SSL1Config extends BaseSSLConfig {
    mode: 'auto' | 'manual' | 'mutual_tls';
    requestCert?: boolean;
    rejectUnauthorized?: boolean;
}

/**
 * HTTP/2使用的SSL配置（支持HTTP/1.1降级）
 */
declare interface SSL2Config extends SSL1Config {
    allowHTTP1?: boolean;
}

/**
 * gRPC和WebSocket使用的简单SSL配置
 */
declare interface SSLConfig extends BaseSSLConfig {
    enabled: boolean;
    keyFile?: string;
    certFile?: string;
    caFile?: string;
    clientCertRequired?: boolean;
}

/**
 * Structured logger class based on koatty_logger
 */
declare class StructuredLogger {
    /**
     * Get singleton instance
     */
    static getInstance(): StructuredLogger;
    /**
     * Set global context for all logs
     */
    setGlobalContext(context: LogContext): void;
    /**
     * Clear global context
     */
    clearGlobalContext(): void;
    /**
     * Format log message with context
     */
    /**
     * Debug level logging
     */
    debug(message: string, context?: LogContext, data?: any): void;
    /**
     * Info level logging
     */
    info(message: string, context?: LogContext, data?: any): void;
    /**
     * Warning level logging
     */
    warn(message: string, context?: LogContext, data?: any): void;
    /**
     * Error level logging
     */
    error(message: string, context?: LogContext, error?: Error | any): void;
    /**
     * Start performance tracking
     */
    startPerformanceTracking(trackingId: string, context?: LogContext): void;
    /**
     * End performance tracking and log results
     */
    endPerformanceTracking(trackingId: string, context?: LogContext): PerformanceMetrics | null;
    /**
     * Log server lifecycle events
     */
    logServerEvent(event: 'starting' | 'started' | 'stopping' | 'stopped' | 'error', context: LogContext, data?: any): void;
    /**
     * Log connection events
     */
    logConnectionEvent(event: 'connected' | 'disconnected' | 'error' | 'timeout', context: LogContext, data?: any): void;
    /**
     * Log security events
     */
    logSecurityEvent(event: 'auth_success' | 'auth_failure' | 'rate_limit' | 'blocked', context: LogContext, data?: any): void;
    /**
     * Create a child logger with preset context
     */
    createChildLogger(childContext: LogContext): ChildLogger;
}

export declare interface TerminusOptions {
    timeout: number;
    signals?: string[];
    onSignal?: (event: string, app: KoattyApplication, server: KoattyServer, forceTimeout: number) => Promise<any>;
}

/**
 * 定时器信息接口
 */
declare interface TimerInfo {
    id: string;
    name: string;
    interval: number;
    callback: () => void;
    timer: NodeJS.Timeout;
    createdAt: number;
    lastExecuted?: number;
    priority?: 'high' | 'medium' | 'low';
    protocol?: string;
}

/**
 * 统一定时器管理器
 * 解决定时器资源泄漏和难以追踪的问题
 * Phase 3: 添加定时器优化功能
 */
declare class TimerManager {
    constructor(config?: Partial<TimerOptimizerConfig>);
    /**
     * 添加定时器 (传统方式)
     * @param name 定时器名称
     * @param callback 回调函数
     * @param interval 间隔时间(毫秒)
     * @returns 定时器ID
     */
    /**
     * 添加定时器 - 统一使用优化模式
     * @param name 定时器名称
     * @param callback 回调函数
     * @param interval 间隔时间(毫秒)
     * @returns 定时器ID
     */
    addTimer(name: string, callback: () => void, interval: number): string;
    /**
     * 添加优化定时器 - Phase 3
     * @param task 定时器任务
     * @returns 任务ID
     */
    addOptimizedTimer(task: Omit<TimerTask, 'id' | 'lastExecuted' | 'executionCount'>): string;
    /**
     * 创建物理定时器 - 用于合并定时器的底层实现
     */
    /**
     * 清理指定定时器 - 支持逻辑定时器清理
     * @param timerIdOrName 定时器ID或名称
     * @returns 是否成功清理
     */
    clearTimer(timerIdOrName: string): boolean;
    /**
     * 清理所有定时器 - 支持逻辑和物理定时器清理
     */
    clearAllTimers(): void;
    /**
     * 获取活跃定时器数量 - 返回逻辑定时器数量
     */
    getActiveTimerCount(): number;
    /**
     * 获取所有定时器名称 - 返回逻辑定时器名称
     */
    getTimerNames(): string[];
    /**
     * 获取定时器详细信息
     */
    getTimerInfo(timerId: string): TimerInfo | undefined;
    /**
     * 获取所有定时器统计信息 - 返回逻辑定时器统计
     */
    getTimerStats(): {
        totalTimers: number;
        timers: Array<{
            id: string;
            name: string;
            interval: number;
            uptime: number;
            lastExecuted?: number;
            priority: string;
            executionCount: number;
        }>;
    };
    /**
     * 检查是否存在指定定时器 - 支持逻辑和物理定时器
     */
    hasTimer(timerId: string): boolean;
    /**
     * 确定定时器优先级 - Phase 3 优化
     */
    /**
     * 从定时器名称提取协议 - Phase 3 优化
     */
    /**
     * 选择最佳频率 - Phase 3 优化
     */
    /**
     * 优化定时器 - Phase 3 核心优化逻辑
     */
    /**
     * 创建合并定时器 - Phase 3 优化
     */
    /**
     * 执行任务批次 - Phase 3 优化
     */
    /**
     * 判断是否应该执行任务（自适应频率）- Phase 3 优化
     */
    /**
     * 更新平均执行时间 - Phase 3 优化
     */
    /**
     * 清理合并定时器 - Phase 3 优化
     */
    /**
     * 获取优化统计信息 - Phase 3 优化
     */
    getOptimizationStats(): {
        performance: {
            totalTasks: number;
            executedTasks: number;
            averageExecutionTime: number;
            lastOptimization: number;
        };
        consolidation: {
            activeTimers: number;
            totalTasks: number;
            tasksByFrequency: {
                [k: string]: number;
            };
            tasksByPriority: {
                high: number;
                medium: number;
                low: number;
            };
        };
        config: TimerOptimizerConfig;
    };
    /**
     * 演示Phase 3优化功能 - 创建优化版本的TimerManager实例
     */
    static createOptimizedInstance(): TimerManager;
    /**
     * 演示定时器优化效果
     */
    demonstrateOptimization(): {
        before: {
            timerCount: number;
            intervals: number[];
        };
        after: {
            consolidatedTimers: number;
            frequencies: number[];
            estimatedReduction: string;
        };
    };
    /**
     * 安全销毁管理器
     */
    destroy(): void;
}

/**
 * 定时器优化配置
 */
declare interface TimerOptimizerConfig {
    enableConsolidation: boolean;
    enableAdaptiveFrequency: boolean;
    maxTimersPerFrequency: number;
    loadThreshold: number;
}

/**
 * 定时器任务接口 - Phase 3 优化
 */
declare interface TimerTask {
    id: string;
    name: string;
    callback: () => void;
    interval: number;
    priority: 'high' | 'medium' | 'low';
    protocol?: string;
    lastExecuted?: number;
    executionCount?: number;
}

/**
 * 统一连接池监控管理器
 * 解决连接池监控定时器过多的问题，合并相似功能
 */
declare class UnifiedPoolMonitor {
    constructor(protocol: string, monitoringInterval?: number);
    /**
     * 注册监控任务
     */
    registerTask(task: MonitoringTask): void;
    /**
     * 注销监控任务
     */
    unregisterTask(taskName: string): void;
    /**
     * 启用/禁用任务
     */
    setTaskEnabled(taskName: string, enabled: boolean): void;
    /**
     * 开始监控
     */
    startMonitoring(): void;
    /**
     * 停止监控
     */
    stopMonitoring(): void;
    /**
     * 执行监控周期
     */
    /**
     * 获取需要执行的任务
     */
    /**
     * 按优先级分组任务
     */
    /**
     * 执行同优先级任务组
     */
    /**
     * 执行单个任务
     */
    /**
     * 计算平均执行时间
     */
    /**
     * 获取任务统计信息
     */
    getTaskStats(taskName?: string): MonitoringStats | Map<string, MonitoringStats>;
    /**
     * 获取监控器状态
     */
    getMonitorStatus(): {
        isRunning: boolean;
        uptime: number;
        tasksCount: number;
        enabledTasksCount: number;
        totalExecutions: number;
        totalSuccesses: number;
        totalFailures: number;
    };
    /**
     * 获取任务列表
     */
    getTasks(): Array<{
        name: string;
        interval: number;
        priority: number;
        enabled: boolean;
        description: string;
        stats: MonitoringStats;
    }>;
    /**
     * 销毁监控器
     */
    destroy(): void;
}

/**
 * WebSocket连接池管理器
 */
declare class WebSocketConnectionPoolManager extends ConnectionPoolManager<WS.WebSocket> {
    constructor(config?: ConnectionPoolConfig);
    /**
     * 验证WebSocket连接
     */
    /**
     * 清理WebSocket连接
     */
    /**
     * 获取可用连接
     */
    protected getAvailableConnection(): Promise<{
        connection: WS.WebSocket;
        id: string;
    } | null>;
    /**
     * 创建新连接 - 支持主动创建WebSocket连接（用于客户端模式或测试）
     */
    protected createNewConnection(options: ConnectionRequestOptions): Promise<{
        connection: WS.WebSocket;
        id: string;
        metadata?: any;
    } | null>;
    /**
     * 检查连接是否健康
     */
    isConnectionHealthy(connection: WS.WebSocket): boolean;
    /**
     * 协议特定的连接处理器设置
     */
    /**
     * 协议特定的连接创建逻辑
     */
    protected createProtocolConnection(_options: ConnectionRequestOptions): Promise<{
        connection: WS.WebSocket;
        metadata?: any;
    } | null>;
    /**
     * 添加WebSocket连接（对外接口，使用统一的registerConnection）
     */
    addWebSocketConnection(connection: WS.WebSocket, request?: IncomingMessage): Promise<boolean>;
    /**
     * 注册WebSocket特定的监控任务到统一监控器
     */
    /**
     * 向所有连接发送ping
     */
    /**
     * 清理死连接
     */
    /**
     * 清理过期连接
     */
    cleanupStaleConnections(): number;
    /**
     * 获取连接统计信息
     */
    getConnectionStats(): {
        availableConnections: number;
        healthyConnections: number;
        utilizationRatio: number;
        protocol: string;
        poolConfig: ConnectionPoolConfig;
        health: ConnectionPoolHealth;
        performance: {
            throughput: number;
            latency: {
                p50: number;
                p95: number;
                p99: number;
            };
            memoryUsage: number;
            cpuUsage: number;
        };
        uptime: number;
        activeConnections: number;
        totalConnections: number;
        connectionsPerSecond: number;
        averageLatency: number;
        errorRate: number;
    };
    /**
     * 找到连接ID的辅助方法
     */
    /**
     * 销毁连接池
     */
    /**
     * 重写添加连接方法，确保WebSocket连接正确设置
     */
    addConnection(connection: WS.WebSocket, metadata?: any): Promise<boolean>;
    destroy(): Promise<void>;
}

/**
 * WebSocket Server Options extending base options
 */
declare interface WebSocketServerOptions extends BaseServerOptions {
    wsOptions?: WS.ServerOptions;
    ssl?: SSLConfig;
    connectionPool?: ConnectionPoolConfig;
}

/**
 * WebSocket Server implementation using template method pattern
 * 继承BaseServer，只实现WebSocket特定的逻辑
 */
export declare class WsServer extends BaseServer<WebSocketServerOptions> {
    readonly server: WS.WebSocketServer;
    readonly httpServer: Server_2 | Server_3;
    socket: any;
    constructor(app: KoattyApplication, options: WebSocketServerOptions);
    /**
     * 初始化WebSocket连接池
     */
    /**
     * 创建WebSocket服务器实例
     */
    /**
     * 配置WebSocket服务器选项
     */
    /**
     * WebSocket特定的额外初始化
     */
    /**
     * 创建HTTP/HTTPS服务器
     */
    /**
     * 提取连接池配置
     */
    /**
     * 设置WebSocket升级处理
     */
    /**
     * 确保升级处理器已绑定到HTTP服务器
     */
    /**
     * 设置WebSocket连接处理
     */
    /**
     * 处理新的WebSocket连接
     */
    /**
     * 设置WebSocket事件处理器
     */
    protected extractRelevantConfig(config: WebSocketServerOptions): {
        hostname: string;
        port: number;
        protocol: KoattyProtocol;
        isSecure: boolean;
        connectionPool: {
            maxConnections: number;
            pingInterval: number;
            pongTimeout: number;
            heartbeatInterval: number;
        };
        wsOptions: WS.ServerOptions<ws, typeof IncomingMessage>;
    };
    /**
     * 检查SSL配置是否变更
     */
    /**
     * 检查连接池配置是否变更
     */
    Start(listenCallback?: () => void): NativeServer;
    getStatus(): number;
    getNativeServer(): NativeServer;
    /**
     * 启动连接池监控
     */
    /**
     * 获取WebSocket连接统计信息
     */
    getWebSocketConnectionStats(): {
        current: number;
        max: number;
    };
    /**
     * 获取当前连接状态
     */
    getConnectionsStatus(): {
        current: number;
        max: number;
    };
    /**
     * 销毁服务器
     */
    destroy(): Promise<void>;
}

export { }
