/**
 * Comprehensive validation system with schema integration
 */
import type { BaseValidationSchema, FieldError, FieldValue, FieldValues, JoiSchema, ValidationRule, YupSchema, ZodSchema } from './types.js';
/**
 * Built-in validation rules
 */
export declare class ValidationRules {
    static required(message?: string): ValidationRule;
    static minLength(min: number, message?: string): ValidationRule;
    static maxLength(max: number, message?: string): ValidationRule;
    static min(min: number, message?: string): ValidationRule;
    static max(max: number, message?: string): ValidationRule;
    static email(message?: string): ValidationRule;
    static url(message?: string): ValidationRule;
    static pattern(regex: RegExp, message?: string): ValidationRule;
    static oneOf(options: FieldValue[], message?: string): ValidationRule;
    static custom(validator: (value: FieldValue, formValues?: FieldValues) => boolean | Promise<boolean>, message?: string): ValidationRule;
    static asyncCustom(validator: (value: FieldValue, formValues?: FieldValues) => Promise<boolean>, message?: string): Promise<ValidationRule>;
    static equalTo(fieldName: string, message?: string): ValidationRule;
    static date(message?: string): ValidationRule;
    static file(options?: {
        maxSize?: number;
        allowedTypes?: string[];
        message?: string;
    }): ValidationRule;
}
/**
 * Schema adapter for Zod integration
 */
export declare class ZodSchemaAdapter implements BaseValidationSchema {
    private schema;
    constructor(schema: ZodSchema);
    validate(values: FieldValues): Promise<Record<string, FieldError>>;
    validateField(name: string, value: FieldValue, values?: FieldValues): Promise<FieldError | null>;
}
/**
 * Schema adapter for Yup integration
 */
export declare class YupSchemaAdapter implements BaseValidationSchema {
    private schema;
    constructor(schema: YupSchema);
    validate(values: FieldValues): Promise<Record<string, FieldError>>;
    validateField(name: string, value: FieldValue, values?: FieldValues): Promise<FieldError | null>;
}
/**
 * Schema adapter for Joi integration
 */
export declare class JoiSchemaAdapter implements BaseValidationSchema {
    private schema;
    constructor(schema: JoiSchema);
    validate(values: FieldValues): Promise<Record<string, FieldError>>;
    validateField(name: string, value: FieldValue, values?: FieldValues): Promise<FieldError | null>;
}
/**
 * Validation manager for handling different validation scenarios
 */
export declare class ValidationManager {
    private static instance;
    private customValidators;
    static getInstance(): ValidationManager;
    /**
     * Register a custom validator globally
     */
    registerValidator(name: string, rule: ValidationRule): void;
    /**
     * Get a registered validator
     */
    getValidator(name: string): ValidationRule | undefined;
    /**
     * Create schema adapter from different schema types
     */
    createSchemaAdapter(schema: any): BaseValidationSchema;
    /**
     * Validate a single field with multiple rules
     */
    validateField(value: FieldValue, rules: ValidationRule[], formValues?: FieldValues): Promise<FieldError | null>;
    /**
     * Combine multiple validation rules
     */
    combineRules(...rules: ValidationRule[]): ValidationRule[];
    /**
     * Create conditional validation rule
     */
    when(condition: (formValues: FieldValues) => boolean, thenRule: ValidationRule, elseRule?: ValidationRule): ValidationRule;
}
/**
 * Utility functions for validation
 */
export declare const validation: {
    rules: typeof ValidationRules;
    manager: ValidationManager;
    createZodAdapter: (schema: ZodSchema) => ZodSchemaAdapter;
    createYupAdapter: (schema: YupSchema) => YupSchemaAdapter;
    createJoiAdapter: (schema: JoiSchema) => JoiSchemaAdapter;
    email: () => ValidationRule;
    required: () => ValidationRule;
    minLength: (min: number) => ValidationRule;
    maxLength: (max: number) => ValidationRule;
    pattern: (regex: RegExp, message?: string) => ValidationRule;
    async: (validator: (value: FieldValue, formValues?: FieldValues) => Promise<boolean>, message: string) => ValidationRule;
};
//# sourceMappingURL=validation.d.ts.map