import { DVCStorage } from './types';
export declare abstract class StorageStrategy implements DVCStorage {
    abstract store: unknown;
    abstract init(): Promise<unknown>;
    abstract save(storeKey: string, data: unknown): Promise<void>;
    abstract load<T>(storeKey: string): Promise<T | undefined>;
    abstract remove(storeKey: string): Promise<void>;
}
export declare class LocalStorageStrategy extends StorageStrategy {
    store: Storage;
    private isTesting;
    constructor(isTesting?: boolean);
    init(): Promise<void>;
    save(storeKey: string, data: unknown): Promise<void>;
    load<T>(storeKey: string): Promise<T | undefined>;
    remove(storeKey: string): Promise<void>;
}
export declare class IndexedDBStrategy extends StorageStrategy {
    store: IDBDatabase;
    private isReady;
    private connectionPromise;
    private static storeName;
    private static DBName;
    constructor();
    init(): Promise<IDBDatabase>;
    save(storeKey: string, data: unknown): Promise<void>;
    load<T>(storeKey: string): Promise<T | undefined>;
    remove(storeKey: string): Promise<void>;
}
export declare function getStorageStrategy(): StorageStrategy;
