export interface IDynaduxConfig { initialState?: TState; reducers?: IDynaduxReducerDic | IDynaduxReducerDic[]; middlewares?: IDynaduxMiddleware[]; onDispatch?: (action: string, payload: any) => void; onChange?: (state: TState, action: string, payload?: any) => void; } export interface IDynaduxReducerDic { [action: string]: TDynaduxReducer; } export type TDynaduxReducer = (params: IDynaduxReducerAPI) => undefined | void | Partial; export interface IDynaduxReducerAPI { action: string; payload: any; dispatch: TDynaduxReducerDispatch; state: TState; blockChange: () => void; } export interface IDynaduxMiddlewareBeforeAPI { action: string; payload: any; dispatch: TDynaduxMiddlewareDispatch; state: TState; } export interface IDynaduxMiddlewareAfterAPI { action: string; payload: any; reducerElapsedMs: number; dispatch: TDynaduxMiddlewareDispatch; state: TState; changed: boolean; initialState: TState; } export type TDynaduxReducerDispatch = (action: string, payload?: TPayload, dispatchConfig?: IDispatchConfig) => void; export type TDynaduxMiddlewareDispatch = (action: string, payload?: TPayload) => void; export interface IDynaduxMiddleware { init?: (store: Dynadux) => void; before?: (reducerAPI: IDynaduxMiddlewareBeforeAPI) => undefined | void | Partial; after?: (reducerAPI: IDynaduxMiddlewareAfterAPI) => undefined | void | Partial; } interface IDispatchConfig { blockChange?: boolean; triggerChange?: boolean; } export declare class Dynadux { private readonly _config; private _state; private readonly _dispatches; private _isDispatching; private _reducers; constructor(_config?: IDynaduxConfig); get state(): TState; setSectionInitialState(section: string, sectionState: any): void; addReducers: (reducers: IDynaduxReducerDic) => void; dispatch: (action: string, payload: TPayload, dispatchConfig?: IDispatchConfig) => void; _onChange: (_state: TState, _action: string, _payload?: any) => void; private _dispatch; } export {}; //# sourceMappingURL=Dynadux.d.ts.map