import { WebSocketNamespace } from '../constants/websocket-namespaces.constants.js';
import { WebSocketClient } from '../utils/websocket-client.js';
import { SessionManager } from '../utils/session-manager.js';
import { PingPongManager } from '../utils/ping-pong-manager.js';
import { ConnectionStateManager } from '../utils/connection-state-manager.js';
import { ConnectionDiagnostics, PingPongStats } from '../interfaces/websocket/stats.interfaces.js';
import { Logger } from '../utils/logger.js';
/**
 * Опции для сервиса диагностики
 */
export interface DiagnosticsServiceOptions {
    /** Интервал проверки здоровья соединений в миллисекундах */
    healthCheckInterval?: number;
    /** Логгер для вывода сообщений */
    logger?: Logger;
    /** Менеджер сессий */
    sessionManager?: SessionManager;
    /** Менеджер ping/pong */
    pingPongManager?: PingPongManager;
    /** Менеджер состояния подключения */
    connectionStateManager?: ConnectionStateManager;
}
/**
 * Сервис для диагностики WebSocket соединений
 */
export declare class DiagnosticsService {
    /** Интервал проверки здоровья соединений в миллисекундах */
    private readonly healthCheckInterval;
    /** Логгер для вывода сообщений */
    private readonly logger;
    /** Менеджер сессий */
    private readonly sessionManager;
    /** Менеджер ping/pong */
    private readonly pingPongManager;
    /** Менеджер состояния подключения */
    private readonly connectionStateManager;
    /** Таймер для проверки здоровья соединений */
    private healthCheckTimer;
    /** Клиенты WebSocket по namespace */
    private readonly clients;
    /**
     * Создает новый сервис диагностики
     * @param {DiagnosticsServiceOptions} options Опции сервиса
     */
    constructor(options?: DiagnosticsServiceOptions);
    /**
     * Регистрирует WebSocket клиент для мониторинга
     * @param {WebSocketNamespace} namespace Пространство имен
     * @param {WebSocketClient} client WebSocket клиент
     */
    registerClient(namespace: WebSocketNamespace, client: WebSocketClient): void;
    /**
     * Удаляет регистрацию WebSocket клиента
     * @param {WebSocketNamespace} namespace Пространство имен
     */
    unregisterClient(namespace: WebSocketNamespace): void;
    /**
     * Запускает периодическую проверку здоровья соединений
     * @returns {boolean} true, если проверка успешно запущена
     */
    startHealthCheck(): boolean;
    /**
     * Останавливает периодическую проверку здоровья соединений
     */
    stopHealthCheck(): void;
    /**
     * Выполняет проверку здоровья соединений
     */
    private performHealthCheck;
    /**
     * Выполняет диагностику соединения
     * @param {WebSocketNamespace} namespace Пространство имен
     * @returns {ConnectionDiagnostics} Диагностическая информация
     */
    diagnoseConnection(namespace: WebSocketNamespace): ConnectionDiagnostics;
    /**
     * Выполняет диагностику всех соединений
     * @returns {Record<string, ConnectionDiagnostics>} Диагностическая информация по всем соединениям
     */
    diagnoseAllConnections(): Record<string, ConnectionDiagnostics>;
    /**
     * Получает статистику ping/pong для указанного пространства имен
     * @param {WebSocketNamespace} namespace Пространство имен
     * @returns {PingPongStats | null} Статистика ping/pong
     */
    getPingStats(namespace: WebSocketNamespace): PingPongStats | null;
    /**
     * Возвращает функцию-обработчик для pong-ответов, которая рассчитывает RTT
     * @returns {(data: any) => void} Функция-обработчик
     */
    getPongHandler(): (data: any) => void;
}
//# sourceMappingURL=diagnostics-service.d.ts.map