import { Observable } from 'rxjs'; import { DataCache, IDataCache } from './DataCache'; import { DataStoreToken } from './DataStoreToken'; import { IRepository } from './Repository'; import { Schema } from './Schema'; import { DataCatalog } from './DataCatalog'; import { IApplicationCacheManager } from './Caching'; import { ISystemClock } from './System'; export type DataStoreState = { dataCaches: IDataCache[]; repositories: IRepository[]; }; /** * Provides a managed data store for caching and repositories as well as managing their relationships. */ export declare class DataStore { private readonly dataCatalog; private _schema?; constructor(dataCatalog: DataCatalog); cache(token: DataStoreToken): DataCache; repository(token: DataStoreToken): IRepository; clearDataCaches(): Promise; clearRepositories(): Promise; clearAll(): Promise; get state$(): Observable; reset(token: DataStoreToken): Promise; get schema(): Schema | undefined; apply(schema: Schema, cache: IApplicationCacheManager, clock: ISystemClock): void; }