/** * Simplest state container interface. */ export interface StateContainer { /** Get value. */ get(): T; /** Set value. */ set(value: T): void; } /** * Simplest subscribable interface. */ export interface Subscribable { /** * Subscribe. * @param listener Function. * @returns Unsubscribe function. */ subscribe(listener: VoidFunction): VoidFunction; } /** * "Store" - subscribable state container. */ export interface Store extends Subscribable, StateContainer { }