import { PrismaService } from 'src/prisma/prisma.service';
import { rbac_roles as RbacRolesModel } from '@prisma/client';
import { UsersService } from 'src/users/users.service';
export type Role = RbacRolesModel;
export type RoleName = {
    id: number;
    name: string;
};
export type RoleDescription = {
    id: number;
    name: string;
    description: string;
};
export declare enum ERole {
    SystemDeveloper = "System Developer",
    IPWAdministrator = "IPW Administrator",
    IPWAuditor = "IPW Auditor",
    IPWContentManager = "IPW Content Manager",
    IPWDataCapturer = "IPW Data Capturer",
    IPWLeadAuditor = "IPW Lead Auditor",
    MemberReports = "Member Reports",
    MemberAdministrator = "Member Administrator",
    EditEvaluationForms = "Edit Evaluation Forms",
    ViewEvaluationForms = "View Evaluation Forms",
    ViewStatusOnly = "View Status Only",
    DocumentUploads = "Document Uploads"
}
export declare class RolesService {
    private prisma;
    private usersService;
    constructor(prisma: PrismaService, usersService: UsersService);
    find(): Promise<Role[]>;
    findDescriptions(options?: {
        user_class_id: number;
    }): Promise<RoleDescription[]>;
    findByUserId(user_id: number): Promise<Role[]>;
    findIdsByUserId(user_id: number): Promise<number[]>;
    findNamesByUserId(user_id: number): Promise<RoleName[]>;
    findUserRoleDescriptions(user_id: number): Promise<RoleDescription[]>;
    private ipwManagerRoles;
    isIpwManager(role_id: number): boolean;
    userHasGroup(user_group_id: number, user_id: number): Promise<number | null>;
    findGroupMemberRole(user_group_id: number, user_id: number): Promise<RoleName | null>;
    addRoleToGroupMember(roles_id: number, user_group_id: number, user_id: number): Promise<void>;
    removeRoleFromGroupMember(roles_id: number, user_group_id: number, user_id: number): Promise<void>;
}
