import type { Workspace } from '../core/types.js';
import { Database } from '../db/database.js';
export interface SyncManifest {
    version: '1.0.0';
    workspaceId: string;
    workspaceName: string;
    created: Date;
    lastSync: Date;
    deviceId: string;
    syncProtocol: 'git-v1';
}
export interface ChangeEvent {
    id: string;
    timestamp: Date;
    deviceId: string;
    operation: 'create' | 'update' | 'delete' | 'archive';
    entity: 'lore' | 'realm' | 'relation';
    entityId: string;
    data?: any;
    metadata?: {
        realmId?: string;
        workspaceId?: string;
    };
}
export interface SyncResult {
    pulled: number;
    pushed: number;
    conflicts: number;
    errors: string[];
}
export declare class GitSyncAdapter {
    private git;
    private syncPath;
    private workspace;
    private deviceId;
    private db;
    constructor(workspace: Workspace, db: Database);
    initialize(): Promise<void>;
    recordChange(change: Omit<ChangeEvent, 'id' | 'timestamp' | 'deviceId'>): Promise<void>;
    push(): Promise<SyncResult>;
    pull(): Promise<SyncResult>;
    sync(): Promise<SyncResult>;
    exportWorkspaceData(): Promise<void>;
    private combineExportChunks;
    private getChangesSince;
    private applyChange;
    private applyLoreChange;
    private applyRealmChange;
    private applyRelationChange;
    private getOrCreateDeviceId;
    private readJsonFile;
    private writeJsonFile;
}
//# sourceMappingURL=git-sync-adapter.d.ts.map