export declare type AnyFunction = (...args: any[]) => any; export declare type StringMap = { [key: string]: T; }; export declare type Action = P extends void ? Readonly<{ type: T; }> : Readonly<{ type: T; payload: P; }>; export declare type ActionsUnion> = ReturnType; export declare type ActionsOfType = ActionUnion extends Action ? ActionUnion : never; export interface IReduxReducer { reducer: R; initialState: S; actions: A; }