import { Reducer } from 'redux'; export declare type primitive = string | number | boolean | undefined | null; export declare type DeepReadonly = T extends primitive ? T : T extends Array ? DeepReadonlyArray : DeepReadonlyObject; export interface DeepReadonlyArray extends ReadonlyArray> { } export declare type DeepReadonlyObject = { readonly [P in keyof T]: DeepReadonly; }; export declare type Action = { type: T; payload: P; }; export declare type IntersectionOf = ({ [K in keyof T]: (x: T[K]) => void; }) extends Record void> ? V : never; export declare const action: (type: T, payload: P) => Action; export declare type ActionHandler = AC extends (...args: any[]) => Action ? { [k in T]: (s: DeepReadonly, p: P) => S; } : never; export declare type Handler = IntersectionOf<{ [K in keyof ACS]: ActionHandler; }>; export declare type PartialActionHandler = AC extends (...args: any[]) => Action ? { [k in T]: (s: DeepReadonly, p: P) => Partial; } : never; export declare type PartialHandler = IntersectionOf<{ [K in keyof ACS]: PartialActionHandler; }>; export declare const createReducer: (initialState: S, handler: IntersectionOf<{ [K in keyof ACs]: ActionHandler; }>) => Reducer; export declare const createMergeReducer: (initialState: S, handler: IntersectionOf<{ [K in keyof ACs]: PartialActionHandler; }>) => Reducer; export declare const ResetState = "__create-reducer-extra-reset-state__"; export declare const resetState: () => Action<"__create-reducer-extra-reset-state__", {}>; export declare const createResetReducer: (initialState: S, handler: IntersectionOf<{ [K in keyof ACs]: ActionHandler; }>) => Reducer; export declare const createResetMergeReducer: (initialState: S, handler: IntersectionOf<{ [K in keyof ACs]: PartialActionHandler; }>) => Reducer;