import { Permission } from '../interfaces/permission.interface';
import { Repository } from 'typeorm';
import { PermissionEntity } from '../models/permission.entity';
import 'reflect-metadata';
import { ConfigService } from './config.service';
export interface RoleNode {
    role: string;
    level: number;
    children: RoleNode[];
    permissions: Set<string>;
}
export interface RoleHierarchy {
    [role: string]: {
        level: number;
        inherits?: string[];
    };
}
export declare class RoleHierarchyService {
    private readonly permissionRepository;
    private readonly configService;
    private roleTree;
    private rolePermissions;
    constructor(permissionRepository: Repository<PermissionEntity>, configService: ConfigService);
    buildRoleTree(hierarchy: RoleHierarchy): Promise<RoleNode>;
    private buildRoleNode;
    getInheritedPermissions(role: string): Promise<Permission[]>;
    private findRoleNode;
    private collectPermissions;
    private getRolePermissions;
    validateRoleHierarchy(hierarchy: RoleHierarchy): boolean;
    private validateHierarchy;
    clearCache(): void;
    getPermissionsByRole(role: string): Promise<PermissionEntity[]>;
    getRoleHierarchy(role: string): Promise<PermissionEntity[]>;
    private mapPermissionEntity;
}
