import { RoleService } from './role.service';
import { CreateRoleDto } from './dto/create-role.dto';
import { RoleResponseDto } from './dto/role-response.dto';
import { UpdateRoleDto } from './dto/update-role.dto';
import { PaginatedResponseDto } from 'common/utils/paginated-response.dto';
import { PermissionWithStateDto } from '../permissions/dto/permission-state.dto';
import { UserResponseDto } from 'modules/user/dto/user-response.dto';
import { UserPermissionOverrideDto } from './dto/user-permission-override.dto';
import { EffectivePermissionDto } from './dto/effective-permission.dto';
export declare class RoleController {
    private readonly roleService;
    private readonly logger;
    constructor(roleService: RoleService);
    createRole(createRoleDto: CreateRoleDto): Promise<RoleResponseDto>;
    updateRole(roleId: string, updateRoleDto: UpdateRoleDto): Promise<RoleResponseDto>;
    deleteRole(roleId: string): Promise<void>;
    getAllRoles(page: number, limit: number, req: any): Promise<PaginatedResponseDto<RoleResponseDto>>;
    getRoleById(roleId: string): Promise<RoleResponseDto>;
    getRolesByClientId(clientId: string): Promise<RoleResponseDto[]>;
    getRoleByName(roleName: string, req: any): Promise<RoleResponseDto>;
    getRolePermissions(roleId: string): Promise<PermissionWithStateDto[]>;
    getRoleSubPermissions(roleId: string): Promise<PermissionWithStateDto[]>;
    setRolePermissionState(id: string, permissionId: string, state: string): Promise<void>;
    setRoleSubPermissionState(id: string, subPermissionId: string, state: string): Promise<void>;
    getRoleUsers(id: string): Promise<UserResponseDto[]>;
    assignUserToRoleByEmail(body: {
        email: string;
        roleId: string;
        clientId: string;
    }): Promise<void>;
    removeUserFromRole(id: string, userId: number): Promise<void>;
    setUserPermissionOverride(override: UserPermissionOverrideDto): Promise<void>;
    removeUserPermissionOverride(userId: number, permissionId?: string, subPermissionId?: string, clientId?: string): Promise<void>;
    getUserPermissionOverrides(userId: number, clientId?: string): Promise<import("./entities/user-permission-override.entity").UserPermissionOverrideEntity[]>;
    checkUserPermission(userId: number, permissionName: string, clientId?: string): Promise<boolean>;
    checkUserSubPermission(userId: number, subPermissionName: string, clientId?: string): Promise<boolean>;
    getUserEffectivePermissions(userId: number, clientId?: string): Promise<EffectivePermissionDto[]>;
    getUserPermissions(userId: number, clientId?: string): Promise<EffectivePermissionDto[]>;
    getUserSubPermissions(userId: number, clientId?: string): Promise<EffectivePermissionDto[]>;
}
