import { IContext } from 'overmind'; import { createOvermind } from "overmind"; import { namespaced } from 'overmind/config' import { merge } from 'lodash'; import { config as defaultConfig, Configuration } from "@newstackdev/iosdk/dist/config"; import { standardModules } from '@newstackdev/iosdk/dist/overmind/standardModules'; import { app } from "./app"; import { createStateHook, createActionsHook, createEffectsHook, createReactionHook } from 'overmind-react'; import { config as appConfig } from "../config"; const finalConfig = { state: merge({}, defaultConfig, appConfig) }; const config = namespaced({ ...standardModules, config: finalConfig, ...app }); export type State = typeof config["state"]; export type Context = IContext; export type Action = ( context: Context, value: T ) => R | Promise; export const overmind = createOvermind(config, { delimiter: "!" }); export const useAppState = createStateHook(); export const useActions = createActionsHook(); export const useEffects = createEffectsHook(); export const useReaction = createReactionHook();