export declare const storageSymbol: unique symbol;
export declare function getNodeStore(name: string, quota?: number): Storage;
export declare function getLocalStorage(name: string, quota?: number): Storage;
export interface IStore<getItemResult, setItemResult> {
    getItem(key: string): getItemResult;
    setItem(key: string, value: string): setItemResult;
}
export declare function proxyStore<getItemResult = string | null, setItemResult = void, Store extends IStore<getItemResult, setItemResult> = IStore<getItemResult, setItemResult>>(store: Store): Store;
export declare class Store implements Storage {
    [storageSymbol]: Storage;
    private constructor();
    get length(): number;
    clear(): void;
    getItem(key: string): string | null;
    getObject<T>(key: string): T | null;
    key(index: number): string | null;
    keys(): string[];
    removeItem(key: string): void;
    setItem(key: string, value: string): void;
    setObject(key: string, value: any): void;
    static create(storage: Storage): Store;
}
/**
 * @param storage {Storage} e.g. localStorage
 * */
export declare function getStoreKeys(storage: Storage): string[];
