import { Action , ActionCreator , AnyAction } from 'redux' ; /**
 * An action creator which allows inspecting the `type` of its generated
 * actions at runtime.
 */ export interface TypedActionCreator < A extends Action = AnyAction > extends ActionCreator < A > { /**
     * The action type value used for all of the action creator's actions.
     */ type : A extends Action < infer T > ? T : never ; param action matches ( action ) : action is A ; } /**
 * An action creator that generates actions without payload.
 */ export interface BasicActionCreator < T = any > { /**
     * Creates an action with the action creator's associated action type.
     */ ( ) : Action < T > ; /**
     * The action type value used for all of the action creator's actions.
     */ type : T ; param action matches ( action ) : action is Action < T > ; /**
     * Returns a version of the action creator that accepts a payload to
     * attach to the created action.
     */ withPayload < P = any > ( ) : PayloadActionCreator < P , T > ; } deprecated export type SimpleActionCreator = BasicActionCreator ; /**
 * An action with an attached payload value.
 */ export interface PayloadAction < P = any , T = any > extends Action < T > { payload : P ; } /**
 * An `TypedActionCreator` that generates payload actions.
 */ export interface PayloadActionCreator < P , T > { param payload ( payload ) : PayloadAction < P , T > ; /**
     * The action type value used for all of the action creator's actions.
     */ type : T ; param action matches ( action ) : action is PayloadAction < P , T > ; } /**
 * A reducer-like function that assumes the initial state is provided by a
 * parent reducer, i.e. that it is never called with an `undefined` state.
 */ export interface SubReducer < S = any , A extends Action = AnyAction > { ( state , action ) : S ; }