import * as Types from '../common/Types';
import { NavigatorSceneConfig } from './NavigatorSceneConfigFactory';
import { NavigatorDelegateSelector as DelegateSelector, NavigatorState as BaseNavigatorState, Navigator as NavigatorBase, NavigatorProps } from '../common/Types';
export interface SpringSystem {
    createSpring(): any;
}
export interface Spring {
    setRestSpeedThreshold?: (restSpeed: number) => void;
    setCurrentValue?: (val: number) => any;
    addListener?: (obj: any) => any;
    getCurrentValue?(): any;
    setOvershootClampingEnabled?(a: boolean): void;
    getSpringConfig?(): any;
    setVelocity?(velocity: any): any;
    setEndValue?(endVal: number): any;
}
export declare type TransitionToCallback = () => void;
export declare type ReplaceAtIndexCallback = () => void;
export interface TransitionToQueueItem {
    destIndex: number;
    transitionFinished: TransitionToCallback;
    velocity: number;
}
export interface NavigatorState extends BaseNavigatorState {
    sceneConfigStack?: NavigatorSceneConfig[];
    routeStack?: Types.NavigatorRoute[];
    presentedIndex?: number;
    transitionFromIndex?: number;
    transitionQueue?: TransitionToQueueItem[];
    transitionFinished?: TransitionToCallback;
}
export declare class NavigatorImpl extends NavigatorBase<NavigatorState> {
    private _renderedSceneMap;
    private _containerRef;
    private _sceneRefs;
    navigatorReference: Navigator;
    springSystem: SpringSystem;
    spring: Spring;
    private _dimensions;
    constructor(initialProps?: NavigatorProps);
    UNSAFE_componentWillMount(): void;
    componentDidMount(): void;
    componentDidUpdate(): void;
    render(): JSX.Element;
    jumpTo(route: Types.NavigatorRoute): void;
    jumpForward(): void;
    jumpBack(): void;
    push(route: Types.NavigatorRoute): void;
    immediatelyResetRouteStack(nextRouteStack: Types.NavigatorRoute[]): void;
    pop(): void;
    replaceAtIndex(route: Types.NavigatorRoute, index: number): void;
    replace(route: Types.NavigatorRoute): void;
    replacePrevious(route: Types.NavigatorRoute): void;
    popToTop(): void;
    popToRoute(route: Types.NavigatorRoute): void;
    replacePreviousAndPop(route: Types.NavigatorRoute): void;
    getCurrentRoutes(): Types.NavigatorRoute[];
    private _onMountContainer;
    private _updateDimensionsCache;
    private _getSceneConfigFromRoute;
    private _renderNavigatorScene;
    private _onMountScene;
    private _disableScene;
    private _enableScene;
    private _transitionTo;
    private _completeTransition;
    private _hideScenes;
    private _handleSpringUpdate;
    private _transitionSceneStyle;
    private _transitionBetween;
    private _getDestIndexWithinBounds;
    private _jumpN;
    private _popN;
    private _cleanScenesPastIndex;
    private _getRouteID;
    private _invariant;
    private _setNativeStyles;
}
export default NavigatorImpl;
export declare const Navigator: typeof NavigatorImpl;
export declare const NavigatorDelegateSelector: DelegateSelector;
export { Types };
