export interface SessionData { sessionId?: string; token?: string; cookies?: string[]; expiresAt?: number; deviceId?: string; terminalUuid?: string; } export interface SessionOptions { sessionTimeout?: number; refreshThreshold?: number; maxRefreshAttempts?: number; } export declare enum SessionState { DISCONNECTED = "disconnected", CONNECTING = "connecting", CONNECTED = "connected", EXPIRED = "expired", ERROR = "error" } /** * Manages device sessions and session lifecycle * Single responsibility: Session state and lifecycle management */ export declare class SessionManager { private sessionData; private sessionState; private refreshPromise; private readonly options; constructor(options?: SessionOptions); /** * Initialize a new session */ initializeSession(sessionData: SessionData): Promise; /** * Get current session data */ getSessionData(): Readonly; /** * Get current session state */ getSessionState(): SessionState; /** * Check if session is valid and not expired */ isSessionValid(): boolean; /** * Check if session needs refresh (close to expiry) */ needsRefresh(): boolean; /** * Refresh session if needed */ refreshSessionIfNeeded(refreshFunction: () => Promise): Promise; /** * Update session data */ updateSession(sessionData: Partial): void; /** * Invalidate current session */ invalidateSession(): void; /** * Mark session as expired */ markExpired(): void; /** * Check if specific session error indicates session expiry */ isSessionError(error: Error): boolean; /** * Handle session error and update state accordingly */ handleSessionError(error: Error): void; /** * Get session headers for requests */ getSessionHeaders(): Record; /** * Perform session refresh */ private performRefresh; }