import { ParamsDeserializer, ParamsSerializer, PlainObject, RouterEventMap } from "./common/types";
import HistoryBase from "./HistoryBase";
import MetaData from "./MetaData";
import RouterData from "./RouterData";
export interface BackEventDetail {
    routerId: string;
    signal: AbortSignal;
    finished: Promise<void>;
}
export interface NavigateEventDetail {
    routerId: string;
    route: string;
    routeParams?: any;
    replace: boolean;
    signal: AbortSignal;
    finished: Promise<void>;
}
export type NavigateEvent = CustomEvent<NavigateEventDetail>;
export type BackEvent = CustomEvent<BackEventDetail>;
export interface NavigationOptions {
    signal?: AbortSignal;
}
export interface NavigateOptions extends NavigationOptions {
    replace?: boolean;
    hash?: string;
}
export interface GoBackOptions extends NavigationOptions {
}
export default abstract class NavigationBase {
    protected readonly routerData: RouterData;
    private static rootNavigatorRef;
    protected readonly _routerId: string;
    private _metaData;
    protected abstract _history: HistoryBase;
    protected readonly _disableBrowserRouting: boolean;
    protected _currentParams: PlainObject;
    constructor(_routerId: string, _routerData: RouterData, _disableBrowserRouting?: boolean, _defaultRoute?: string | null);
    destructor(): void;
    addEventListener<K extends keyof RouterEventMap>(type: K, listener: (this: HTMLElement, ev: RouterEventMap[K]) => any, options?: boolean | AddEventListenerOptions | undefined): () => void | undefined;
    removeEventListener<K extends keyof RouterEventMap>(type: K, listener: (this: HTMLElement, ev: RouterEventMap[K]) => any, options?: boolean | EventListenerOptions | undefined): void;
    abstract get parent(): NavigationBase | null;
    get disableBrowserRouting(): boolean;
    get routerId(): string;
    canGoBack(): boolean;
    private popStateListener;
    getNavigatorById(routerId: string, target?: NavigationBase): NavigationBase | null | undefined;
    prefetchRoute(path: string): Promise<boolean>;
    abstract get finished(): Promise<void>;
    abstract onPopState(e: Event): void;
    abstract navigate<T extends PlainObject = PlainObject>(route: string, routeParams?: T, options?: NavigateOptions): void;
    abstract goBack(options?: GoBackOptions): void;
    protected get dispatchEvent(): ((event: Event) => Promise<boolean>) | null;
    get paramsDeserializer(): ParamsDeserializer | undefined;
    get paramsSerializer(): ParamsSerializer | undefined;
    get history(): HistoryBase;
    get metaData(): MetaData;
    abstract get location(): Location;
    private get isInDocument();
}
