import { Dispatch , Action } from '../..' ; interface Component < P > { props : P ; } interface HOC < T > { < P > ( wrapped ) : Component < P > ; } declare function connect < T , D extends Dispatch = Dispatch > ( mapDispatchToProps ) ; /**
 * Inject default dispatch.
 */ function simple ( ) { const hoc = connect ( dispatch => { return { onClick ( ) { dispatch ( { type : 'INCREMENT' } ) ; dispatch ( Promise . resolve ( { type : 'INCREMENT' } ) ) ; dispatch ( 'not-an-action' ) ; } } ; } ) ; } /**
 * Inject dispatch that restricts allowed action types.
 */ function discriminated ( ) { interface IncrementAction { type : 'INCREMENT' ; count ? : number ; } interface DecrementAction { type : 'DECREMENT' ; count ? : number ; } type MyAction = IncrementAction | DecrementAction ; const hoc = connect ( ( dispatch ) => { return { onClick ( ) { dispatch ( { type : 'INCREMENT' } ) ; dispatch ( { type : 'DECREMENT' , count : 10 } ) ; dispatch ( { type : 'DECREMENT' , count : '' } ) ; dispatch ( { type : 'SOME_OTHER_TYPE' } ) ; dispatch ( 'not-an-action' ) ; } } ; } ) ; } /**
 * Inject extended dispatch.
 */ function promise ( ) { type PromiseDispatch = < T extends Action > ( promise : Promise < T > ) => Promise < T > ; type MyDispatch = Dispatch & PromiseDispatch ; const hoc = connect ( ( dispatch ) => { return { onClick ( ) { dispatch ( { type : 'INCREMENT' } ) ; dispatch ( Promise . resolve ( { type : 'INCREMENT' } ) ) ; dispatch ( 'not-an-action' ) ; } } ; } ) ; }