/** * Session Management Module */ import type { SessionData, Attribution } from './types'; export declare class SessionManager { private sessionId; private sessionData; private sessionTimeout; private lastActivity; private SESSION_KEY; private activityCheckInterval; private activityListeners; private sessionCreationLock; constructor(timeout?: number); /** * Initialize or restore session */ private initSession; /** * Check if session is still valid */ private isSessionValid; /** * Create a new session * * FIXED (DATA-02): Added mutex lock to prevent race conditions */ createNewSession(): string; /** * Rotate session ID (security measure) * * FIXED (DATA-05): Called when user identifies to prevent session fixation attacks * Keeps session data but generates new session ID */ rotateSessionId(): string; /** * Get current session ID */ getSessionId(): string; /** * Get session data */ getSessionData(): SessionData | null; /** * Update session activity * FIXED (CRITICAL-04): Check session validity BEFORE updating lastActivity * This ensures sessions actually timeout after the configured period */ updateActivity(eventType?: string): void; /** * Check if session is active */ isSessionActive(): boolean; /** * End the current session * Fixed Issue #23: Stop activity monitor when session ends */ endSession(): void; /** * Save session to storage */ private saveSession; /** * Get session timeout */ getTimeout(): number; /** * Set session timeout */ setTimeout(timeout: number): void; /** * Store session attribution * Fixed Issue #24: Use single key instead of one per session */ storeAttribution(attribution: Attribution): void; /** * Get session attribution * Fixed Issue #24: Use single key instead of one per session * FIXED (CRITICAL-04): Verify session is still active before returning attribution */ getAttribution(): Attribution | null; /** * Get session metrics */ getMetrics(): Record; /** * Setup activity monitor for automatic session timeout */ private setupActivityMonitor; /** * Cleanup listeners and timers */ destroy(): void; /** * Get session number (count of sessions) */ getSessionNumber(): number; /** * Increment session count */ private incrementSessionCount; } //# sourceMappingURL=session.d.ts.map