import { Observable } from 'rxjs'; export interface SharedCacheOptions { /** * The expiration time by milliseconds. */ expiration?: number; /** * Flag to force the cache to refresh. */ forceRefresh?: boolean; } export interface SharedCacheContainer { /** * The last timestamp for the instance collected. */ timestamp: number; /** * The instance of the data class. */ instance: TClass; } /** * Abstract class of SharedCache by using session storage. * * TClass: the caching data class type. * TData: the caching data interface type. * TParams: the data query parameters type. */ export declare abstract class SharedCache { private uniqueId; private uniqueVersion; private instanceId; private serialize; private deserialize; private getDataQuery?; private options?; private cache; /** * Initializes a new instance of the SharedCache class. * * @param uniqueId the unique identity of the collection of data. * @param uniqueVersion the unique version of data. (Should increment any data format or query change) * @param instanceId the instance id generator. * @param serialize the data serialization. * @param deserialize the data deserialization. * @param getDataQuery the query observable. * @param options the shared cache options. */ constructor(uniqueId: string, uniqueVersion: number, instanceId: (params: TParams) => string, serialize: (instance: TClass) => string, deserialize: (serialized: string) => TClass, getDataQuery?: (params: TParams) => Observable, options?: SharedCacheOptions); /** * Gets the id of the collection of data. */ get id(): string; /** * Gets the version of the cache for format and query. */ get version(): number; /** * Check if the Cache has unexpired data available for the instance id. * @param params the parameter to check for the data. */ isAvailable(params: TParams): boolean; /** * Query to find the data. * @param params the parameter to query the data. */ query(params: TParams): Observable>; /** * Refresh the data. * @param params the parameter to query the data. */ refresh(params: TParams): Observable>; /** * Save an instance data to session storage. * * @param params the parameter to query the data. * @param data the data object to store. */ save(params: TParams, data: TClass): void; /** * Clear the cache. * * @param params the parameter to query the data (optional to delete an instance) */ clear(params?: TParams): void; /** * Force restore whole data and return the data for the params specified. * * @param params the parameter to query the data. * @return SharedCacheContainer the data for the params specified. */ forceRestore(params: TParams): SharedCacheContainer; private expired; private update; private sessionRestore; private sessionSave; private get cacheKey(); }