import { ActionCreator } from './create-action-creator'; import { Action, AnyAction } from './create-action'; declare type Primitive = undefined | null | boolean | string | number | Function; export interface DeepImmutableArray extends ReadonlyArray> { } export interface DeepImmutableMap extends ReadonlyMap, DeepImmutable> { } export declare type DeepImmutableObject = { readonly [K in keyof T]: DeepImmutable; }; export declare type Immutable = T extends Primitive ? T : T extends Array ? ReadonlyArray : T extends Map ? ReadonlyMap : T extends ReadonlyArray ? T : T extends ReadonlyMap ? T : Readonly; export declare type DeepImmutable = T extends Primitive ? T : T extends Array ? DeepImmutableArray : T extends Map ? DeepImmutableMap : T extends ReadonlyArray ? DeepImmutableArray : T extends ReadonlyMap ? DeepImmutableMap : DeepImmutableObject; export declare type Handler = (prevState: TPrevState, action: TAction) => TNextState; export declare type Reducer = (state: TPrevState | undefined, action: TAction) => TNextState; export declare type ActionType | Reducer>> = T extends ActionCreator ? ReturnType : T extends Reducer ? U : never; export declare type ExtractAction = TKey extends string ? TAction extends Action ? TAction & Action : AnyAction extends TAction ? TAction & Action : never : TKey extends ActionCreator ? ReturnType extends TAction ? ReturnType : never : TKey extends AnyAction ? TKey extends TAction ? TKey : never : never; export {};