import { IReducerMap, Reducer } from './reducer' import { ISelectorMap } from './selector' import { IModelDefinition } from './model' export interface IInvokeDefinitionOptions { initialState?: any [name: string]: any } export type ReducerMapOrConstructor = IReducerMap|ReducerMapConstructor export type ReducerMapConstructor = (options: IInvokeDefinitionOptions) => IReducerMap export interface ICreateDefinition { reducers: ReducerMapOrConstructor selectors: ISelectorMap defaultState: LocalState transformInitialState?: (initialState: any, params: { namespacing: string[] }) => LocalState } export interface IDefinitionReducerMap { [name: string]: Reducer } export type DefinitionGenerator = (namespacing: string[]) => IModelDefinition export interface ICompiledDefinition { generate: DefinitionGenerator } export interface IReducerDefinition { (options?: IInvokeDefinitionOptions): ICompiledDefinition generate: DefinitionGenerator }