import { PrismaClient } from "@prisma/client";
import { CreatePermissionRequest, AssignPermissionRequest, PermissionResponse, RolePermissionResponse, BulkPermissionAssignment, BulkPermissionResponse, PermissionValidation, PermissionString } from "../types/rbac";
export declare class PermissionService {
    private prisma;
    constructor(prisma: PrismaClient);
    /**
     * Crear un nuevo permiso
     */
    createPermission(data: CreatePermissionRequest, organizationId?: string): Promise<PermissionResponse>;
    /**
     * Obtener todos los permisos de una organización
     */
    getPermissions(organizationId?: string): Promise<PermissionResponse[]>;
    /**
     * Obtener un permiso por ID
     */
    getPermissionById(id: string): Promise<PermissionResponse | null>;
    /**
     * Actualizar un permiso
     */
    updatePermission(id: string, data: Partial<CreatePermissionRequest>): Promise<PermissionResponse>;
    /**
     * Eliminar un permiso
     */
    deletePermission(id: string): Promise<void>;
    /**
     * Asignar un permiso a un rol
     */
    assignPermissionToRole(data: AssignPermissionRequest, organizationId?: string): Promise<RolePermissionResponse>;
    /**
     * Revocar un permiso de un rol
     */
    revokePermissionFromRole(role: string, permissionId: string, organizationId?: string): Promise<void>;
    /**
     * Obtener permisos de un rol
     */
    getRolePermissions(role: string, organizationId?: string): Promise<PermissionResponse[]>;
    /**
     * Obtener roles que tienen un permiso específico
     */
    getRolesWithPermission(permissionId: string, organizationId?: string): Promise<string[]>;
    /**
     * Asignar múltiples permisos a un rol
     */
    bulkAssignPermissions(data: BulkPermissionAssignment, organizationId?: string): Promise<BulkPermissionResponse>;
    /**
     * Verificar si un usuario tiene un permiso específico
     */
    checkUserPermission(userId: string, organizationId: string, requiredPermission: PermissionString): Promise<PermissionValidation>;
    /**
     * Obtener todos los permisos de un usuario en una organización
     */
    getUserPermissions(userId: string, organizationId: string): Promise<PermissionResponse[]>;
    /**
     * Crear permisos por defecto para una organización
     */
    createDefaultPermissions(organizationId: string): Promise<void>;
    /**
     * Mapear PrismaPermission a PermissionResponse
     */
    private mapToPermissionResponse;
    /**
     * Mapear PrismaRolePermission a RolePermissionResponse
     */
    private mapToRolePermissionResponse;
}
//# sourceMappingURL=PermissionService.d.ts.map