import type { Clock } from '../shared/Clock.js'; import { ProfileManager } from '../core/ProfileManager.js'; import type { SyncBackend } from '../backend/SyncBackend.js'; import { ConflictResolver } from './ConflictResolver.js'; import { SyncStatusStore } from '../status/SyncStatusStore.js'; import type { SyncStatus } from '../status/SyncStatusStore.js'; export interface SyncEngineConfig { repoPath: string; profileFileName?: string; remoteUrl?: string; clock?: Clock; deviceId?: string; debounceMs?: number; pullIntervalMs?: number; } export declare class SyncEngine { private gitBackend; private profileManager; private conflictResolver; private autoCommitter; private pushPullManager; private statusStore; private watcher; private statusCallbacks; private config; private shutdownHandler; private stopping; private _selfWriting; private logger; private pullTimer; constructor(config: SyncEngineConfig); start(): Promise; stop(): Promise; /** Mark that we are writing the profile ourselves — watcher should ignore */ setSelfWriting(value: boolean): void; private installShutdownHooks; private removeShutdownHooks; onStatusChange(cb: (status: SyncStatus) => void): void; getProfileManager(): ProfileManager; getGitBackend(): SyncBackend; getStatusStore(): SyncStatusStore; getConflictResolver(): ConflictResolver; }