import { IReducerMap, Reducer } from './reducer' import { IActionCreatorMaps, IActionCreatorMap, ActionCreator, IMappedActionCreatorMaps, } from './actionCreator' import { ISelectorMaps, ISelectorMap, IMappedSelectorMaps, } from './selector' export interface IMappedIntermediateModel { actions: IMappedActionCreatorMaps initialState: {} reducers: IReducerMap<{}> selectors: IMappedSelectorMaps } export interface IIntermediateModel { actions: IActionCreatorMaps initialState: {} reducers: IReducerMap<{}> selectors: ISelectorMaps } export interface IModelDefinition { kind: 'definition' actions: IActionCreatorMap initialState: {} reducers: IReducerMap<{}> selectors: ISelectorMap } export interface IModelFunction { kind: 'function' action: ActionCreator reducers: IReducerMap<{}> } export interface IModel { namespace: string actions: IActionCreatorMaps reducer: Reducer<{}> selectors: ISelectorMaps } export interface IModelMap { [key: string]: IModel } export interface IMappedModel { namespace: string actions: IMappedActionCreatorMaps reducer: Reducer<{}> selectors: IMappedSelectorMaps } export type IMappedModelMap = { [Key in keyof Schema]: IMappedModel }