import { ActivatedRoute, ActivatedRouteSnapshot, ParamMap, Params, Router, UrlSegment } from "@angular/router";
import * as i0 from "@angular/core";
export declare class RouterHelper {
    /**
     * Traverses the pathFromRoot and combines all of the route parameters into
     * one Params object and returns it
     * @param route - ActivatedRouteSnapshot
     * @see https://angular.io/api/router/ActivatedRouteSnapshot#pathFromRoot
     */
    getFullRouteParams(route: ActivatedRouteSnapshot): Params;
    /**
     * Traverses the pathFromRoot and combines all of the route paramters into
     * one ParamMap and returns it
     * @param route - ActivatedRouteSnapshot
     * @see https://angular.io/api/router/ActivatedRouteSnapshot#pathFromRoot
     */
    getFullRouteParamMap(route: ActivatedRouteSnapshot): ParamMap;
    /**
     * Traverses the pathFromRoot and combines all of the route paths into
     * a url from root to the provided activated route.
     * @param route - ActivatedRouteSnapshot
     * @see https://angular.io/api/router/ActivatedRouteSnapshot#pathFromRoot
     */
    serializeUrlFromRoot(route: ActivatedRouteSnapshot): string;
    /**
     * Look at the first two child activated routes of a page route and combine the
     * url segments of each. These will contain the paths for the current view that
     * correspond to a primary and secondary tab. Assumes the URL structure is
     * /{page}/{primary}/{secondary}
     * @param pageRoute - The ActivatedRoute for the 'page' portion of the url. E.g. meter/:meterId
     */
    getViewUrlSegments(pageRoute: ActivatedRoute): UrlSegment[];
    /**
     * Returns the 'last firstChild' of the provided route tree
     * @param route - ActivatedRoute
     */
    getLastRouteDescendant(route: ActivatedRoute): ActivatedRoute;
    /**
     * Wrap code that will force the user to navigate based on some network call in a piece of logic that will cancel the action if there is another
     * navigation event while we wait for the call to complete. This is a common problem with trying to pick a default child when a user switches between modules.
     * @param asyncCall The async code to execute while watching for router navigation events. This code always executed and the result is returned
     * @param doIfNoNavigation The code to execute only if no navigation events happen while asyncCall is executing. It is passed the result of the async call
     * @param router The router instance to listen for navigation events.
     */
    executeWithNavigationWatcher<T>(asyncCall: () => Promise<T>, doIfNoNavigation: (result: T) => Promise<void>, router: Router): Promise<T>;
    static ɵfac: i0.ɵɵFactoryDeclaration<RouterHelper, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<RouterHelper>;
}
