/**
 * Опции для SSE клиента
 */
export interface SseClientOptions {
    /**
     * HTTP заголовки для SSE соединения
     */
    headers?: Record<string, string>;
    /**
     * Таймаут подключения в миллисекундах
     */
    connectionTimeout?: number;
    /**
     * Максимальное количество попыток переподключения
     */
    maxRetries?: number;
    /**
     * Задержка перед попыткой переподключения в миллисекундах
     */
    retryDelay?: number;
    /**
     * Максимальная задержка перед попыткой переподключения
     */
    maxRetryDelay?: number;
}
/**
 * Интерфейс для обработчика события SSE
 */
export interface SseEventHandler {
    (event: any): void;
}
/**
 * Клиент для работы с Server-Sent Events (SSE)
 * Поддерживает работу как в браузере, так и в Node.js
 */
export declare class SseClient {
    /** URL для подключения */
    private readonly url;
    /** Опции клиента */
    private readonly options;
    /** Экземпляр EventSource */
    private eventSource;
    /** Счетчик попыток переподключения */
    private retryCount;
    /** Флаг, указывающий, что соединение было закрыто намеренно */
    private intentionallyClosed;
    /** Таймер переподключения */
    private reconnectTimer;
    /** Таймер таймаута соединения */
    private connectionTimeoutTimer;
    /** Обработчики событий */
    private eventHandlers;
    /**
     * Создает новый SSE клиент
     * @param {string} url URL для подключения
     * @param {SseClientOptions} [options] Опции клиента
     */
    constructor(url: string, options?: SseClientOptions);
    /**
     * Подключается к SSE эндпоинту
     * @returns {Promise<void>}
     */
    connect(): Promise<void>;
    /**
     * Закрывает SSE соединение
     */
    close(): void;
    /**
     * Добавляет обработчик события
     * @param {string} eventType Тип события
     * @param {SseEventHandler} handler Обработчик события
     */
    on(eventType: string, handler: SseEventHandler): void;
    /**
     * Удаляет обработчик события
     * @param {string} eventType Тип события
     * @param {SseEventHandler} [handler] Обработчик события (если не указан, удаляются все обработчики)
     */
    off(eventType: string, handler?: SseEventHandler): void;
    /**
     * Вызывает обработчики для указанного события
     * @param {string} eventType Тип события
     * @param {any} data Данные события
     */
    private dispatchEvent;
    /**
     * Переподключается к SSE эндпоинту с экспоненциальной задержкой
     * @private
     */
    private reconnect;
}
//# sourceMappingURL=sse-client.d.ts.map