import { RoleService } from './role.service';
import { RoleHierarchyService } from './role-hierarchy.service';
import { CreateRoleDto, UpdateRoleDto, AssignPermissionsDto } from './dto';
import { UpdateRoleHierarchyDto } from './dto/update-role-hierarchy.dto';
import { AccessLevel, ModuleName } from '../../entities/role-permission.entity';
import { PaginationDto } from '../../common/dto/pagination.dto';
export declare class RoleController {
    private readonly roleService;
    private readonly hierarchyService;
    constructor(roleService: RoleService, hierarchyService: RoleHierarchyService);
    findAll(query: PaginationDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        id: string;
        name: string;
        description: string | null;
        is_system: boolean;
        view_all_bookings_queries: boolean;
        created_at: Date;
        updated_at: Date;
        permissions: {
            module: string;
            access_level: AccessLevel;
        }[];
    }[]>>;
    lookup(): Promise<import("../../common/responses/api-response").ApiResponse<import("../../entities").RoleEntity[]>>;
    getHierarchy(): Promise<import("../../common/responses/api-response").ApiResponse<import("./role-hierarchy.service").RoleHierarchyNode[]>>;
    updateHierarchy(dto: UpdateRoleHierarchyDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        message: string;
    }>>;
    findById(id: string): Promise<import("../../common/responses/api-response").ApiResponse<{
        id: string;
        name: string;
        description: string | null;
        is_system: boolean;
        view_all_bookings_queries: boolean;
        created_at: Date;
        updated_at: Date;
        permissions: {
            module: string;
            access_level: AccessLevel;
        }[];
    }>>;
    getPermissionsMatrix(id: string): Promise<import("../../common/responses/api-response").ApiResponse<{
        module: ModuleName;
        access_level: string;
    }[]>>;
    create(dto: CreateRoleDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        id: string;
        message: string;
    }>>;
    update(id: string, dto: UpdateRoleDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        id: string;
        message: string;
    }>>;
    assignPermissions(id: string, dto: AssignPermissionsDto): Promise<import("../../common/responses/api-response").ApiResponse<{
        message: string;
    }>>;
    remove(id: string): Promise<import("../../common/responses/api-response").ApiResponse<{
        message: string;
    }>>;
}
