import { Repository } from 'typeorm';
import { ClsService } from 'nestjs-cls';
import { RoleRepository } from './repositories/role.repository';
import { RolePermissionEntity, ModuleName } from '../../entities/role-permission.entity';
import { UserEntity } from '../../entities/user.entity';
import { RedisService } from '../../redis/redis.service';
import { CreateRoleDto, UpdateRoleDto, AssignPermissionsDto } from './dto';
export declare class RoleService {
    private readonly roleRepo;
    private readonly rolePermRepo;
    private readonly userRepo;
    private readonly redisService;
    private readonly cls;
    constructor(roleRepo: RoleRepository, rolePermRepo: Repository<RolePermissionEntity>, userRepo: Repository<UserEntity>, redisService: RedisService, cls: ClsService);
    private preventSelfRoleAction;
    private getTenantId;
    private getUserId;
    findAll(query?: {
        page?: number;
        limit?: number;
        search?: string;
    }): Promise<{
        items: {
            id: any;
            name: any;
            description: any;
            is_system: any;
            created_at: any;
            updated_at: any;
            permissions: any;
        }[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    findAllForLookup(): Promise<import("../../entities").RoleEntity[]>;
    findById(id: string): Promise<{
        id: any;
        name: any;
        description: any;
        is_system: any;
        created_at: any;
        updated_at: any;
        permissions: any;
    }>;
    create(dto: CreateRoleDto): Promise<{
        id: string;
        message: string;
    }>;
    update(id: string, dto: UpdateRoleDto): Promise<{
        id: string;
        message: string;
    }>;
    remove(id: string): Promise<{
        message: string;
    }>;
    assignPermissions(roleId: string, dto: AssignPermissionsDto): Promise<{
        message: string;
    }>;
    getPermissionsMatrix(roleId: string): Promise<{
        module: ModuleName;
        access_level: string;
    }[]>;
    private invalidatePermissionCache;
    invalidateAllTenantPermissions(): Promise<void>;
    private toResponse;
}
