import { SyncEvent, SyncStatus, ClientConfig } from './types';
interface StoredItem {
    id: string;
    [key: string]: any;
}
export declare class ZenoDB {
    private config;
    private storageAdapter;
    private syncAdapter;
    private syncSubscribers;
    private syncStatus;
    private softDeleteConfig;
    private isInitialized;
    constructor(config: ClientConfig);
    private updateSyncStatus;
    private notifySyncSubscribers;
    subscribe(callback: (event: SyncEvent) => void): () => void;
    getSyncStatus(): SyncStatus;
    init(): Promise<void>;
    private syncOfflineChanges;
    get(key: string, includeDeleted?: boolean): Promise<any>;
    set(key: string, value: any): Promise<void>;
    delete(key: string, permanent?: boolean): Promise<void>;
    keys(): Promise<string[]>;
    close(): Promise<void>;
    getAll(includeDeleted?: boolean): Promise<StoredItem[]>;
    restore(key: string): Promise<void>;
    purgeDeleted(): Promise<void>;
    /**
     * Batch get multiple items by keys. Returns an array of values in the same order as keys.
     */
    getMany(keys: string[], includeDeleted?: boolean): Promise<any[]>;
    /**
     * Batch set multiple items. Each item must have an 'id' property.
     */
    setMany(items: {
        id: string;
        [key: string]: any;
    }[]): Promise<void>;
}
export {};
