import { Request, Response, NextFunction } from 'express';
import { Permission, UserContext } from '../services/rbac.service';
declare global {
    namespace Express {
        interface Request {
            user?: UserContext;
            userId?: string;
        }
    }
}
/**
 * Extract and verify JWT token
 */
export declare const authenticateToken: (req: Request, res: Response, next: NextFunction) => Promise<void>;
/**
 * Require specific permission
 */
export declare const requirePermission: (permission: Permission) => (req: Request, res: Response, next: NextFunction) => Promise<void>;
/**
 * Require any of the specified permissions
 */
export declare const requireAnyPermission: (permissions: Permission[]) => (req: Request, res: Response, next: NextFunction) => Promise<void>;
/**
 * Require all of the specified permissions
 */
export declare const requireAllPermissions: (permissions: Permission[]) => (req: Request, res: Response, next: NextFunction) => Promise<void>;
/**
 * Check task access permission
 */
export declare const requireTaskAccess: (req: Request, res: Response, next: NextFunction) => Promise<void>;
/**
 * Check task modification permission
 */
export declare const requireTaskModify: (req: Request, res: Response, next: NextFunction) => Promise<void>;
/**
 * Optional authentication - doesn't fail if no token
 */
export declare const optionalAuth: (req: Request, res: Response, next: NextFunction) => Promise<void>;
//# sourceMappingURL=rbac.middleware.d.ts.map