import { WebSocketNamespace } from '../constants/websocket-namespaces.constants.js';
import { Logger } from './logger.js';
/**
 * Интерфейс для хранения токенов сессий
 */
export interface SessionTokenStore {
    /** Получить токен сессии */
    getToken(namespace: WebSocketNamespace): string | null;
    /** Сохранить токен сессии */
    saveToken(namespace: WebSocketNamespace, token: string): void;
    /** Удалить токен сессии */
    removeToken(namespace: WebSocketNamespace): void;
    /** Проверить наличие токена */
    hasToken(namespace: WebSocketNamespace): boolean;
    /** Очистить все токены */
    clear(): void;
}
/**
 * Класс для хранения токенов сессий в памяти
 */
export declare class MemorySessionTokenStore implements SessionTokenStore {
    /** Хранилище токенов */
    private tokens;
    /**
     * Получить токен сессии для указанного пространства имен
     * @param {WebSocketNamespace} namespace Пространство имен
     * @returns {string | null} Токен сессии или null, если не найден
     */
    getToken(namespace: WebSocketNamespace): string | null;
    /**
     * Сохранить токен сессии для указанного пространства имен
     * @param {WebSocketNamespace} namespace Пространство имен
     * @param {string} token Токен сессии
     */
    saveToken(namespace: WebSocketNamespace, token: string): void;
    /**
     * Удалить токен сессии для указанного пространства имен
     * @param {WebSocketNamespace} namespace Пространство имен
     */
    removeToken(namespace: WebSocketNamespace): void;
    /**
     * Проверить наличие токена для указанного пространства имен
     * @param {WebSocketNamespace} namespace Пространство имен
     * @returns {boolean} true, если токен есть
     */
    hasToken(namespace: WebSocketNamespace): boolean;
    /**
     * Очистить все токены
     */
    clear(): void;
}
/**
 * Опции для менеджера сессий
 */
export interface SessionManagerOptions {
    /** Включение сохранения и восстановления сессий */
    enableSessionPersistence?: boolean;
    /** Логгер */
    logger?: Logger;
}
/**
 * Класс для управления токенами сессий WebSocket
 */
export declare class SessionManager {
    /** Хранилище токенов сессий */
    private sessionTokens;
    /** Включено ли сохранение сессий */
    private readonly enableSessionPersistence;
    /** Логгер */
    private readonly logger;
    /**
     * Создает новый менеджер сессий
     * @param {SessionManagerOptions} options Опции менеджера сессий
     */
    constructor(options?: SessionManagerOptions);
    /**
     * Сохраняет токен сессии для пространства имен
     * @param {string} namespace Пространство имен
     * @param {string} token Токен сессии
     */
    saveSessionToken(namespace: string, token: string): void;
    /**
     * Получает токен сессии для пространства имен
     * @param {string} namespace Пространство имен
     * @returns {string | undefined} Токен сессии или undefined, если не найден
     */
    getSessionToken(namespace: string): string | undefined;
    /**
     * Удаляет токен сессии для пространства имен
     * @param {string} namespace Пространство имен
     */
    clearSessionToken(namespace: string): void;
    /**
     * Удаляет все токены сессий
     */
    clearAllSessionTokens(): void;
}
//# sourceMappingURL=session-manager.d.ts.map