import { Serber as SerberClass } from 'berish-serber/dist/lib/serber';
declare const SYMBOL_STORAGE_NAME: unique symbol;
export interface IStorageAdapter {
    getItem: (key: string) => Promise<any>;
    setItem: (key: string, value: any) => Promise<void>;
    removeItem: (key: string) => Promise<void>;
    onChange?: (cb: (key: string, value: any) => void) => (() => void);
}
export declare class Storage {
    protected storageAdapter: IStorageAdapter;
    protected serber: SerberClass;
    private [SYMBOL_STORAGE_NAME];
    private onChangeListeners;
    constructor(storageAdapter: IStorageAdapter);
    setSerber(serber: SerberClass): this;
    setStorageName(value: string): this;
    getStorageName(): string;
    save(state: any): Promise<void>;
    load(): Promise<any>;
    clear(): Promise<void>;
    changes(cb: (state: any) => void): () => void;
}
export {};
