/**
 *  AlProtectedContentComponentEx provides a simple way to project content whose visibility is predicated on a combination of entitlements, experience mode,
 *  environment, and authentication state, without the need for the host view to know anything about services that expose those conditions.
 *
 *  Please see README.md for complete documentation.
 *
 *  @author McNielsen <knielsen@alertlogic.com>
 *  @copyright Alert Logic Inc, 2020
 */
import { AIMSAccount, AlActingAccountChangedEvent, AlActingAccountResolvedEvent, AlBehaviorPromise, AlDatacenterSessionEstablishedEvent, AlExperienceMapping, AlRoute, AlRouteCondition, AlSessionEndedEvent, AlSessionStartedEvent, AlSubscriptionGroup } from '@al/core';
import { EventEmitter, NgZone, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { Router } from '@angular/router';
import { AlExperiencePreferencesService } from '../services/al-experience-preferences.service';
import { AlNavigationService } from '../services/al-navigation.service';
import { AlContentUnavailable, AlNavigationContextChanged } from '../types/navigation.types';
import * as i0 from "@angular/core";
export declare class AlProtectedContentExComponent implements OnInit, OnChanges, OnDestroy, AlContentUnavailable {
    router: Router;
    navigation: AlNavigationService;
    experiencePreferences: AlExperiencePreferencesService;
    zone: NgZone;
    authentication: boolean | null;
    entitlements: string | string[] | null;
    primaryEntitlements: string | string[] | null;
    accounts: string[] | null;
    primaryAccounts: string[] | null;
    experiences: string | string[] | null;
    environments: string | string[] | null;
    requiresDefender: boolean;
    rerouteActingAccount: boolean;
    verbose: boolean;
    experienceId: string;
    onDisallowed: EventEmitter<AlContentUnavailable>;
    onDisplay: EventEmitter<void>;
    onHide: EventEmitter<void>;
    onAccountChange: EventEmitter<AIMSAccount>;
    aboveContentCrosslink?: AlRoute;
    contentVisible: boolean | undefined;
    conditions: AlRouteCondition;
    unavailableZeroState?: {
        title: string;
        description: string;
        iconClass: string;
        iconText: string;
    };
    protected calculatingState: AlBehaviorPromise<boolean>;
    protected subscriptions: AlSubscriptionGroup;
    protected previousAccountId: string;
    protected capturedRoute: AlRoute;
    protected featureId: string;
    protected variantId: string;
    protected isInitialAccessibilityEvaluation: boolean;
    protected featureVariantId: string;
    protected experienceMapping: AlExperienceMapping | null;
    constructor(router: Router, navigation: AlNavigationService, experiencePreferences: AlExperiencePreferencesService, zone: NgZone);
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    /**
     * Imperatively redirects to a location/path combination, an AlRoute href, and fully qualified URL,
     * or a local route.  Optionally accepts query parameters to be merged into target URL.
     */
    redirect(target: string | string[] | AlRoute | {
        location: string;
        path: string;
    }, parameters?: {
        [p: string]: string;
    }, options?: any): Promise<void>;
    /**
     * Outer method to evaluate whether content should be shown or not.
     */
    evaluateAccessibility(triggerName?: string): Promise<boolean>;
    normalizeEntitlementInput(input: string | string[] | null): string[] | null;
    onSessionStarted: (event: AlSessionStartedEvent) => void;
    onAccountChanged: (event: AlActingAccountChangedEvent) => void;
    onAccountResolved: (event: AlActingAccountResolvedEvent) => void;
    onSessionEnded: (event: AlSessionEndedEvent) => void;
    onDatacenterSessionEstablished: (event: AlDatacenterSessionEstablishedEvent) => void;
    onNavigationContextChanged: (event: AlNavigationContextChanged) => void;
    /**
     * Attempts to retrieve a valid entitlement expression from the current activated route.
     */
    getEntitlementsFromSchema(): string | string[];
    /**
     * Uses `AlNavigationService.activatedRoute` to redirect to the deepest route in the current route's lineage that is visible
     * AND entitled.  Hypothetically, this should ascend to the top level application's root route  in cases where there is
     * no entitled route.
     */
    findDeepestAccessibleRoute(): AlRoute;
    /**
     * Attempts to retrieve a valid entitlement expression from a route condition (or nested condition).  PLEASE NOTE
     * that this will not yield the desired results in cases of complex or compound route conditions.
     */
    getEntitlementsFromRouteCondition(condition: AlRouteCondition): string | string[];
    protected toArray(input?: string | string[]): string[];
    protected log(message: string): void;
    static ɵfac: i0.ɵɵFactoryDef<AlProtectedContentExComponent, never>;
    static ɵcmp: i0.ɵɵComponentDefWithMeta<AlProtectedContentExComponent, "al-protected-content-ex", never, { "authentication": "authentication"; "entitlements": "entitlements"; "primaryEntitlements": "primaryEntitlements"; "accounts": "accounts"; "primaryAccounts": "primaryAccounts"; "experiences": "experiences"; "environments": "environments"; "requiresDefender": "requiresDefender"; "rerouteActingAccount": "rerouteActingAccount"; "verbose": "verbose"; "experienceId": "experienceId"; }, { "onDisallowed": "onDisallowed"; "onDisplay": "onDisplay"; "onHide": "onHide"; "onAccountChange": "onAccountChange"; }, never, ["*", "[unavailable]"]>;
}
