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