import { QueryOptions } from './interfaces';
import { Logger } from '../utils/logger';
/**
 * 存储抽象类
 * 提供通用的数据存储接口，可由不同的具体存储实现（文件系统、浏览器IndexedDB等）
 */
export declare abstract class StorageProvider<T extends {
    id: string;
} = any> {
    protected logger: Logger;
    protected basePath: string;
    /**
     * 创建存储实例
     * @param basePath 存储基础路径
     * @param name 存储名称（用于日志）
     */
    constructor(basePath: string, name: string);
    /**
     * 获取存储基础路径
     * @returns 存储基础路径
     */
    getBasePath(): string;
    /**
     * 保存数据
     * 支持两种调用方式:
     * 1. save(data) - 直接保存带有id的数据对象
     * 2. save(id, data) - 指定id和数据对象分别保存
     *
     * @param idOrData 数据对象或者数据ID
     * @param data 当第一个参数为ID时的数据对象
     */
    save(idOrData: string | T, data?: any): Promise<void>;
    /**
     * 内部方法：实际保存数据
     * @param data 要保存的数据
     */
    protected abstract saveData(data: T): Promise<void>;
    /**
     * 根据ID获取数据
     * @param id 数据ID
     * @returns 获取的数据，不存在则返回null
     */
    abstract get(id: string): Promise<T | null>;
    /**
     * 根据ID删除数据
     * @param id 数据ID
     */
    abstract delete(id: string): Promise<void>;
    /**
     * 列出所有存储的数据
     * @returns 所有数据的数组
     */
    abstract list(): Promise<T[]>;
    /**
     * 根据条件查询数据
     * @param options 查询选项
     * @returns 符合条件的数据数组
     */
    abstract query(options: QueryOptions<T>): Promise<T[]>;
    /**
     * 清空所有数据
     */
    abstract clear(): Promise<void>;
}
//# sourceMappingURL=StorageProvider.d.ts.map