import { Dispatch, AnyAction, Unsubscribe } from 'redux';
import State from './state';
import Action from './action';
import { Middleware } from './middleware';
import RootReducer from './root-reducer';
export default class Store<S extends State> {
    private p_store;
    private p_reducer;
    private p_middlewares;
    constructor(reducer: RootReducer, ...middlewares: (Middleware<S> | any)[]);
    private getEnhancer;
    init(): Store<S>;
    addMiddleware(middleware: Middleware<S> | any): void;
    getMiddleware<M extends Middleware<S>>(type: string): M;
    subscribe(listener: () => void): Unsubscribe;
    get state(): S;
    dispatch<A extends Action>(action: A): Dispatch<AnyAction>;
}
