import { BindingEngine } from "aurelia-framework";
import { Router } from "aurelia-router";
import { Permission as PermissionModel, Role } from "../../../model/common-model";
import { CustomLogger } from "../../../modules/custom-logger";
import { EntityDetailViewModelBase } from "../../detail-view-model-base";
import { Datacontext } from "../../../data/data-context";
export declare class RoleDetail extends EntityDetailViewModelBase<Role> {
    private bindingEngine;
    ressourceName: string;
    protected selectedLanguageCode: string;
    private rolePermissionService;
    private userRoleService;
    private userService;
    private permissionGroups;
    private canUpdateUser;
    private filter;
    private isLoading;
    private permissionsTableElement;
    constructor(router: Router, logger: CustomLogger, datacontext: Datacontext, bindingEngine: BindingEngine);
    protected getTranslationKeyEntityTypeName(): string;
    get documentTitle(): string;
    private get crudActions();
    bind(): void;
    activate(params: {
        param1?: number;
        duplicateFrom?: number;
        dialogType?: any;
    }): Promise<void>;
    private loadRole;
    private loadPermissions;
    private makeQualifiedName;
    private sortGroups;
    private addObservableOnPermissions;
    private addObserver;
    private toggleFilter;
    private toggleTypeFilter;
    private filterFn;
    private get filteredPermissionGroups();
    isSelectClicked(permission: Permission): void;
    protected beforeSave(): Promise<boolean | void>;
    private newUserRole;
    private get canAddUser();
    private addUser;
    private cancelAddUser;
    private get canApplyAddUser();
    private applyAddUser;
    private removeUser;
}
declare class Permission {
    context: string;
    action: string;
    group: PermissionGroup;
    private _isSelected;
    private _isLocked;
    constructor(permission: PermissionModel);
    get isSelected(): boolean;
    set isSelected(value: boolean);
    get isLocked(): boolean;
    get permissionId(): string;
    get isCrud(): boolean;
}
declare class GroupBase {
    qualifiedName: string[];
    href: string;
    get name(): string;
    get hierarchy(): string[];
}
declare class PermissionGroup extends GroupBase {
    vm: RoleDetail;
    permissions: Permission[];
    additionalScreens: GroupBase[];
    hint?: string;
    isCrud: boolean;
    forceType: 'screen' | 'functionality' | null;
    constructor(vm: RoleDetail, permissions: Permission[]);
    get isAnySelected(): boolean;
    get type(): 'screen' | 'functionality';
    get firstPermission(): Permission;
    get context(): string;
    get translatedName(): string;
    get translatedHierarchy(): string;
    get isLocked(): boolean;
}
export {};
