/** * Real-Time Sync Handler * KILLER FEATURE: Google Docs-level real-time synchronization for code * Integrates CodeSyncEngine with WebSocket collaboration */ import { EventEmitter } from 'events'; import * as WebSocket from 'ws'; import { CodeSyncEngine, CodeDocument } from './code-sync-engine'; export interface SyncMessage { type: 'operation' | 'cursor_position' | 'selection_change' | 'file_open' | 'file_close' | 'sync_request'; payload: any; userId: string; sessionId: string; timestamp: Date; } export interface CursorPosition { userId: string; fileId: string; line: number; column: number; timestamp: Date; } export interface TextSelection { userId: string; fileId: string; start: { line: number; column: number; }; end: { line: number; column: number; }; timestamp: Date; } export interface UserFileActivity { userId: string; sessionId: string; openFiles: string[]; activeFile?: string; cursors: Map; selections: Map; } export declare class RealtimeSyncHandler extends EventEmitter { private syncEngine; private connections; private userActivities; private documentSubscribers; private typingIndicators; constructor(syncEngine: CodeSyncEngine); addConnection(userId: string, ws: WebSocket): void; removeConnection(userId: string): void; private handleSyncMessage; private handleOperationMessage; private handleCursorPosition; private handleSelectionChange; private handleFileOpen; private handleFileClose; private handleSyncRequest; private setUserTyping; private startTypingIndicatorCleanup; private broadcastToDocument; private sendToUser; private setupSyncEngineHandlers; createDocument(sessionId: string, filePath: string, content: string, createdBy: string): CodeDocument; getDocumentAnalytics(documentId: string): { documentId: string; filePath: string; version: number; collaborators: number; totalOperations: number; totalConflicts: number; lastModified: Date; operationsByType: Record; operationsByAuthor: Record; conflictResolutionStrategies: Record; averageConflictResolutionTime: number; } | null; getUserActivity(userId: string): UserFileActivity | null; getDocumentCollaborators(documentId: string): string[]; getAllActivities(): UserFileActivity[]; shutdown(): Promise; } //# sourceMappingURL=realtime-sync-handler.d.ts.map