UNPKG

mobx-keystone-mindreframer

Version:

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

48 lines (47 loc) 1.52 kB
import { ActionCall } from "../action"; import { OnSnapshotDisposer, OnSnapshotListener } from "../snapshot/onSnapshot"; import type { 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 interface ReduxRunner<T> { (next: ReduxStore<T>["dispatch"]): (action: ReduxAction) => ReduxAction; } /** * A redux middleware for mobx-keystone. */ export interface 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>;