import { EventEmitter } from 'events';
import { Request, RequestHandler, Response } from 'express';
export interface ValidationSchema {
    body?: any;
    params?: any;
    query?: any;
    headers?: any;
}
export interface ValidationConfig {
    abortEarly?: boolean;
    stripUnknown?: boolean;
    coerceTypes?: boolean;
    customErrorHandler?: (errors: ValidationError[], req: Request, res: Response) => void;
}
export interface ValidationError {
    field: string;
    message: string;
    value?: any;
    type?: string;
}
export type ValidatorFunction = (value: any) => ValidationError[] | null;
export declare class ValidationMiddleware extends EventEmitter {
    private config;
    private validators;
    constructor(config?: ValidationConfig);
    registerValidator(name: string, validator: ValidatorFunction): void;
    validate(schema: ValidationSchema): RequestHandler;
    private validateDataAsync;
    private validateFieldAsync;
    private coerceType;
}
export declare function createValidationMiddleware(config?: ValidationConfig): ValidationMiddleware;
//# sourceMappingURL=validation-middleware.d.ts.map