/** * Form validation utilities for form templates */ export interface ValidationRule { type: "required" | "email" | "min" | "max" | "pattern" | "custom"; value?: any; message: string; validator?: (value: any) => boolean; } export interface FieldValidation { [fieldId: string]: ValidationRule[]; } export interface ValidationResult { isValid: boolean; errors: Record; } /** * Built-in validation rules */ export declare const validationRules: { required: (message?: string) => ValidationRule; email: (message?: string) => ValidationRule; minLength: (min: number, message?: string) => ValidationRule; maxLength: (max: number, message?: string) => ValidationRule; minValue: (min: number, message?: string) => ValidationRule; maxValue: (max: number, message?: string) => ValidationRule; pattern: (regex: RegExp, message: string) => ValidationRule; custom: (validator: (value: any) => boolean, message: string) => ValidationRule; phone: (message?: string) => ValidationRule; url: (message?: string) => ValidationRule; strongPassword: (message?: string) => ValidationRule; }; /** * Validate a single field value against its rules */ export declare const validateField: (value: any, rules: ValidationRule[]) => string | null; /** * Validate multiple fields */ export declare const validateFields: (values: Record, validation: FieldValidation) => ValidationResult; /** * Common validation schemas */ export declare const commonValidationSchemas: { userRegistration: { firstName: ValidationRule[]; lastName: ValidationRule[]; email: ValidationRule[]; password: ValidationRule[]; confirmPassword: ValidationRule[]; terms: ValidationRule[]; }; contactForm: { name: ValidationRule[]; email: ValidationRule[]; subject: ValidationRule[]; message: ValidationRule[]; }; profileUpdate: { displayName: ValidationRule[]; bio: ValidationRule[]; website: ValidationRule[]; phone: ValidationRule[]; }; passwordChange: { currentPassword: ValidationRule[]; newPassword: ValidationRule[]; confirmNewPassword: ValidationRule[]; }; }; /** * Custom validation functions for common scenarios */ export declare const customValidators: { passwordsMatch: (password: string, confirmPassword: string) => boolean; uniqueEmail: (email: string, checkFunction: (email: string) => Promise) => Promise; fileSize: (file: File, maxSizeInMB: number) => boolean; fileType: (file: File, allowedTypes: string[]) => boolean; dateRange: (date: Date, minDate?: Date, maxDate?: Date) => boolean; creditCard: (cardNumber: string) => boolean; }; /** * Async validation utilities */ export declare const asyncValidation: { debounce: (func: Function, delay: number) => (...args: any[]) => Promise; createAsyncValidator: (asyncCheck: (value: any) => Promise, message: string, debounceMs?: number) => (value: any) => Promise; }; /** * Form validation state manager */ export declare class FormValidator { private validationSchema; private asyncValidators; constructor(validationSchema?: FieldValidation); setValidationSchema(schema: FieldValidation): void; addAsyncValidator(fieldId: string, validator: (value: any) => Promise): void; validateForm(values: Record): Promise; validateField(fieldId: string, value: any): Promise; } //# sourceMappingURL=FormValidationUtils.d.ts.map