import { DeltaModel, DatabaseAdapter, DataChange, Attachment, AttachmentChange } from './types';
import { EncryptionConfig } from './SyncConfig';
export declare class LocalCoordinator {
    localAdapter: DatabaseAdapter;
    private encryptionConfig?;
    private readonly LOCAL_CHANGES_STORE;
    private readonly ATTACHMENT_CHANGES_STORE;
    private readonly META_STORE;
    private readonly VERSION_KEY;
    constructor(localAdapter: DatabaseAdapter, encryptionConfig?: EncryptionConfig);
    putBulk<T extends DeltaModel>(storeName: string, items: T[], skipTracking?: boolean): Promise<T[]>;
    deleteBulk(storeName: string, ids: string[], skipTracking?: boolean): Promise<void>;
    attachFile(modelId: string, storeName: string, file: File | Blob | ArrayBuffer, filename: string, mimeType: string, metadata?: any): Promise<Attachment>;
    detachFile(storeName: string, modelId: string, attachmentId: string): Promise<DeltaModel>;
    private trackAttachmentChange;
    private trackDataChange;
    applyDataChange<T extends DeltaModel>(changes: DataChange<T>[]): Promise<void>;
    applyAttachmentChanges(changes: AttachmentChange[]): Promise<void>;
    getPendingChanges(since: number, limit?: number): Promise<DataChange[]>;
    getPendingAttachmentChanges(since: number, limit?: number): Promise<AttachmentChange[]>;
    updateCurrentVersion(timestamp: number): Promise<void>;
    getCurrentVersion(): Promise<number>;
}
