/**
 *  AlProtectedContentComponent provides a simple way to project content that is entitlement-specific without having to actually worry about
 *  the entitlements subsystem.
 *
 *  To use it, simply wrap your content inside an <al-protected-content> block with the appropriate entitlement expression assigned to its `entitlement` property.
 *  This entitlement expression can be either a | separated list of product families (see O3NavigationService.evaluateEntitlements) OR a named entitlement
 *  group (see the EntitlementGroup class).
 *
 *  The component also accepts optional event handlers for when the content is displayed or hidden (onDisplay and onHide) respectively.
 *
 *  <al-protected-content entitlement="EntitlementGroup.AnyDefender"
 *                       (onDisplay)="onContentDisplayed()"
 *                       (onHide)="onContentHidden()"
 *                       (unentitled)="onUnentitledAccess($event)">
 *      <div>This is my cloud defender-specific content!  Hurrah!</div>
 *      <div class="inaccessible">This is only visible if the content's entitlement requirements aren't met.</div>
 *  </al-protected-content>
 *
 *  The visibility of the content will be updated dynamically as entitlements for different accounts are resolved.
 *
 *  The `unentitled` event emitter will dispatch a copy of the current effective EntitlementCollection to the attached event handler,
 *  allowing the patron component to react to the invalid access in an entitlement-specific way.
 *
 *  @author McNielsen <knielsen@alertlogic.com>
 *  @copyright Alert Logic Inc, 2018
 */
import { AIMSAccount, AlActingAccountChangedEvent, AlActingAccountResolvedEvent, AlEntitlementCollection, AlRoute, AlRouteCondition, 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 * as i0 from "@angular/core";
export declare class AlProtectedContentComponent implements OnInit, OnChanges, OnDestroy {
    router: Router;
    navigation: AlNavigationService;
    experiencePreferences: AlExperiencePreferencesService;
    zone: NgZone;
    static deprecationNotice: boolean;
    contentVisible: boolean;
    entitlement: string | string[];
    experienceAllowed: string | string[];
    accountChangeRoute: string | string[] | boolean;
    unentitledRoute: string | string[] | boolean;
    onDisplay: EventEmitter<void>;
    onHide: EventEmitter<void>;
    unentitled: EventEmitter<AlEntitlementCollection>;
    onAccountChange: EventEmitter<AIMSAccount>;
    experienceNotAllowed: EventEmitter<string | string[]>;
    protected subscriptions: AlSubscriptionGroup;
    protected previousAccountId: string;
    protected capturedRoute: AlRoute;
    private experience;
    private isExperienceAllowed;
    constructor(router: Router, navigation: AlNavigationService, experiencePreferences: AlExperiencePreferencesService, zone: NgZone);
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    setEntitlements: (entitlement: string | string[]) => void;
    setEntitlementGroup: (entitlement: string) => string[];
    onAccountResolved: (event: AlActingAccountResolvedEvent) => void;
    onAccountChanged: (event: AlActingAccountChangedEvent) => void;
    onContentUnavailable: (invalidEntitlements: AlEntitlementCollection) => void;
    evaluateAccessibility(entitlements?: AlEntitlementCollection): Promise<boolean>;
    /**
     * Dispatches a route.  This can be a boolean 'true' (in which case the defaultRoute will be used),
     * a string URL, or an array of segments.
     *
     * The method will coerce any of these inputs into an array of segments, and replace :accountId with the new acting account ID for each segment (if provided).
     */
    dispatchRoute(route: string | string[] | boolean, defaultRoute: string): void;
    /**
     * Attempts to retrieve a valid entitlement expression from the current activated route.
     */
    getEntitlementsFromSchema(): 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: boolean | string | AlRouteCondition): string[];
    static ɵfac: i0.ɵɵFactoryDef<AlProtectedContentComponent, never>;
    static ɵcmp: i0.ɵɵComponentDefWithMeta<AlProtectedContentComponent, "al-protected-content", never, { "entitlement": "entitlement"; "experienceAllowed": "experienceAllowed"; "accountChangeRoute": "accountChangeRoute"; "unentitledRoute": "unentitledRoute"; }, { "onDisplay": "onDisplay"; "onHide": "onHide"; "unentitled": "unentitled"; "onAccountChange": "onAccountChange"; "experienceNotAllowed": "experienceNotAllowed"; }, never, ["*", ".inaccessible"]>;
}
