/// import { Request } from '@loopback/rest'; import { LoggerConfig, SecurityValidationProvider } from '../providers/security-validator.provider'; type SecurityValidationOptions = { skip?: boolean; logger?: LoggerConfig; validateBody?: boolean; validateQuery?: boolean; validateParams?: boolean; }; /** * LoopBack 4 Security validation decorator * Renamed from @validate to @securityValidation for better clarity * * For LoopBack 4, it's recommended to use interceptors instead * of this decorator for better integration with the framework. * * However, this decorator can still be used for method-level validation. * * Usage in LoopBack 4 controller: * ```typescript * export class UserController { * constructor( * @inject(RestBindings.Http.REQUEST) private request: Request, * ) {} * * @securityValidation() * @post('/users') * async createUser( * @requestBody() userData: CreateUserRequest, * ): Promise { * // Security validation happens automatically before this method executes * return this.userService.create(userData); * } * } * ``` * * @param options - Security validation options * @returns Method decorator function */ export declare function securityValidation(options?: SecurityValidationOptions): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; /** * Legacy decorator name for backward compatibility * @deprecated Use @securityValidation instead */ export declare function validate(options?: SecurityValidationOptions): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; /** * Comprehensive security validation decorator with all security checks enabled */ export declare function comprehensiveSecurity(options?: Omit): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; /** * Body-only security validation decorator */ export declare function bodySecurityValidation(options?: Omit): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; /** * Query-only security validation decorator */ export declare function querySecurityValidation(options?: Omit): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; /** * Parameters-only security validation decorator */ export declare function paramsSecurityValidation(options?: Omit): (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor; /** * Security validation interceptor class for LoopBack 4 * This is the recommended approach for LoopBack 4 applications */ export declare class SecurityValidationInterceptor { private validator; constructor(); /** * Intercept and validate requests */ intercept(request: Request): Promise; /** * Get validator instance for direct use */ getValidator(): SecurityValidationProvider; } export type { LoggerConfig, SecurityValidationOptions };