/** * PUBLIC API */ /** * @desc Interface for internal types augmentation * @example ``` * declare module 'typesafe-actions' { * export type RootAction = ActionType; * export interface Types { * RootAction: RootAction; * } * } ``` */ export interface Types { } /** * @desc Type representing Type Constant */ export declare type TypeConstant = string; /** * @desc Type representing Generic Action */ export declare type Action = { type: TType; }; /** * @desc Type representing Generic ActionCreator */ export declare type ActionCreator = (...args: any[]) => Action; /** * @desc Type representing Generic Reducer */ export declare type Reducer = (state: TState | undefined, action: TAction) => TState; /** * @desc Action without Payload */ export declare type EmptyAction = { type: TType; }; /** * @desc Action with only Payload */ export declare type PayloadAction = { type: TType; payload: TPayload; }; /** * @desc Action with both Payload and Meta */ export declare type PayloadMetaAction = { type: TType; payload: TPayload; meta: TMeta; }; /** * @desc Action Creator producing EmptyAction */ export declare type EmptyActionCreator = () => EmptyAction; /** * @desc Action Creator producing PayloadAction */ export declare type PayloadActionCreator = (payload: TPayload) => PayloadAction; /** * @desc Action Creator producing PayloadMetaAction */ export declare type PayloadMetaActionCreator = (payload: TPayload, meta: TMeta) => PayloadMetaAction; /** * @desc Type representing type getter on Action Creator instance */ export interface ActionCreatorTypeMetadata { getType?: () => TType; } /** * @desc Infers Action union-type from action-creator map object */ export declare type ActionType = TActionCreatorOrMap extends ActionCreator ? ReturnType : TActionCreatorOrMap extends Record ? { [K in keyof TActionCreatorOrMap]: ActionType; }[keyof TActionCreatorOrMap] : TActionCreatorOrMap extends infer R ? never : never; /** * @desc Infers State object from reducer map object */ export declare type StateType = TReducerOrMap extends Reducer ? ReturnType : TReducerOrMap extends Record ? { [K in keyof TReducerOrMap]: StateType; } : never; /** * @desc todo */ export declare type ActionBuilder = [TMeta] extends [undefined] ? [TPayload] extends [undefined] ? unknown extends TPayload ? PayloadAction : unknown extends TMeta ? PayloadMetaAction : EmptyAction : PayloadAction : PayloadMetaAction; /** * @desc todo */ export declare type ActionCreatorBuilder = [TMeta] extends [undefined] ? [TPayload] extends [undefined] ? unknown extends TPayload ? PayloadActionCreator : unknown extends TMeta ? PayloadMetaActionCreator : EmptyActionCreator : PayloadActionCreator : PayloadMetaActionCreator; /** * @desc todo */ export declare type AsyncActionCreatorBuilder = [TCancel] extends [never] ? { request: [TArgs1] extends [never] ? ActionCreatorBuilder : (...args: TArgs1) => ActionBuilder; success: [TArgs2] extends [never] ? ActionCreatorBuilder : (...args: TArgs2) => ActionBuilder; failure: [TArgs3] extends [never] ? ActionCreatorBuilder : (...args: TArgs3) => ActionBuilder; } : { request: [TArgs1] extends [never] ? ActionCreatorBuilder : (...args: TArgs1) => ActionBuilder; success: [TArgs2] extends [never] ? ActionCreatorBuilder : (...args: TArgs2) => ActionBuilder; failure: [TArgs3] extends [never] ? ActionCreatorBuilder : (...args: TArgs3) => ActionBuilder; cancel: [TArgs4] extends [never] ? ActionCreatorBuilder : (...args: TArgs4) => ActionBuilder; }; /** * INTERNAL API */ /** @private */ export declare type ResolveType = T extends (...args: any[]) => {} ? T : { [K in keyof T]: T[K]; }; /** @private */ export declare type ExcludeNever = Pick;