import type { ValidationError, VineValidator } from '@vinejs/vine'; import type { Infer, SchemaTypes, ErrorReporterContract, MessagesProviderContact } from '@vinejs/vine/types'; import type { HttpContext } from './main.ts'; import type { RequestValidationOptions } from '../../types/http.ts'; /** * Request validator for validating HTTP request data using VineJS validators. * This class provides a convenient way to validate request body, files, cookies, * headers, and URL parameters in AdonisJS applications. * * @example * ```ts * // Inside a controller method * const data = await request.validateUsing(createUserValidator, { * messagesProvider: customMessages * }) * ``` */ export declare class RequestValidator { #private; constructor(ctx: HttpContext); /** * The error reporter method returns the error reporter * to use for reporting errors. * * You can use this function to pick a different error reporter * for each HTTP request */ static errorReporter?: (_: HttpContext) => ErrorReporterContract; /** * The messages provider method returns the messages provider to use * finding custom error messages * * You can use this function to pick a different messages provider for * each HTTP request */ static messagesProvider?: (_: HttpContext) => MessagesProviderContact; /** * Validate the current HTTP request data using a VineJS validator. * This method automatically includes request body, files, URL parameters, * headers, and cookies in the validation data. * * @param validator - VineJS validator instance * @param options - Optional validation options including custom error reporters and messages * * @example * ```ts * const createUserValidator = vine.compile( * vine.object({ * email: vine.string().email(), * name: vine.string().minLength(3) * }) * ) * * const data = await request.validateUsing(createUserValidator, { * errorReporter: () => vine.errors.SimpleErrorReporter, * messagesProvider: customMessages * }) * ``` */ validateUsing>(validator: VineValidator, ...[options]: [undefined] extends MetaData ? [options?: RequestValidationOptions | undefined] : [options: RequestValidationOptions]): Promise>; tryValidateUsing>(validator: VineValidator, ...[options]: [undefined] extends MetaData ? [options?: RequestValidationOptions | undefined] : [options: RequestValidationOptions]): Promise<[ValidationError, null] | [null, Infer]>; }