///
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 };