/** * Sync Engine - Bi-directional Synchronization * * Manages synchronization between local F5 issues and remote PM systems. * Supports conflict detection and resolution strategies. */ import { F5Issue, PMAdapter, SyncState, SyncConflict, SyncResult, SyncConfig, SyncError, SyncDetail, ConflictResolutionStrategy } from '../../types/integrations.js'; export interface SyncStorage { states: Map; conflicts: Map; lastSyncAt?: Date; } export declare class SyncEngine { private adapter; private config; private storage; private storageFile; constructor(adapter: PMAdapter, config: SyncConfig, storagePath?: string); initialize(): Promise; shutdown(): Promise; /** * Perform full synchronization based on configuration */ sync(localIssues: F5Issue[]): Promise; /** * Push local issues to remote */ pushToRemote(localIssues: F5Issue[]): Promise<{ created: number; updated: number; errors: SyncError[]; details: SyncDetail[]; }>; /** * Pull issues from remote */ pullFromRemote(): Promise<{ created: number; updated: number; issues: F5Issue[]; errors: SyncError[]; details: SyncDetail[]; }>; /** * Bidirectional sync with conflict detection */ bidirectionalSync(localIssues: F5Issue[]): Promise<{ created: number; updated: number; deleted: number; conflicts: SyncConflict[]; errors: SyncError[]; details: SyncDetail[]; }>; resolveConflict(conflict: SyncConflict): Promise; resolveConflictManually(conflictId: string, strategy: ConflictResolutionStrategy, mergedValues?: Record): Promise; getConflicts(): SyncConflict[]; private createConflict; private mergeIssues; private updateSyncState; private createSyncState; private updateSyncStateFromRemote; private findStateByRemoteId; private getChangedFields; private loadStorage; private saveStorage; getStatus(): { connected: boolean; lastSyncAt?: Date; totalTracked: number; pendingConflicts: number; syncDirection: string; }; }