import { ITokenBasedRouteContext, TokenBasedRouteStateData, IMessageBusTopicSubscription, TokenBasedRoute } from "../models";
export declare abstract class TokenBasedRouter<T1 extends TokenBasedRoute, T2 extends TokenBasedRouteStateData> {
    private static initialized;
    private static initialTokenBasedPath;
    private static existingTokenBasedRouters;
    private static fullPathTitle;
    private static internalRouter;
    private readonly routeChangedTopic;
    private readonly token;
    private _tokenExistsOnUrl;
    private _routeContext;
    constructor(token: string);
    /**
     * Build the path base on the current context
     *
     * */
    protected abstract buildContextPath(routeContext: T1): string;
    protected abstract resolveRouteFromPath(path: string): T1;
    get onNavigate(): IMessageBusTopicSubscription<ITokenBasedRouteContext<T1, T2>>;
    get routeContext(): ITokenBasedRouteContext<T1, T2>;
    get tokenExistsOnUrl(): boolean;
    protected protectedNavigate(title: string, route: T1, stateData?: T2, replaceState?: boolean): void;
    protected protectedClearRoute(): void;
    protected combinePathParts(...parts: string[]): string;
    private resolveContext;
    static getRouterUrl(): string;
    private static buildPath;
    private static resolveTokenBasedContext;
    private static ensureNoSlashAtTheBeginningAndTheEnd;
    private static init;
}
