///
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { ProvideContext, ProvideContextTypes } from './ContextWrapper';
import { TransitionFunction, TransitionFunctionFunction } from './transition';
import * as t from 'tcomb';
import { BrowserState, PathConfigs } from './browser';
import { StateT } from './StateT';
import { History } from 'history';
export declare type StateContextWrapper = React.ComponentType<{}>;
export declare type StateSubject = BehaviorSubject;
export declare type RunParams = {
initialState: S;
transitionReducer?: TransitionFunctionFunction;
subscribe?: (state: S) => void;
init?: (state: StateSubject, transition: TransitionFunction) => void;
shouldSerializeKey?: (key: keyof S) => boolean;
shouldBrowserPatchBePushedOrReplaced?: (oldState: S, newState: S) => boolean;
provideContext?: {
values: ProvideContext;
types?: ProvideContextTypes;
};
history?: History;
paths?: PathConfigs;
};
export declare type RunReturn = Promise;
export declare type Run = (p: RunParams) => RunReturn;
declare const _default: (stateType: t.Interface) => ({initialState, transitionReducer: _transitionReducer, subscribe, init, shouldSerializeKey, shouldBrowserPatchBePushedOrReplaced, provideContext, history, paths}: RunParams) => Promise>;
export default _default;