import { Observable } from 'rxjs'; export type Undux = { [K in keyof State]: { key: K; previousValue: State[K]; value: State[K]; }; }; /** * Public Store interface. When you want to reference the Store type, * this is the type to use. */ export interface Store { get(key: K): State[K]; set(key: K): (value: State[K]) => void; setFrom_EXPERIMENTAL(f: (store: Store) => void): void; on(key: K): Observable; onAll(): Observable[keyof State]>; getState(): Readonly; } /** * Immutable snapshot of the current store state. One StoreSnapshot per * StoreDefinition is usually alive at a time. */ export declare class StoreSnapshot implements Store { private state; private storeDefinition; constructor(state: State, storeDefinition: StoreDefinition); get(key: K): State[K]; set(key: K): (value: State[K]) => void; setFrom_EXPERIMENTAL(f: (store: Store) => void): void; on(key: K): Observable; onAll(): Observable[keyof State]>; getState(): Readonly; } export type Options = { isDevMode: boolean; }; /** * We create a single instance of this per . */ export declare class StoreDefinition implements Store { private storeSnapshot; private alls; private emitter; private setters; constructor(state: State, options: Options); on(key: K): Observable; onAll(): Observable[keyof State]>; get(key: K): State[K]; set(key: K): (value: State[K]) => void; setFrom_EXPERIMENTAL(f: (store: Store) => void): void; getCurrentSnapshot(): StoreSnapshot; toStore(): Store; getState(): Readonly; } /** * @deprecated Use `createConnectedStore` instead. */ export declare function createStore(initialState: State, options?: Options): StoreDefinition; export type Effects = (store: StoreDefinition) => StoreDefinition; export type EffectsAs = (stores: { [K in keyof States]: StoreDefinition; }) => { [K in keyof States]: StoreDefinition; }; /** * @deprecated Use `Effects` instead. */ export type Plugin = (store: StoreDefinition) => StoreDefinition; export * from './plugins/withLogger'; export * from './plugins/withReduxDevtools'; export * from './react'; export { CreateConnectedStore } from './react/createConnectedStore'; export { CreateConnectedStoreAs } from './react/createConnectedStoreAs';