/** * Data Synchronization Client for Recoder.xyz * Handles cross-platform data sync with conflict resolution */ import { EventEmitter } from 'events'; import { AuthClient } from './auth-client'; import { WebSocketClient } from './websocket-client'; export interface SyncState { dataType: string; lastSyncAt: string; syncVersion: number; syncStatus: 'synced' | 'pending' | 'conflicted' | 'failed'; conflictData?: any; deviceSyncMap: Record; } export interface SyncConfig { authClient: AuthClient; webSocketClient?: WebSocketClient; baseURL?: string; syncInterval?: number; enableRealTimeSync?: boolean; } export interface ProjectData { id: string; name: string; type: string; description?: string; status: string; config: any; updatedAt: string; } export interface SettingsData { name?: string; organization?: string; preferences?: any; aiProviders?: any; } export interface SyncResult { success: boolean; data?: T; version?: number; syncStatus: 'updated' | 'synced' | 'conflicted' | 'up_to_date'; conflicted: boolean; conflicts?: any[]; } export type SyncDataType = 'projects' | 'settings' | 'history' | 'preferences'; export declare class SyncClient extends EventEmitter { private authClient; private webSocketClient?; private api; private syncInterval?; private config; private localVersions; private syncInProgress; constructor(config: SyncConfig); private setupAPIInterceptors; private setupWebSocketListeners; startAutoSync(): Promise; stopAutoSync(): void; syncAll(): Promise; sync(dataType: SyncDataType): Promise>; syncProjects(): Promise>; syncSettings(): Promise>; updateProjects(projects: ProjectData[]): Promise>; updateSettings(settings: SettingsData): Promise>; resolveConflict(dataType: SyncDataType, resolution: 'server_wins' | 'client_wins' | 'merge', resolvedData?: any): Promise; forceSync(): Promise; getSyncStatus(): Promise; private performSync; private handleSyncRequest; private handleSyncUpdate; private handleSyncError; private loadLocalVersions; private saveLocalVersions; get isSyncing(): boolean; get autoSyncEnabled(): boolean; getLocalVersion(dataType: SyncDataType): number; getSyncingDataTypes(): SyncDataType[]; } export default SyncClient; //# sourceMappingURL=sync-client.d.ts.map