// flow-typed signature: ba132c96664f1a05288f3eb2272a3c35 // flow-typed version: c4bbd91cfc/redux_v3.x.x/flow_>=v0.33.x declare module 'redux' { /* S = State A = Action */ declare type Dispatch }> = (action: A) => A; declare type MiddlewareAPI = { dispatch: Dispatch; getState(): S; }; declare type Store = { // rewrite MiddlewareAPI members in order to get nicer error messages (intersections produce long messages) dispatch: Dispatch; getState(): S; subscribe(listener: () => void): () => void; replaceReducer(nextReducer: Reducer): void }; declare type Reducer = (state: S, action: A) => S; declare type Middleware = (api: MiddlewareAPI) => (next: Dispatch) => Dispatch; declare type StoreCreator = { (reducer: Reducer, enhancer?: StoreEnhancer): Store; (reducer: Reducer, preloadedState: S, enhancer?: StoreEnhancer): Store; }; declare type StoreEnhancer = (next: StoreCreator) => StoreCreator; declare function createStore(reducer: Reducer, enhancer?: StoreEnhancer): Store; declare function createStore(reducer: Reducer, preloadedState: S, enhancer?: StoreEnhancer): Store; declare function applyMiddleware(...middlewares: Array>): StoreEnhancer; declare type ActionCreator = (...args: Array) => A; declare type ActionCreators = { [key: K]: ActionCreator }; declare function bindActionCreators>(actionCreator: C, dispatch: Dispatch): C; declare function bindActionCreators>(actionCreators: C, dispatch: Dispatch): C; declare function combineReducers(reducers: O): Reducer<$ObjMap(r: Reducer) => S>, A>; declare function compose(...fns: Array>): Function; }