import { FunctionWithParametersType, ParametersType } from "./types"; export declare type Creator = (...args: any[]) => object; export declare type Typed = A extends { type: T; } ? A : A & { type: T; }; export declare type NotTyped = T extends { type: any; } ? "Props and creator return values should not include a type." : {}; export declare type ActionCreator = Typed; export declare type ActionType = A extends ActionCreator ? Typed, T> : never; export declare function action(type: T): ActionCreator Typed<{}, T>>; export declare function action(type: T, config: { _as: "empty"; }): ActionCreator Typed<{}, T>>; export declare function action(type: T, config: { _as: "fsa"; _p: P; _m: M; }): ActionCreator Typed<{ error: false; meta?: M; payload: P; }, T> | Typed<{ error: true; meta?: M; payload: P; }, T>>; export declare function action(type: T, config: { _as: "payload"; _p: P; }): ActionCreator Typed<{ payload: P; }, T>>; export declare function action(type: T, config: { _as: "props"; _p: P; }): ActionCreator) => Typed>; export declare function action(type: T, creator: C & NotTyped>): Typed, Typed, T>>, T>; export declare function empty(): { _as: "empty"; }; export declare function fsa(): { _as: "fsa"; _m: M; _p: P; }; export declare function payload

(): { _as: "payload"; _p: P; }; export declare function props

(): { _as: "props"; _p: P; }; export declare function type(type: T, rest: R): Typed; declare type ActionCreatorMeta = C extends ActionCreator ? { action: ReturnType; type: ActionType["type"]; } : never; declare type ActionCreatorUnionMeta = C extends ActionCreator[] ? { [K in keyof C]: ActionCreatorMeta; } & { actions: ActionType; types: ActionType["type"]; } : never; export declare function union(...creators: C): ActionCreatorUnionMeta; export {};