import { DatabaseAdapter, Attachment, BaseModel } from '../core/types';
interface IndexedDBAdapterOptions {
    dbName?: string;
    fileStoreName?: string;
}
export declare class IndexedDBAdapter implements DatabaseAdapter {
    private db;
    private dbName;
    private initPromise;
    private stores;
    private fileStoreName;
    constructor(options?: IndexedDBAdapterOptions);
    isAvailable(): Promise<boolean>;
    initSync(): Promise<void>;
    private ensureStore;
    read<T extends BaseModel>(storeName: string, options?: {
        limit?: number;
        offset?: number;
        since?: number;
    }): 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<void>;
    readFile(fileUrl: string): Promise<{
        content: Blob | ArrayBuffer;
        metadata: Attachment;
    }>;
    readFileMeta(fileUrl: string): Promise<{
        metadata: Attachment;
    }>;
    saveFile(fileData: {
        content: Blob | ArrayBuffer | string;
        metadata: Omit<Attachment, 'id' | 'createdAt' | 'updatedAt'>;
    }): Promise<Attachment>;
    deleteFile(fileId: string): Promise<void>;
    private ensureFileStore;
    private extractFileId;
    close(): Promise<void>;
    deleteDatabase(): Promise<void>;
}
export {};
