import { EventEmitter } from 'events'; import type { SessionInfo, SessionState } from './types.js'; import type { pino } from 'pino'; export interface SessionEvents { 'session:created': (session: SessionInfo) => void; 'session:updated': (session: SessionInfo, changes: Partial) => void; 'session:terminated': (session: SessionInfo) => void; 'session:state-changed': (sessionId: string, from: SessionState, to: SessionState) => void; 'connection:added': (sessionId: string, connectionId: string) => void; 'connection:removed': (sessionId: string, connectionId: string) => void; 'cleanup:completed': (data: { count: number; }) => void; 'lifecycle:start': (data: { sessionTimeout: number; maxSessionsPerUser: number; }) => void; 'lifecycle:stop': (data: object) => void; 'limit:exceeded': (userId: string, limit: number) => void; 'validation:failed': (sessionId: string, reason: string) => void; 'persistence:error': (sessionId: string, error: Error) => void; } export declare class SessionEventEmitter extends EventEmitter { private readonly logger; constructor(logger: pino.Logger); emit(event: K, ...args: Parameters): boolean; on(event: K, listener: SessionEvents[K]): this; once(event: K, listener: SessionEvents[K]): this; off(event: K, listener: SessionEvents[K]): this; removeAllListeners(event?: K): this; listenerCount(event: K): number; getActiveEvents(): (keyof SessionEvents)[]; } //# sourceMappingURL=event-emitter.d.ts.map