UNPKG

mobx-keystone

Version:

A MobX powered state management solution based on data trees with first class support for TypeScript, snapshots, patches and much more

44 lines (43 loc) 1.45 kB
import { ActionCall } from '../action'; import { OnSnapshotDisposer, OnSnapshotListener } from '../snapshot/onSnapshot'; import { SnapshotOutOf } from '../snapshot/SnapshotOf'; export declare const reduxActionType = "applyAction"; /** * A redux action for mobx-keystone. */ export interface ReduxAction { readonly type: typeof reduxActionType; readonly payload: ActionCall; } /** * Transforms an action call into a redux action. * * @param actionCall Action call. * @returns A redux action. */ export declare function actionCallToReduxAction(actionCall: ActionCall): ReduxAction; /** * A redux store for mobx-keystone. */ export interface ReduxStore<T> { getState(): SnapshotOutOf<T>; dispatch(action: ReduxAction): ReduxAction; subscribe(listener: OnSnapshotListener<T>): OnSnapshotDisposer; } /** * A redux runner for mobx-keystone. */ export type ReduxRunner<T> = (next: ReduxStore<T>["dispatch"]) => (action: ReduxAction) => ReduxAction; /** * A redux middleware for mobx-keystone. */ export type ReduxMiddleware<T> = (store: ReduxStore<T>) => ReduxRunner<T>; /** * Generates a redux compatible store out of a mobx-keystone object. * * @template T Object type. * @param target Root object. * @param middlewares Optional list of redux middlewares. * @returns A redux compatible store. */ export declare function asReduxStore<T extends object>(target: T, ...middlewares: ReduxMiddleware<T>[]): ReduxStore<T>;