import { EventEmitter } from 'events';
import { HttpClient } from './httpClient.js';
import { Session, QueueStatus } from '../types/session.js';
export declare class SessionManager extends EventEmitter {
    private sessions;
    private readonly SESSION_TIMEOUT;
    private readonly CLEANUP_INTERVAL;
    private readonly MAX_SESSIONS;
    private cleanupTimer;
    private running;
    private metrics;
    private httpClient;
    private sessionService;
    constructor();
    private setupEventHandlers;
    start(): void;
    stop(): void;
    createSession(userId: string, apiKeyId: string, tryaiiApiKey?: string): Promise<string>;
    getOrCreateSession(userId: string, apiKeyId: string, tryaiiApiKey?: string): Promise<Session>;
    /**
     * 🔥 ENHANCED: Create session with user context data
     */
    createSessionWithUserContext(userId: string, apiKeyId: string, tryaiiApiKey?: string): Promise<string>;
    queueRequest(sessionId: string, method: string, params: any): Promise<any>;
    private processNextRequest;
    private rejectRequest;
    private startCleanupScheduler;
    private cleanupExpiredSessions;
    private isSessionExpired;
    private expireSession;
    getSession(sessionId: string): Session | undefined;
    getActiveSessionCount(): number;
    getSessionStatus(sessionId: string): QueueStatus | null;
    getMetrics(): any;
    isRunning(): boolean;
    setHttpClient(httpClient: HttpClient): void;
    private saveSessionToDatabase;
    private extractModelInteractions;
}
export declare const sessionManager: SessionManager;
//# sourceMappingURL=sessionManager.d.ts.map