export declare type DriverInterface = {
    getItem: (key: any) => any;
    setItem: (key: any, value: any) => any;
};
export declare class StrictAsyncStorage<TDefault extends {
    [key: string]: any;
}, TKey extends string & keyof TDefault, TDriver extends DriverInterface = Storage> {
    protected _defaults: TDefault;
    protected _driver: TDriver | Storage;
    protected _map: Map<any, any>;
    protected _initialized: boolean;
    get initialized(): boolean;
    protected _disposed: boolean;
    get disposed(): boolean;
    protected setInitialized(): void;
    constructor(defaults: TDefault, driver?: TDriver | Storage);
    initialize(): Promise<void>;
    getItem<T extends keyof TDefault & string>(key: T): TDefault[T];
    protected setMap(key: any, value: any): void;
    protected batchMap(map: Map<any, any>): void;
    setItem<T extends keyof TDefault & string>(key: T, value: TDefault[T]): Promise<void>;
    resetItem<T extends keyof TDefault & string>(key: T): Promise<TDefault[T]>;
    resetAll(): Promise<void>;
    get length(): number;
    dispose(): void;
    get defaults(): TDefault;
    hasItem(key: any): boolean;
    protected enable(): void;
    protected valid(key: any): void;
}
