/// <reference types="react" />
import { ScreenBase, ScreenBaseProps } from '.';
import { AnimationConfigSet, PlainObject, RouteProp, RouterEventMap } from './common/types';
import GhostLayer from './GhostLayer';
import NavigationBase from './NavigationBase';
import RouterBase from './RouterBase';
import { ScrollRestorationData } from './ScrollRestorationData';
export type RoutesData = Map<string | undefined, RouteProp<ScreenBaseProps, PlainObject>>;
export default class RouterData<N extends NavigationBase = NavigationBase> {
    private routerInstance;
    private _parentRouterData;
    private _childRouterData;
    private _dispatchEvent;
    private _addEventListener;
    private _removeEventListener;
    private _currentPath;
    private _routesData;
    private static _scrollRestorationData;
    private _navigation?;
    private _backNavigating;
    private _gestureNavigating;
    private _paramsSerializer?;
    private _paramsDeserializer?;
    private _mountedScreen;
    private _animation;
    private _ghostLayer;
    constructor(routerInstance: RouterBase, navigation?: N);
    destructor(): void;
    prefetchRoute(path: string): Promise<boolean>;
    set parentRouterData(parentRouterData: RouterData<NavigationBase> | null);
    set childRouterData(childRouterData: RouterData<NavigationBase> | null);
    set dispatchEvent(_dispatchEvent: ((event: Event) => Promise<boolean>) | null);
    set addEventListener(_addEventListener: (<K extends keyof RouterEventMap>(type: K, listener: (this: HTMLElement, ev: RouterEventMap[K]) => any, options?: boolean | AddEventListenerOptions | undefined) => void) | null);
    set removeEventListener(_removeEventListener: (<K extends keyof RouterEventMap>(type: K, listener: (this: HTMLElement, ev: RouterEventMap[K]) => any, options?: boolean | EventListenerOptions | undefined) => void) | null);
    set currentPath(_currentPath: string);
    set routesData(_routesData: RoutesData);
    set navigation(_navigation: N);
    set animation(_animation: AnimationConfigSet);
    set ghostLayer(_ghostLayer: GhostLayer | null);
    set backNavigating(_backNavigating: boolean);
    set gestureNavigating(_gestureNavigating: boolean);
    set paramsSerializer(_paramsSerializer: ((params: PlainObject) => string) | undefined);
    set paramsDeserializer(_paramsDeserializer: ((queryString: string) => PlainObject) | undefined);
    set mountedScreen(_mountedScreen: ScreenBase | null);
    get mountedScreen(): ScreenBase | null;
    get routerId(): string;
    get routes(): import(".").ScreenChild<ScreenBaseProps, typeof ScreenBase> | import(".").ScreenChild<ScreenBaseProps, typeof ScreenBase>[];
    get parentRouterData(): RouterData<NavigationBase> | null;
    get childRouterData(): RouterData<NavigationBase> | null;
    get dispatchEvent(): ((event: Event) => Promise<boolean>) | null;
    get addEventListener(): (<K extends keyof RouterEventMap>(type: K, listener: (this: HTMLElement, ev: RouterEventMap[K]) => any, options?: boolean | AddEventListenerOptions | undefined) => void) | null;
    get removeEventListener(): (<K extends keyof RouterEventMap>(type: K, listener: (this: HTMLElement, ev: RouterEventMap[K]) => any, options?: boolean | EventListenerOptions | undefined) => void) | null;
    get currentPath(): string;
    get routesData(): RoutesData;
    get scrollRestorationData(): ScrollRestorationData;
    get navigation(): N;
    get animation(): AnimationConfigSet;
    get ghostLayer(): GhostLayer | null;
    get backNavigating(): boolean;
    get gestureNavigating(): boolean;
    get paramsSerializer(): ((params: PlainObject) => string) | undefined;
    get paramsDeserializer(): ((queryString: string) => PlainObject) | undefined;
}
export declare const RouterDataContext: import("react").Context<RouterData<NavigationBase> | null>;
