import { DatabaseAdapter, Attachment, BaseModel, FileItem, QueryOptions } from '../core/types';
interface IndexedDBAdapterOptions {
    dbName?: string;
    fileStoreName?: string;
}
export declare class IndexedDBAdapter implements DatabaseAdapter {
    private readonly LOCAL_CHANGES_STORE;
    private readonly ATTACHMENT_CHANGES_STORE;
    private readonly META_STORE;
    private readonly FILES_STORE;
    private db;
    private dbName;
    private initPromise;
    private stores;
    constructor(options?: IndexedDBAdapterOptions);
    isAvailable(): Promise<boolean>;
    initSync(): Promise<void>;
    private getCurrentDatabaseVersion;
    private setupDbConnection;
    private createRequiredStores;
    private ensureStore;
    readByVersion<T extends BaseModel>(storeName: string, options: QueryOptions): Promise<{
        items: T[];
        hasMore: boolean;
    }>;
    readBulk<T extends BaseModel>(storeName: string, ids: string[]): Promise<T[]>;
    putBulk<T extends BaseModel>(storeName: string, items: T[]): Promise<T[]>;
    deleteBulk(storeName: string, ids: string[]): Promise<void>;
    clearStore(storeName: string): Promise<boolean>;
    readFiles(fileIds: string[]): Promise<Map<string, Blob | ArrayBuffer | null>>;
    saveFiles(files: FileItem[]): Promise<Attachment[]>;
    deleteFiles(fileIds: string[]): Promise<{
        deleted: string[];
        failed: string[];
    }>;
    private ensureFileStore;
    close(): Promise<void>;
    deleteDatabase(): Promise<void>;
}
export {};
