import { AlLocationContext, AlNavigationSchema, AlRoute, AlRouteAction, AlRouteCondition, AlRouteDefinition, AlRoutingHost, AlSessionInstance, AlTriggeredEvent } from '@al/core';
import { TemplateRef } from '@angular/core';
import { MenuItem as PrimengMenuItem } from 'primeng-lts/api';
/**
 * A triggered event that indicates something in the parent frame has changed -- either a new schema is being installed, the experience setting has changed.
 * This event will not fire until the schema has been fully loaded.
 */
export declare class AlNavigationFrameChanged extends AlTriggeredEvent<void> {
    host: AlRoutingHost;
    schemaId: string;
    schema: AlNavigationSchema;
    experience: string;
    constructor(host: AlRoutingHost, schemaId: string, schema: AlNavigationSchema, experience: string);
}
/**
 * A triggered event that indicates something in the navigation context has changed -- specifically, this can be
 *     - A new route/URL has been set
 *     - Route parameters have changed
 *     - Acting account/effective eEntitlements have changed
 *     - Authentication status has changed
 * @dynamic
 */
export declare class AlNavigationContextChanged extends AlTriggeredEvent<void> {
    host: AlRoutingHost;
    session: AlSessionInstance;
    routeData: {
        [property: string]: any;
    };
    activatedRoute: AlRoute | null;
    constructor(host: AlRoutingHost, session: AlSessionInstance, routeData: {
        [property: string]: any;
    }, activatedRoute: AlRoute | null);
}
/**
 * This event will be triggered when a route of type `trigger` is dispatched by AlNavigationService.
 * Its `host` property will refer to AlNavigationService; its `triggerName` will indicate the name of the trigger.
 *
 * This event type can accept boolean responses indicating whether the event was handled as expected.
 */
export declare class AlNavigationTrigger extends AlTriggeredEvent<boolean> {
    host: AlRoutingHost;
    triggerName: string;
    definition: AlRouteDefinition;
    route: AlRoute;
    constructor(host: AlRoutingHost, triggerName: string, definition: AlRouteDefinition, route: AlRoute);
}
export declare class AlAddendumToNavTitleEvent extends AlTriggeredEvent<void> {
    addendumToTitle: string;
    constructor(addendumToTitle: string);
}
/**
 * @deprecate
 */
export declare class AlNavigationSecondarySelected extends AlTriggeredEvent<void> {
    child: AlRoute;
    constructor(child: AlRoute);
}
/**
 * @deprecate
 */
export declare class AlNavigationTertiarySelected extends AlTriggeredEvent<void> {
    child: AlRoute;
    constructor(child: AlRoute);
}
/**
* AlNavigationSidenavMounted
 */
export declare class AlNavigationSidenavMounted extends AlTriggeredEvent<void> {
    contentRef: TemplateRef<any> | null;
    showSidenav: boolean;
    constructor(contentRef: TemplateRef<any> | null, showSidenav?: boolean);
}
export declare class AlNavigationNavHeaderMounted extends AlTriggeredEvent<void> {
    constructor();
}
export declare class AlNavigationInitializeToggle extends AlTriggeredEvent<void> {
    label: string;
    tooltip: string;
    checked: boolean;
    callback: Function;
    constructor(label: string, tooltip: string, checked: boolean, callback: Function);
}
export declare class AlNavigationRemoveToggle extends AlTriggeredEvent<void> {
    constructor();
}
export declare class AlNavigationIdlePrompt extends AlTriggeredEvent<void> {
    countdown: number;
    continueWorking: {
        (): void;
    };
    constructor(countdown: number, continueWorking: {
        (): void;
    });
}
export declare class AlNavigationReauthenticatePrompt extends AlTriggeredEvent<void> {
    constructor();
}
export interface ExperienceToggleDefinition {
    label: string;
    tooltip: string;
    checked: boolean;
    callback: Function;
}
export interface ExperiencePreference {
    displayBetaNavigation: boolean;
    displayIEWarning?: boolean;
    displayExpOptOut?: boolean;
    offerBetaTutorial?: boolean;
}
export interface AlDatacenterOptionsSummary {
    locationsAvailable: number;
    selectableRegions: PrimengMenuItem[];
    currentRegion: string;
    currentResidency: string;
}
/**
 *  This interface is used to communicate the unavailability of a protected content block to its parent component
 *  (see al-protected-content-ex).
 */
export interface AlContentUnavailable {
    /**
     * The route condition associated with the unavailable content.
     */
    conditions: AlRouteCondition;
    /**
     * Exposes a helper method to redirect to a local route, route tree, AlRoute, or location/path pair.
     */
    redirect: {
        (to: string | string[] | AlRoute | {
            location: string;
            path: string;
        }): void;
    };
}
export interface AlNavigationPromptDescriptor {
    type: string;
    selection: string;
    description: string;
    icon?: string;
    action?: AlRouteAction;
}
export declare const ALNAV_DISABLE_HEADER = "alNavigation.disableHeader";
export declare const ALNAV_DISABLE_PRIMARY = "alNavigation.disablePrimary";
export declare const ALNAV_DISABLE_TERTIARY = "alNavigation.disableTertiary";
export declare const ALNAV_PADDED_CONTENT = "alNavigation.contentPadding";
export declare const ALNAV_PUBLIC = "alNavigation.public";
export declare const ALNAV_PRIVATE = "alNavigation.private";
export declare type IEWarningState = "showed" | "showing" | "not_showed";
export declare type AlExperience = "default" | "beta" | null;
export interface AlNavigateOptions {
    target?: "_blank" | undefined;
    replace?: boolean;
    as?: {
        accountId?: string;
        locationId?: string;
    };
    context?: AlLocationContext;
}
export declare type TrackEventCategory = 'menu_opt_in' | 'menu_opt_out' | 'popup_opt_out' | 'popup_continue';
