/** * TachUI Forms Validation System * * Comprehensive validation engine with built-in rules, custom validators, * async validation support, and i18n-ready error messages. */ import type { CustomValidationRule, FieldState, FieldValidation, ValidationResult, ValidationRule } from '../types'; /** * Built-in validation rules */ declare const VALIDATION_RULES: Record ValidationResult>; /** * Register a custom validation rule */ export declare function registerValidationRule(rule: CustomValidationRule): void; /** * Unregister a custom validation rule */ export declare function unregisterValidationRule(name: string): void; /** * Get all registered validation rules */ export declare function getValidationRules(): string[]; /** * Validate a single value against validation rules */ export declare function validateValue(value: any, rules: ValidationRule[], options?: Record): ValidationResult; /** * Validate a field state */ export declare function validateField(field: FieldState, validation?: FieldValidation): ValidationResult; /** * Async validation function */ export declare function validateValueAsync(value: any, rules: ValidationRule[], options?: Record): Promise; /** * Debounced validation */ export declare function createDebouncedValidator(validator: (value: any) => ValidationResult | Promise, delayMs?: number): (value: any) => Promise; /** * Cross-field validation utilities */ export declare const CrossFieldValidators: { /** * Validate that two fields match (e.g., password confirmation) */ fieldMatch: (field1: string, field2: string, message?: string) => (values: Record) => ValidationResult; /** * Validate that at least one field in a group is filled */ requireOneOf: (fields: string[], message?: string) => (values: Record) => ValidationResult; /** * Validate that a field is required when another field has a specific value */ requiredWhen: (targetField: string, conditionalField: string, conditionalValue: any, message?: string) => (values: Record) => ValidationResult; /** * Validate date range (start date before end date) */ dateRange: (startField: string, endField: string, message?: string) => (values: Record) => ValidationResult; }; /** * Built-in validation rule presets */ export declare const ValidationPresets: { email: string[]; password: (string | { name: string; options: { minLength: number; }; })[]; phone: (string | { name: string; options: { pattern: RegExp; message: string; }; })[]; url: string[]; positiveNumber: (string | { name: string; options: { min: number; }; })[]; percentage: (string | { name: string; options: { min: number; max?: undefined; }; } | { name: string; options: { max: number; min?: undefined; }; })[]; }; /** * Validation message formatter */ export declare class ValidationMessageFormatter { private messages; constructor(messages?: Record); setMessage(code: string, message: string): void; setMessages(messages: Record): void; format(result: ValidationResult, fieldName?: string): string; } /** * Default validation message formatter instance */ export declare const defaultMessageFormatter: ValidationMessageFormatter; /** * Validation utilities */ export declare const ValidationUtils: { /** * Check if a validation result represents an error */ isError: (result: ValidationResult) => boolean; /** * Check if a validation result is valid */ isValid: (result: ValidationResult) => boolean; /** * Combine multiple validation results */ combineResults: (results: ValidationResult[]) => ValidationResult; /** * Create a validation function from a rule configuration */ createValidator: (rules: ValidationRule[], options?: Record) => (value: any) => ValidationResult; /** * Create an async validation function */ createAsyncValidator: (rules: ValidationRule[], options?: Record) => (value: any) => Promise; }; export { VALIDATION_RULES }; export * from './component-validation'; //# sourceMappingURL=index.d.ts.map