import { StorageService } from './storage.service';
import { Observable } from 'rxjs';
/**
 * Generic asynchronous storage service. Concrete asynchronous storage services must extend this class
 */
export declare abstract class AsyncStorageService extends StorageService {
    /**
     * reflects the readiness of the storage
     * @returns one time emission Observable<any>
     */
    abstract ready(): Observable<any>;
    /**
     * retrieve an object from async storage
     * @param key the associated key
     * @returns one time emission Observable of value
     */
    abstract get(key: string): Observable<any>;
    abstract get<T>(key: string): Observable<T>;
    /**
     * sets an object in async storage
     * @param key the associated key
     * @param value the value to set
     * @returns one time emission Observable
     */
    abstract set(key: string, value: any): Observable<any>;
    abstract set<T>(key: string, value: T): Observable<any>;
    /**
     * removes an object from async storage
     * @param key the associated key
     * @returns one time emission Observable
     */
    abstract remove(key: string): Observable<any>;
    /**
     * asynchronous helper for set function
     * @param key the associated key
     * @param value the value to set
     */
    setAsync(key: string, value: any): void;
    /**
     * asynchronous helper for remove function
     * @param key the associated key
     */
    removeAsync(key: string): void;
}
//# sourceMappingURL=async-storage.service.d.ts.map