import { Request, Response, NextFunction } from "express";
import { PrismaClient } from "@prisma/client";
import { RBACService } from "../services/RBACService";
import { Resource, Action } from "../types/rbac";
/**
 * Inicializar el servicio RBAC
 */
export declare function initializeRBAC(prisma: PrismaClient): void;
/**
 * Middleware para verificar un permiso específico
 */
export declare function requirePermission(resource: Resource, action: Action): (req: Request, res: Response, next: NextFunction) => Promise<void>;
/**
 * Middleware para verificar múltiples permisos (todos requeridos)
 */
export declare function requireAllPermissions(permissions: Array<{
    resource: Resource;
    action: Action;
}>): (req: Request, res: Response, next: NextFunction) => Promise<void>;
/**
 * Middleware para verificar múltiples permisos (al menos uno requerido)
 */
export declare function requireAnyPermission(permissions: Array<{
    resource: Resource;
    action: Action;
}>): (req: Request, res: Response, next: NextFunction) => Promise<void>;
/**
 * Middleware para verificar rol específico o superior
 */
export declare function requireRole(allowedRoles: string[]): (req: Request, res: Response, next: NextFunction) => Promise<void>;
/**
 * Middleware para verificar rol específico o superior usando jerarquía
 */
export declare function requireRoleOrHigher(requiredRole: string): (req: Request, res: Response, next: NextFunction) => Promise<void>;
/**
 * Middleware para verificar permisos dinámicos basados en parámetros de ruta
 */
export declare function requireDynamicPermission(resourceExtractor: (req: Request) => Resource, actionExtractor: (req: Request) => Action): (req: Request, res: Response, next: NextFunction) => Promise<void>;
/**
 * Middleware para logging de auditoría de permisos
 */
export declare function auditPermission(resource: Resource, action: Action): (req: Request, res: Response, next: NextFunction) => Promise<void>;
/**
 * Middleware para obtener contexto RBAC completo
 */
export declare function withRBACContext(req: Request, res: Response, next: NextFunction): void;
/**
 * Función helper para crear middleware con múltiples verificaciones
 */
export declare function createRBACMiddleware(options: {
    permissions?: Array<{
        resource: Resource;
        action: Action;
    }>;
    roles?: string[];
    requireAll?: boolean;
    audit?: boolean;
}): any[];
/**
 * Obtener el servicio RBAC
 */
export declare function getRBACService(): RBACService | null;
//# sourceMappingURL=rbacMiddleware.d.ts.map