// Define unique symbols for schema properties export declare const SCHEMA_NAME: unique symbol; export declare const INPUT_TYPE: unique symbol; export declare const OUTPUT_TYPE: unique symbol; export declare const COMPUTED_TYPE: unique symbol; export declare const PARSE: unique symbol; export declare interface ValidationError { message: string } export declare interface ValidationErrorMap { [field: string]: ValidationError[] } export declare interface ValidationResult { valid: boolean errors: ValidationErrors } export declare interface ValidationRule { name: string test: (value: T) => boolean message: string params?: Record } export declare interface Validator { name: ValidationNames isRequired: boolean getRules: () => ValidationRule[] test: (value: T) => boolean validate: (value: T) => ValidationResult required: () => this optional: () => this } // Internal interface for implementation details export declare interface ValidatorInternal extends Validator { isPartOfShape: boolean rules: ValidationRule[] } export declare interface ValidationConfig { verbose: boolean strictMode?: boolean cacheResults?: boolean errorMessages?: Record } export declare interface LengthValidator { min: (length: number) => T max: (length: number) => T length: (length: number) => T } export type ValidationErrors = ValidationError[] | ValidationErrorMap; export type ValidationNames = 'base' | 'string' | 'number' | 'array' | 'boolean' | 'enum' | 'date' | 'datetime' | 'object' | 'custom' | 'timestamp' | 'unix' | 'password' | 'text' | 'bigint' | 'timestampTz' | 'float' | 'decimal' | 'time' | 'smallint' | 'integer' | 'json' | 'blob' | 'binary' | 'file'; export type Infer = T extends Validator ? U : never;