import { PrismaClient } from "@prisma/client";
import { PermissionService } from "./PermissionService";
import { PermissionResponse, PermissionValidation, RBACContext, RBACConfig, Resource, Action } from "../types/rbac";
export declare class RBACService {
    private prisma;
    private permissionService;
    private cache;
    private config;
    constructor(prisma: PrismaClient, config?: Partial<RBACConfig>);
    /**
     * Verificar si un usuario tiene un permiso específico
     */
    checkPermission(userId: string, organizationId: string, resource: Resource, action: Action): Promise<PermissionValidation>;
    /**
     * Verificar múltiples permisos de una vez
     */
    checkMultiplePermissions(userId: string, organizationId: string, permissions: Array<{
        resource: Resource;
        action: Action;
    }>): Promise<{
        hasAllPermissions: boolean;
        results: Array<{
            permission: string;
            hasPermission: boolean;
        }>;
    }>;
    /**
     * Obtener contexto RBAC completo de un usuario
     */
    getRBACContext(userId: string, organizationId: string): Promise<RBACContext | null>;
    /**
     * Verificar si un usuario tiene un rol específico o superior
     */
    hasRoleOrHigher(userId: string, organizationId: string, requiredRole: string): Promise<boolean>;
    /**
     * Obtener todos los permisos de un usuario con cache
     */
    getUserPermissions(userId: string, organizationId: string): Promise<PermissionResponse[]>;
    /**
     * Limpiar cache de permisos
     */
    clearCache(userId?: string, organizationId?: string): void;
    /**
     * Obtener estadísticas de permisos
     */
    getPermissionStats(organizationId: string): Promise<{
        totalPermissions: number;
        totalRoleAssignments: number;
        permissionsByResource: Record<string, number>;
        permissionsByRole: Record<string, number>;
    }>;
    /**
     * Validar configuración de permisos
     */
    validatePermissionConfiguration(organizationId: string): Promise<{
        isValid: boolean;
        issues: string[];
    }>;
    /**
     * Obtener el rol de un usuario
     */
    private getUserRole;
    /**
     * Obtener permisos del cache
     */
    private getCachedPermissions;
    /**
     * Cachear permisos
     */
    private cachePermissions;
    /**
     * Obtener el servicio de permisos
     */
    getPermissionService(): PermissionService;
    /**
     * Actualizar configuración
     */
    updateConfig(config: Partial<RBACConfig>): void;
}
//# sourceMappingURL=RBACService.d.ts.map