import * as i0 from "@angular/core";
export declare enum ConditionOperator {
    AND = "AND",
    OR = "OR"
}
/**
 * @description
 * A structural directive that conditionally renders content based on user permissions.
 * Similar to *ngIf, but checks against a permission service to determine visibility.
 *
 * @example
 * ```HTML
 * <!-- Single permission check -->
 * <div *euiHasPermission="['READ_USERS']">
 *   Content only visible to users with READ_USERS permission
 * </div>
 *
 * <!-- Multiple permission check (AND operation) -->
 * <div *euiHasPermission="['READ_USERS', 'WRITE_USERS']">
 *   Content only visible to users with both permissions
 * </div>
 *
 * <!-- Using OR operator -->
 * <div *euiHasPermission="['READ_USERS', 'WRITE_USERS']" operator='OR'">
 *	Content visible to users with either permission
 * </div>
 * ```
 *
 * @usageNotes
 * The directive performs an AND operation when multiple permissions are provided,
 * meaning all permissions must be granted for the content to be displayed.
 */
export declare class EuiHasPermissionDirective {
    /**
     * @internal
     * Array storing the current permission requirements
     */
    private permissions;
    /**
     * @internal
     * Logical operator for permission checks (AND/OR). Defaults to AND.
     */
    private operator;
    /**
     * @internal
     * Flag tracking whether the content is currently hidden
     */
    private isHidden;
    /**
     * Sets the logical operator for permission checks.
     * Can be 'AND' (default) or 'OR'.
     * - 'AND': All permissions must be granted to display the content.
     * - 'OR': At least one permission must be granted to display the content.
     */
    set euiHasPermissionOperator(operator: ConditionOperator);
    /**
     * @input
     * @description
     * Sets the permissions required to display the content. Can be a single permission
     * string or an array of permission strings.
     *
     * @param val - Permission or array of permissions to check
     */
    set euiHasPermission(val: any);
    private templateRef;
    private viewContainer;
    private permissionService;
    /**
     * @internal
     * @description
     * Updates the view based on the current permission check results.
     * If permissions are granted, displays the content.
     * If permissions are not granted, hides the content.
     */
    private updateView;
    /**
     * @internal
     * @description
     * Checks if all required permissions are granted.
     * Uses AND logic - all permissions must be granted for the method to return true.
     *
     * @returns {boolean} True if all permissions are granted, false otherwise
     */
    private checkPermission;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiHasPermissionDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<EuiHasPermissionDirective, "[euiHasPermission]", never, { "euiHasPermissionOperator": { "alias": "euiHasPermissionOperator"; "required": false; }; "euiHasPermission": { "alias": "euiHasPermission"; "required": false; }; }, {}, never, never, true, never>;
}
/**
 * @description
 * Angular module that declares and exports the EuiHasPermissionDirective.
 * Import this module to use the euiHasPermission directive in your components.
 *
 * @deprecated Use {@link `EuiHasPermissionDirective`} instead.
 *
 * @example
 * ```typescript
 * import { EuiHasPermissionDirectiveModule } from '@eui/components';
 *
 * @NgModule({
 *    imports: [EuiHasPermissionDirectiveModule],
 * })
 * export class MyModule {}
 * ```
 */
export declare class EuiHasPermissionDirectiveModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiHasPermissionDirectiveModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<EuiHasPermissionDirectiveModule, never, [typeof EuiHasPermissionDirective], [typeof EuiHasPermissionDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<EuiHasPermissionDirectiveModule>;
}
//# sourceMappingURL=eui-has-permission.directive.d.ts.map