import { Observable } from 'rxjs'; import { DataCompartmentOptions, IDataCompartment } from './Compartments'; import { IDataCacheObserver } from './IDataCacheObserver'; import { DataStoreToken } from './DataStoreToken'; import { ICompartmentStorage } from './ICompartmentStorage'; export interface IDataCache extends ICompartmentStorage { compartments: IDataCompartment[]; observeWith: (observer: IDataCacheObserver) => void; token: DataStoreToken; } export declare class DataCache implements IDataCache { readonly token: DataStoreToken; readonly compartments: IDataCompartment[]; constructor(token: DataStoreToken, compartments: IDataCompartment[]); get managedTokens(): DataStoreToken[]; observe$(key: keyof T): Observable; get initialized$(): Observable; reloadAll(): Promise; reload(key: keyof T): Promise; resetAll(): Promise; reset(key: keyof T): Promise; findCompartment(key: keyof T | DataStoreToken): IDataCompartment; observeWith(observer: IDataCacheObserver): void; modify(key: keyof T, modifier: (currentValue: Model) => Promise): Promise; withCompartment(key: keyof T, action: (compartment: IDataCompartment) => Return): Return; } /** * @deprecated Use the upcoming `configureDataCache` instead */ export declare function createDataCache>(token: DataStoreToken, policy: Compartments): DataCache; declare type DataCacheRegistry = { [Property in keyof Compartments]: DataCompartmentOptions; }; export declare function configureDataCache>(token: DataStoreToken, registry: DataCacheRegistry): DataCache; export {};