export interface Action < T = any > { type : T ; } /**
 * An Action type which accepts any other properties.
 * This is mainly for the use of the `Reducer` type.
 * This is not part of `Action` itself to prevent types that extend `Action` from
 * having an index signature.
 */ export interface AnyAction extends Action { [ extraProps ] : any ; } template A export type Dispatch < A extends Action = AnyAction > = < T extends A > ( action : T ) => T ; template S template A export interface Store < S = any , A extends Action = AnyAction > { param action returns dispatch : Dispatch < A > ; returns getState ( ) : S ; param listener returns subscribe ( listener ) : Unsubscribe ; param nextReducer replaceReducer ( nextReducer ) : void ; returns { observable } [ Symbol . observable ] ( ) : Observable < S > ; } /**
 * A minimal observable of state changes.
 * For more information, see the observable proposal:
 * https://github.com/tc39/proposal-observable
 */ export type Observable < T > = { param { Object } observer returns { subscription } subscribe ( observer ) : { unsubscribe : Unsubscribe ; } ; [ Symbol . observable ] ( ) : Observable < T > ; } ; /**
 * An Observer is used to receive data from an Observable, and is supplied as
 * an argument to subscribe.
 */ export type Observer < T > = { next ? ( value ) : void ; } ; template S template A export type Reducer < S = any , A extends Action = AnyAction > = ( state : S | undefined , action : A ) => S ; /**
 * Function to remove listener added by `Store.subscribe()`.
 */ export type Unsubscribe = ( ) => void ;