import { Action, AnyAction } from './create-action'; export declare type ExactActionCreator(...args: any[]) => Action> = TCallable & { type: TType extends AnyAction ? TType['type'] : TType; toString(): TType extends AnyAction ? TType['type'] : TType; }; export declare type ActionCreator = { (...args: any[]): T extends string ? Action : T; type: T extends AnyAction ? T['type'] : T; toString(): T extends AnyAction ? T['type'] : T; }; export declare type Executor(...args: any[]) => Action> = (resolve: (payload?: Payload, meta?: Meta) => Action) => TCallable; /** * Flux standard action creator factory * @example * createActionCreator('[Todo] truncate'); * @example * createActionCreator( * '[Todo] fetch rejected', * resolve => (error: Error) => resolve(error) * ); * @example * createActionCreator( * '[Todo] fetch rejected', * resolve => (error: Error, meta?: { status: number }) => resolve(error, meta) * ) * @example * createActionCreator( * '[Todo] add', * resolve => (name: string, completed = false) => resolve({ name, completed }) * ) * @example * createActionCreator( * '[Todo] add', * resolve => (name: string, completed = false) => resolve({ name, completed }, 'Meta data of all todos') * ) * */ export declare function createActionCreator(type: TType): ExactActionCreator Action>; export declare function createActionCreator(...args: any[]) => Action>(type: TType, executor: Executor): ExactActionCreator;