/** * Validator interface mixins for type-safe field validators. * These interfaces provide TypeScript autocomplete and type safety for field validation methods. */ export interface RequiredValidator { required(message?: string): this; } export interface MinLengthValidator { minLength(value: number, message?: string): this; } export interface MaxLengthValidator { maxLength(value: number, message?: string): this; } /** * Custom regex pattern validator. * For common patterns, use the preset validators below (email, url, etc.). */ export interface PatternValidator { pattern(regex: string, flags?: string, message?: string): this; } /** * Pattern preset validators. * These are convenience methods for common validation patterns. */ export interface EmailValidator { email(message?: string): this; } export interface UrlValidator { url(message?: string): this; } export interface LowerCaseValidator { lowerCase(message?: string): this; } export interface UpperCaseValidator { upperCase(message?: string): this; } export interface LowerCaseSpaceValidator { lowerCaseSpace(message?: string): this; } export interface UpperCaseSpaceValidator { upperCaseSpace(message?: string): this; } /** * Number comparison validators */ export interface GteValidator { gte(value: number, message?: string): this; } export interface LteValidator { lte(value: number, message?: string): this; } /** * Date/time comparison validators */ export interface DateGteValidator { dateGte(value: string, message?: string): this; } export interface DateLteValidator { dateLte(value: string, message?: string): this; } /** * Unique value validator (ensures field value is unique across entries) */ export interface UniqueValidator { unique(message?: string): this; } /** * List validators (for list fields). * These validate the array itself, not individual items. */ export interface ListMinLengthValidator { listMinLength(value: number, message?: string): this; } export interface ListMaxLengthValidator { listMaxLength(value: number, message?: string): this; } /** * Validators to use when building a custom field type */ export declare namespace FieldTypeValidator { type Required = RequiredValidator; type MinLength = MinLengthValidator; type MaxLength = MaxLengthValidator; type Pattern = PatternValidator; type Email = EmailValidator; type Url = UrlValidator; type LowerCase = LowerCaseValidator; type UpperCase = UpperCaseValidator; type LowerCaseSpace = LowerCaseSpaceValidator; type UpperCaseSpace = UpperCaseSpaceValidator; type Gte = GteValidator; type Lte = LteValidator; type DateGte = DateGteValidator; type DateLte = DateLteValidator; type Unique = UniqueValidator; type ListMinLength = ListMinLengthValidator; type ListMaxLength = ListMaxLengthValidator; }