import { Server } from 'http'; import { ActivityStreamManager, StreamEvent, StreamFilter, StreamSubscription } from './activity-stream-manager'; export interface WebSocketMessage { type: MessageType; id?: string; data?: any; error?: string; } export declare enum MessageType { SUBSCRIBE = "subscribe", UNSUBSCRIBE = "unsubscribe", GET_RECENT_EVENTS = "get_recent_events", GET_METRICS = "get_metrics", PING = "ping", EVENT = "event", SUBSCRIBED = "subscribed", UNSUBSCRIBED = "unsubscribed", RECENT_EVENTS = "recent_events", METRICS = "metrics", PONG = "pong", ERROR = "error" } export interface ClientSubscription { subscriptionId: string; streamSubscription: StreamSubscription; filters: StreamFilter; clientId: string; } export interface WebSocketServerConfig { port?: number; path?: string; enableAuth?: boolean; authTimeout?: number; maxConnections?: number; pingInterval?: number; enableCompression?: boolean; } export declare class ActivityWebSocketServer { private wss; private streamManager; private clients; private clientSubscriptions; private config; private pingTimer?; constructor(streamManager: ActivityStreamManager, server?: Server, config?: WebSocketServerConfig); /** * Get server statistics */ getStats(): { connectedClients: number; totalSubscriptions: number; subscriptionsByType: Record; uptime: number; }; /** * Broadcast event to all matching clients */ broadcast(event: StreamEvent, filters?: Partial): void; /** * Send event to specific client */ sendToClient(clientId: string, event: StreamEvent): void; /** * Close the WebSocket server */ close(): Promise; private setupEventHandlers; private handleClientMessage; private handleSubscribe; private handleUnsubscribe; private handleGetRecentEvents; private handleGetMetrics; private handleClientDisconnect; private sendMessage; private sendError; private startPingTimer; private generateClientId; private generateId; private getFilterType; private filtersMatch; } //# sourceMappingURL=websocket-server.d.ts.map