export interface EncryptedPayload {
    version: number;
    algorithm: string;
    project: string;
    timestamp: string;
    checksum: string;
    encryptedData: string;
    iv: string;
    tag: string;
    compression: string;
    eventCount: number;
}
export interface DiffResult {
    localOnly: number[];
    remoteOnly: number[];
    conflicts: SyncConflict[];
    bothPresent: number;
}
export interface SyncConflict {
    eventId: number;
    localSummary: string;
    remoteSummary: string;
    localTimestamp: string;
    remoteTimestamp: string;
    localImportance: number;
    remoteImportance: number;
    resolved: boolean;
    resolution?: 'local-wins' | 'remote-wins' | 'merge';
}
export interface MergeResult {
    added: number;
    updated: number;
    conflicts: number;
    unresolvedConflicts: number;
    skipped: number;
    errors: string[];
}
export interface SyncStatus {
    lastSyncAt: string | null;
    pendingUpload: number;
    pendingDownload: number;
    conflicts: number;
    lastSyncDuration: number;
    encryptionKeySet: boolean;
}
export interface SyncSnapshot {
    project: string;
    eventIds: number[];
    timestamp: string;
    checksum: string;
}
export declare function exportMemory(project: string): EncryptedPayload;
export declare function importMemory(payload: EncryptedPayload, targetProject: string): MergeResult;
export declare function computeDiff(project: string, remotePayload: EncryptedPayload): DiffResult;
export declare function resolveConflicts(conflicts: SyncConflict[], strategy: 'local-wins' | 'remote-wins' | 'importance' | 'timestamp'): SyncConflict[];
export declare function getSyncStatus(project: string): SyncStatus;
export declare function markEventsSynced(eventIds: number[]): void;
export declare function getUnsyncedEvents(project: string, limit?: number): any[];
export declare function saveSyncSnapshot(project: string): void;
export declare function getLatestSnapshot(project: string): SyncSnapshot | null;
//# sourceMappingURL=sync-engine.d.ts.map