import { InjectionToken, Injector } from '@angular/core'; import { Observable } from 'rxjs'; import { Route } from '@angular/router'; import * as i0 from "@angular/core"; export declare enum PermissionMode { READ = 1, WRITE = 2 } export interface Permission { id: T; level: PermissionMode; } export declare class PermissionState { permissions$: Observable[]>; } export declare class PermissionManager { private state; constructor(state: PermissionState); canRead(type: T): Observable; canWrite(type: T): Observable; canReadSome(types: T[]): Observable; private getPermissionLevelForType; private getPermissions; static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵprov: i0.ɵɵInjectableDeclaration>; } export type PermissionCheckerFactory = (type: string) => PermissionChecker; export declare const PERMISSION_CHECKER_TOKEN: InjectionToken; export declare class PermissionChecker { private manager; private type; constructor(manager: PermissionManager, type: string); canRead(): Observable; canWrite(): Observable; } export declare abstract class BasePermissionGuard { private manager; constructor(manager: PermissionManager); abstract getPermissions(): Permission[] | Observable[]>; canActivate(): Observable; static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵprov: i0.ɵɵInjectableDeclaration>; } export declare function canReadPermissions(manager: PermissionManager, permissions: Permission[]): Observable; export declare function canRouteBeActivated(route: Route, injector: Injector): Observable;