import { Socket } from './socket';
import { SocketMessage, SocketStatus } from './types';
/**
 * Socket历史消息记录项
 */
export interface SocketHistoryItem {
    /** 消息ID */
    id: string;
    /** 消息时间戳 */
    timestamp: number;
    /** 消息方向（发送/接收） */
    direction: 'in' | 'out';
    /** 消息内容 */
    message: SocketMessage | Partial<SocketMessage>;
    /** 消息大小（字节） */
    size?: number;
}
/**
 * Socket状态记录项
 */
export interface SocketStatusItem {
    /** 状态变更时间戳 */
    timestamp: number;
    /** 变更前状态 */
    from: SocketStatus;
    /** 变更后状态 */
    to: SocketStatus;
    /** 相关事件（如果有） */
    event?: string;
    /** 附加信息 */
    info?: any;
}
/**
 * Socket监控配置选项
 */
export interface SocketMonitorOptions {
    /** 最大历史消息记录数 */
    maxHistoryItems?: number;
    /** 最大状态变更记录数 */
    maxStatusItems?: number;
    /** 是否记录消息内容 */
    recordMessageContent?: boolean;
    /** 是否自动开始监控 */
    autoStart?: boolean;
    /** 过滤掉的消息类型（不记录） */
    excludeEvents?: string[];
}
/**
 * Socket监控统计信息
 */
export interface SocketStats {
    /** 总发送消息数 */
    totalSent: number;
    /** 总接收消息数 */
    totalReceived: number;
    /** 总发送字节数 */
    bytesSent: number;
    /** 总接收字节数 */
    bytesReceived: number;
    /** 连接次数 */
    connectionCount: number;
    /** 重连次数 */
    reconnectionCount: number;
    /** 错误次数 */
    errorCount: number;
    /** 心跳发送次数 */
    heartbeatCount: number;
    /** 心跳超时次数 */
    heartbeatTimeoutCount: number;
    /** 首次连接时间 */
    firstConnectTime: number | null;
    /** 最后连接时间 */
    lastConnectTime: number | null;
    /** 当前连接持续时间（毫秒，连接状态下有效） */
    currentConnectionDuration: number | null;
    /** 平均消息大小（字节） */
    averageMessageSize: number;
}
/**
 * Socket监控器
 * 用于监控Socket的连接状态和消息历史
 */
export declare class SocketMonitor {
    private socket;
    private options;
    private isMonitoring;
    private messageHistory;
    private statusHistory;
    private stats;
    private connectStartTime;
    private eventHandlers;
    /**
     * 创建Socket监控器
     * @param socket 要监控的Socket实例
     * @param options 监控配置选项
     */
    constructor(socket: Socket, options?: SocketMonitorOptions);
    /**
     * 开始监控
     */
    start(): void;
    /**
     * 停止监控
     */
    stop(): void;
    /**
     * 检查监控器是否处于活跃状态
     */
    isActive(): boolean;
    /**
     * 清除历史记录
     */
    clearHistory(): void;
    /**
     * 重置统计数据
     */
    resetStats(): void;
    /**
     * 获取消息历史记录
     * @param limit 返回的最大记录数
     * @param direction 消息方向过滤
     */
    getMessageHistory(limit?: number, direction?: 'in' | 'out'): SocketHistoryItem[];
    /**
     * 获取状态变更历史
     * @param limit 返回的最大记录数
     */
    getStatusHistory(limit?: number): SocketStatusItem[];
    /**
     * 获取统计信息
     */
    getStats(): SocketStats;
    /**
     * 设置监控事件监听
     */
    private setupEventListeners;
    /**
     * 移除监控事件监听
     */
    private removeEventListeners;
    /**
     * 记录已发送的消息
     */
    private recordMessageSent;
    /**
     * 记录已接收的消息
     */
    private recordMessageReceived;
    /**
     * 记录状态变化
     */
    private recordStatusChange;
    /**
     * 添加消息到历史记录，并控制记录数量
     */
    private addToMessageHistory;
    /**
     * 添加状态到历史记录，并控制记录数量
     */
    private addToStatusHistory;
    /**
     * 更新平均消息大小
     */
    private updateAverageMessageSize;
    /**
     * 释放资源
     */
    destroy(): void;
}
