import * as rxjs from 'rxjs'; import { Observable } from 'rxjs'; import { Router, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, CanActivateFn } from '@angular/router'; import * as i0 from '@angular/core'; import { InjectionToken, Provider, OnInit, OnDestroy, TemplateRef, EnvironmentProviders, ModuleWithProviders } from '@angular/core'; import { Auth } from '@bravobit/bb-foundation/auth'; declare abstract class PermissionsHandler { abstract get(): Observable | string[]; } declare class PermissionsConfig { provider?: Provider; localPermissions?: LocalPermissionsData; onPermissionDenied?: (router: Router, snapshot: ActivatedRouteSnapshot, state: RouterStateSnapshot) => UrlTree; } interface PermissionsOptions { mode?: PermissionsMode; } type PermissionsMode = 'and' | 'or' | 'not'; type LocalPermissionsData = Record; declare const PERMISSIONS_CONFIG: InjectionToken; declare class LocalPermissionsHandler extends PermissionsHandler { protected auth: Auth; protected localPermissions: LocalPermissionsData; constructor(auth: Auth, localPermissions: LocalPermissionsData); get(): rxjs.Observable; protected getPermissionsForRole(role: string): any[]; } declare class BbPermission implements OnInit, OnDestroy { private readonly _permissions; private readonly _templateRef; private readonly _viewContainerRef; private _elseTemplateRef; private _thenViewRef; private _elseViewRef; private _valid; private _permission$; private _mode$; set bbPermission(value: string | string[]); set bbPermissionElse(templateRef: TemplateRef); set bbPermissionMode(mode: PermissionsMode); private _subscription; ngOnInit(): void; ngOnDestroy(): void; private updateView; private assertTemplate; static ngAcceptInputType_bbPermission: string | string[]; static ngAcceptInputType_bbPermissionElse: TemplateRef; static ngAcceptInputType_bbPermissionMode: PermissionsMode; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵdir: i0.ɵɵDirectiveDeclaration; } declare const bbPermissionGuard: (value: string | string[], options?: PermissionsOptions) => CanActivateFn; declare class Permissions implements OnDestroy { private _handler; private _activePermissions$; private _subscription; constructor(_handler: PermissionsHandler); ngOnDestroy(): void; all(): rxjs.Observable; allSync(): string[]; has(value: string | string[], options?: PermissionsOptions): rxjs.Observable; hasSync(value: string | string[], options?: PermissionsOptions): boolean; private hasPermission; private verifyModeAnd; private verifyModeNot; private verifyModeOr; private getRequiredPermissions; private trackPermissions; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare function providePermissionsConfig(config?: PermissionsConfig): EnvironmentProviders; declare class PermissionsModule { static forRoot(config?: PermissionsConfig): ModuleWithProviders; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵmod: i0.ɵɵNgModuleDeclaration; static ɵinj: i0.ɵɵInjectorDeclaration; } export { BbPermission, LocalPermissionsHandler, PERMISSIONS_CONFIG, Permissions, PermissionsConfig, PermissionsHandler, PermissionsModule, bbPermissionGuard, providePermissionsConfig }; export type { LocalPermissionsData, PermissionsMode, PermissionsOptions };