import { Observable } from 'rxjs'; /** * Initialize hte store with this. */ export interface ValueReset { value: any; reset?: any; } /** * OStore Key Value Reset */ export interface ObsValueReset { value: any; reset?: any; obs: Observable; } export interface KeyObsValueReset { [key: string]: ObsValueReset; } export interface OStoreStart { [key: string]: ValueReset; } export declare class OStore { /** * Start keys and values * passed in via constructor. */ S: E; constructor(start: OStoreStart); /** * Reset the state of the OStore to the * values or reset provided in the constructor * {@link OStoreStart} instance. */ reset(): void; /** * Map of Key Value pair entries * containing values store in this store. */ entries: Map; /** * Map of replay subject id to `ReplaySubject` instance. */ private subjects; /** * Set create a key value pair entry and creates a * corresponding replay subject instance that will * be used to broadcast updates. * * @param key The key identifying the value * @param value The value */ private post; /** * Update a value and notify subscribers. * * @param key * @param value */ put(key: any, value: any): void; /** * Deletes both the value entry and the corresponding {@link ReplaySubject}. * Will unsubscribe the {@link ReplaySubject} prior to deleting it, * severing communication with corresponding {@link Observable}s. * * @param key */ delete(key: any): void; /** * Clear all entries. * * Note that * this will call delete for on all * keys defined which also also * unsubscribes and deletes * all the sbujects. */ clear(): void; /** * Observe changes to the values. * * @param key * @return An {@link Observable} of the value */ observe(key: any): Observable | undefined; /** * Check whether a value exists. * * @param key * @return True if the entry exists ( Is not null or undefined ) and false otherwise. */ exists(key: any): boolean; /** * Retrieve a snapshot of the * value. * * @param key * @return A snapshot of the value corresponding to the key. */ snapshot(key: any): any; /** * Indicates whether the store is empty. * @return true if the store is empty, false otherwise. */ isEmpty(): boolean; /** * Returns the number of key value pairs contained. * * @return the number of entries in the store. */ count(): number; }