import { WebSocket } from 'ws'; import { pino } from 'pino'; import type { WSConnectionState } from '../types/websocket.js'; interface ConnectionEntry { connectionId: string; ws: WebSocket; state: WSConnectionState; } interface AuthenticationParams { connectionId: string; userId: string; sessionId: string; roles?: string[]; permissions?: string[]; scopes?: string[]; } export declare class WSConnectionManager { private connections; private sessionConnections; private userConnections; private logger; constructor(logger: pino.Logger); addConnection(connectionId: string, ws: WebSocket, state: WSConnectionState): void; private cleanupUserConnections; private cleanupSessionConnections; removeConnection(connectionId: string): void; getConnection(connectionId: string): ConnectionEntry | undefined; getConnectionState(connectionId: string): WSConnectionState | undefined; getWebSocket(connectionId: string): WebSocket | undefined; authenticateConnection({ connectionId, userId, sessionId, roles, permissions, scopes, }: AuthenticationParams): void; getAllConnections(): ConnectionEntry[]; getConnectionsByUser(userId: string): ConnectionEntry[]; getConnectionsBySession(sessionId: string): ConnectionEntry[]; addSubscription(connectionId: string, topic: string): boolean; removeSubscription(connectionId: string, topic: string): boolean; getConnectionsByTopic(topic: string): ConnectionEntry[]; getStats(): { total: number; authenticated: number; unauthenticated: number; uniqueUsers: number; uniqueSessions: number; connectionsByUser: Array<{ userId: string; count: number; }>; }; cleanupStaleConnections(maxAge: number): number; } export {}; //# sourceMappingURL=connection-manager.d.ts.map