export type PayloadAction = { payload: Payload; type: Type; } & ([Meta] extends [never] ? unknown : { meta: Meta; }) & ([Error] extends [never] ? unknown : { error: Error; }); export type PrepareAction = ((...args: any[]) => { payload: Payload; }) | ((...args: any[]) => { payload: Payload; meta: any; }) | ((...args: any[]) => { payload: Payload; error: any; }) | ((...args: any[]) => { payload: Payload; meta: any; error: any; }); type IsAny = true | false extends (T extends never ? true : false) ? True : False; type IsUnknown = unknown extends T ? IsAny : False; type IfMaybeUndefined = [undefined] extends [Payload] ? True : False; type IfVoid = [void] extends [Payload] ? True : False; type IsEmptyObject = T extends unknown ? keyof T extends never ? IsUnknown>> : False : never; type AtLeastTs35 = [True, False][IsUnknown() => T)>, 0, 1>]; type IsUnknownOrNonInferrable = AtLeastTs35, IsEmptyObject>>; type BaseActionCreator = { type: Type; toString(): Type; match(action: unknown): action is PayloadAction; }; export type ActionCreatorWithPayload = BaseActionCreator & { (payload: Payload): PayloadAction; }; export type ActionCreatorWithOptionalPayload = BaseActionCreator & { (payload?: Payload): PayloadAction; }; export type ActionCreatorWithoutPayload = BaseActionCreator & { (noArgument: void): PayloadAction; }; export type ActionCreatorWithNonInferrablePayload = BaseActionCreator & { (payload: Payload): PayloadAction; }; export type ActionCreatorWithPreparedPayload = BaseActionCreator & { (...args: Args): PayloadAction; }; type PreparedPayloadActionCreator, Type extends string> = ActionCreatorWithPreparedPayload, ReturnType['payload'], Type, ReturnType extends { error: infer Error; } ? Error : never, ReturnType extends { meta: infer Meta; } ? Meta : never>; type _ActionCreatorWithPreparedPayload | void, Type extends string = string> = Prepare extends PrepareAction ? PreparedPayloadActionCreator : void; type IfPrepareActionMethodProvided = Prepare extends (...args: any[]) => any ? True : False; export type PayloadActionCreator | void = void> = IfPrepareActionMethodProvided, IsAny, IsUnknownOrNonInferrable, IfVoid, IfMaybeUndefined, ActionCreatorWithPayload>>>>>; export declare function createAction(type: Type): PayloadActionCreator; export declare function createAction, Type extends string = string>(type: Type, prepareAction: Prepare): PayloadActionCreator['payload'], Type, Prepare>; export {};