import { CanActivate, ExecutionContext } from "@nestjs/common"; import { Reflector } from "@nestjs/core"; import { PermissionService } from "../services/permission.service"; /** * Guard that enforces permission-based authorization. * * This guard: * 1. Checks for an authenticated principal (throws 401 if missing) * 2. Checks required permissions based on metadata from decorators: * - `@RequiresPermission()` - requires ALL permissions (AND logic) * - `@RequiresAnyPermission()` - requires ANY permission (OR logic) * * @throws {UnauthorizedException} If no authenticated principal exists * @throws {PermissionDeniedException} If the principal lacks required permissions */ export declare class RequiresPermissionGuard implements CanActivate { private readonly reflector; private readonly permissionService; constructor(reflector: Reflector, permissionService: PermissionService); /** * Validates authentication and authorization for the current request. * * @param context - Execution context providing access to the request * @returns true if authorized * @throws {UnauthorizedException} If not authenticated * @throws {PermissionDeniedException} If permission check fails */ canActivate(context: ExecutionContext): boolean; }