/** * WEBSOCKET MANAGER * Handles real-time connection to Relay service * * Features: * - JWT-based authentication * - Automatic reconnection with exponential backoff * - Message routing and subscription management * - Presence tracking * - Heartbeat monitoring */ import type { DocumentId, MessageType, UserId, WebSocketMessage } from '@materi.ai/frame/core/types'; type MessageHandler = (message: WebSocketMessage) => void; type StatusListener = (status: 'connecting' | 'connected' | 'disconnected' | 'error') => void; /** * WebSocket Manager for real-time collaboration */ export declare class WebSocketManager { private ws; private url; private token; private userId; private documentId; private messageHandlers; private statusListeners; private reconnectAttempts; private reconnectDelay; private heartbeatTimer; private reconnectTimer; constructor(); /** * Connect to WebSocket server */ connect(token: string, userId: UserId, documentId: DocumentId): Promise; /** * Disconnect from WebSocket */ disconnect(): void; /** * Subscribe to document for real-time updates */ subscribe(documentId: DocumentId): void; /** * Unsubscribe from document */ unsubscribe(documentId: DocumentId): void; /** * Send message to server */ send(message: WebSocketMessage): void; /** * Register handler for specific message type */ on(type: MessageType, handler: MessageHandler): void; /** * Unregister handler */ off(type: MessageType, handler: MessageHandler): void; /** * Listen to connection status changes */ onStatusChange(listener: StatusListener): () => void; /** * Get connection status */ isConnected(): boolean; /** * Handle incoming WebSocket message */ private handleMessage; /** * Start heartbeat to keep connection alive */ private startHeartbeat; /** * Stop heartbeat */ private stopHeartbeat; /** * Attempt to reconnect with exponential backoff */ private attemptReconnect; /** * Notify status change listeners */ private notifyStatus; } /** * Global WebSocket manager instance */ export declare const wsManager: WebSocketManager; /** * Connect WebSocket manager */ export declare function connectWebSocket(token: string, userId: UserId, documentId: DocumentId): Promise; /** * Disconnect WebSocket manager */ export declare function disconnectWebSocket(): void; /** * Get WebSocket connection status */ export declare function isWebSocketConnected(): boolean; export {}; //# sourceMappingURL=index.d.ts.map