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
TypeScript
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>;