import * as i0 from '@angular/core'; import { InjectionToken, OnDestroy, TemplateRef, ViewContainerRef, ModuleWithProviders } from '@angular/core'; import { Observable } from 'rxjs'; import * as i2 from '@angular/common'; interface NbAclRole { parent?: string; [permission: string]: string | string[] | undefined; } interface NbAccessControl { [role: string]: NbAclRole; } interface NbAclOptions { accessControl?: NbAccessControl; } declare const NB_SECURITY_OPTIONS_TOKEN: InjectionToken; /** * @license * Copyright Akveo. All Rights Reserved. * Licensed under the MIT License. See License.txt in the project root for license information. */ declare abstract class NbRoleProvider { /** * Returns current user role * @returns {Observable} */ abstract getRole(): Observable; } /** * Common acl service. */ declare class NbAclService { protected settings: NbAclOptions; private static readonly ANY_RESOURCE; private state; constructor(settings?: NbAclOptions); /** * Set/Reset ACL list * @param {NbAccessControl} list */ setAccessControl(list: NbAccessControl): void; /** * Register a new role with a list of abilities (permission/resources combinations) * @param {string} role * @param {string} parent * @param {[permission: string]: string|string[]} abilities */ register(role: string, parent?: string, abilities?: { [permission: string]: string | string[]; }): void; /** * Allow a permission for specific resources to a role * @param {string} role * @param {string} permission * @param {string | string[]} resource */ allow(role: string, permission: string, resource: string | string[]): void; /** * Check whether the role has a permission to a resource * @param {string} role * @param {string} permission * @param {string} resource * @returns {boolean} */ can(role: string, permission: string, resource: string): any; private getRole; private validateRole; private validateResource; private exactCan; private getRoleResources; private getRoleAbilities; private getRoleParent; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } /** * Access checker service. * * Injects `NbRoleProvider` to determine current user role, and checks access permissions using `NbAclService` */ declare class NbAccessChecker { protected roleProvider: NbRoleProvider; protected acl: NbAclService; constructor(roleProvider: NbRoleProvider, acl: NbAclService); /** * Checks whether access is granted or not * * @param {string} permission * @param {string} resource * @returns {Observable} */ isGranted(permission: string, resource: string): Observable; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } declare class NbIsGrantedDirective implements OnDestroy { private templateRef; private viewContainer; private accessChecker; private destroy$; private hasView; constructor(templateRef: TemplateRef, viewContainer: ViewContainerRef, accessChecker: NbAccessChecker); set nbIsGranted([permission, resource]: [string, string]); ngOnDestroy(): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵdir: i0.ɵɵDirectiveDeclaration; } declare class NbSecurityModule { static forRoot(nbSecurityOptions?: NbAclOptions): ModuleWithProviders; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵmod: i0.ɵɵNgModuleDeclaration; static ɵinj: i0.ɵɵInjectorDeclaration; } export { NB_SECURITY_OPTIONS_TOKEN, NbAccessChecker, NbAclService, NbIsGrantedDirective, NbRoleProvider, NbSecurityModule }; export type { NbAccessControl, NbAclOptions, NbAclRole };