import { InjectionToken } from '@angular/core';
import { Observable } from 'rxjs';
import { ValidationFn } from '../model/permissions-router-data.model';
import { NgxRole } from '../model/role.model';
import { NgxRolesStore } from '../store/roles.store';
import { NgxPermissionsService } from './permissions.service';
import * as i0 from "@angular/core";
export declare const USE_ROLES_STORE: InjectionToken<unknown>;
export interface NgxRolesObject {
    [name: string]: NgxRole;
}
export declare class NgxRolesService {
    private isolate;
    private rolesStore;
    private permissionsService;
    private rolesSource;
    roles$: Observable<NgxRolesObject>;
    constructor(isolate: boolean, rolesStore: NgxRolesStore, permissionsService: NgxPermissionsService);
    addRole(name: string, validationFunction: ValidationFn | string[]): void;
    addRoleWithPermissions(name: string, permissions: string[]): void;
    addRoles(rolesObj: {
        [name: string]: ValidationFn | string[];
    }): void;
    addRolesWithPermissions(rolesObj: {
        [name: string]: string[];
    }): void;
    flushRoles(): void;
    flushRolesAndPermissions(): void;
    removeRole(roleName: string): void;
    getRoles(): NgxRolesObject;
    getRole(name: string): NgxRole | undefined;
    hasOnlyRoles(names: string | string[]): Promise<boolean>;
    private hasRoleKey;
    private hasRolePermission;
    static ɵfac: i0.ɵɵFactoryDeclaration<NgxRolesService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<NgxRolesService>;
}
