export declare type Action = TPayload extends undefined ? (TMeta extends undefined ? { type: TType; } : { type: TType; meta: TMeta; }) : (TPayload extends Error ? (TMeta extends undefined ? { type: TType; payload: TPayload; error: true; } : { type: TType; payload: TPayload; meta: TMeta; error: true; }) : (TMeta extends undefined ? { type: TType; payload: TPayload; } : { type: TType; payload: TPayload; meta: TMeta; })); export declare type AnyAction = Action; /** * Minimal (type-only) action factory * @example * const clearTodos = action('[Todo] truncate'); */ export declare function createAction(type: TType): Action; /** * Action with error factory * @example * const fetchTodosRejected = (payload: Error) => action('[Todo] fetch rejected', payload); */ export declare function createAction(type: TType, payload: TPayload): Action; /** * Action with non-error payload factory * @example * const addTodo = ({ name, completed = false }: Todo) => action('[Todo] add', { name, completed }); */ export declare function createAction(type: TType, payload: TPayload): Action; /** * Action with error and meta factory * @example * const fetchTodosRejected = (payload: Error, meta?: Meta) => action('[Todo] fetch rejected', payload, meta); */ export declare function createAction(type: TType, payload: TPayload, meta: TMeta): Action; /** * Action with payload and meta factory * @example * const addTodo = ({ name, completed = false }: Todo, meta?: Meta) => action('[Todo] add', { name, completed }, meta); */ export declare function createAction(type: TType, payload: TPayload, meta: TMeta): Action;