import { LocationStrategy } from '@angular/common';
import { ElementRef, OnChanges, OnDestroy, Renderer2 } from '@angular/core';
import { Router, ActivatedRoute, UrlTree, Params } from '@angular/router';
import { DisplayStateService } from '../services/DisplayStateService';
import { ClientSettingsService } from '../services/ClientSettingsService';
import { AppStateService } from '../services/AppStateService';
/**
 * port of angular routerLink: https://github.com/angular/angular/blob/5.2.9/packages/router/src/directives/router_link.ts
 * but with unique implementation for our platform routing mechanism.
 *
 * You can set a platform context route as follows:
 *
 * ```
 * <a [platformRouterLink]="{'Source':'Examples','Category':'Charts','Module':'Example'}">
 *   link to user component
 * </a>
 * ```
 * RouterLink will use these to generate this link: `http://hostname/#/?c.Source=Examples&c.Category=Charts&c.Module=Example`.
 *
 * You can simply provide the new route's context as the value (object) for the platformRouterLink directive
 * or you can specify the different routing parameter types individually as inputs (context, filters, sorts, display)
 *
 * Alternatively you can optionally specify a string (one of 'context', 'filters', 'sorts', or 'display') as the value for commandsType
 * to have it treat the values provided to the platformRouterLink attribute as a context, filters, sorts, or display type object
 *
 * Finally you can specify your own endcoded queryParams as an input to override all
 */
export declare class PlatformRouterLink {
    private router;
    private route;
    private displayStateService;
    private clientSettingsService;
    private appStateService;
    queryParams: {
        [k: string]: any;
    };
    commandsType: string;
    context: {
        [k: string]: any;
    };
    filters: {
        [k: string]: any;
    };
    sorts: {
        [k: string]: any;
    };
    display: {
        [k: string]: any;
    };
    fragment: string;
    preserveFragment: boolean;
    private commands;
    private preserve;
    constructor(router: Router, route: ActivatedRoute, displayStateService: DisplayStateService, clientSettingsService: ClientSettingsService, appStateService: AppStateService, tabIndex: string, renderer: Renderer2, el: ElementRef);
    platformRouterLink: {
        [k: string]: any;
    } | string;
    processCommands(commands: {
        [k: string]: any;
    } | string): Params;
    onClick(): boolean;
    readonly urlTree: UrlTree;
    sendWarn(): void;
}
/**
 * @whatItDoes Lets you link to specific parts of your app.
 *
 * See {@link RouterLink} for more information.
 *
 * @ngModule RouterModule
 *
 * @stable
 */
export declare class PlatformRouterLinkWithHref implements OnChanges, OnDestroy {
    private router;
    private route;
    private displayStateService;
    private clientSettingsService;
    private appStateService;
    private locationStrategy;
    target: string;
    queryParams: {
        [k: string]: any;
    };
    commandsType: string;
    context: {
        [k: string]: any;
    };
    filters: {
        [k: string]: any;
    };
    sorts: {
        [k: string]: any;
    };
    display: {
        [k: string]: any;
    };
    fragment: string;
    preserveFragment: boolean;
    private commands;
    private subscription;
    private preserve;
    href: string;
    constructor(router: Router, route: ActivatedRoute, displayStateService: DisplayStateService, clientSettingsService: ClientSettingsService, appStateService: AppStateService, locationStrategy: LocationStrategy);
    platformRouterLink: {
        [k: string]: any;
    } | string;
    processCommands(commands: {
        [k: string]: any;
    } | string): Params;
    ngOnChanges(changes: {}): any;
    ngOnDestroy(): any;
    onClick(button: number, ctrlKey: boolean, metaKey: boolean, shiftKey: boolean): boolean;
    private updateTargetUrlAndHref();
    readonly urlTree: UrlTree;
    sendWarn(): void;
}
