import type { RPath, Schema, Validator } from "../core/index.js"; import type { Config } from "./config.js"; import type { FieldValue, FormValue, Update } from "./model.js"; export interface ValidationError { path: RPath; message: string; } export interface SuccessValidationResult { readonly value: Output; readonly errors?: undefined; } export interface FailureValidationResult { readonly value: FormValue; readonly errors: ReadonlyArray; } export type ValidationResult = SuccessValidationResult | FailureValidationResult; export interface FormValueValidator { validateFormValue: (rootSchema: Schema, formValue: FormValue) => ValidationResult; } export declare function isFormValueValidator(v: V): v is V & FormValueValidator; export interface AsyncFormValueValidator { validateFormValueAsync: (signal: AbortSignal, rootSchema: Schema, formValue: FormValue) => Promise>; } export declare function isAsyncFormValueValidator(v: V): v is V & AsyncFormValueValidator; export type AnyFormValueValidator = FormValueValidator | AsyncFormValueValidator; export type FormValidator = Validator & AnyFormValueValidator; export interface FieldValueValidator { validateFieldValue: (field: Config, fieldValue: FieldValue) => Update; } export declare function isFieldValueValidator(v: V): v is V & FieldValueValidator; export interface AsyncFieldValueValidator { validateFieldValueAsync: (signal: AbortSignal, field: Config, fieldValue: FieldValue) => Promise>; } export declare function isAsyncFieldValueValidator(v: V): v is V & AsyncFieldValueValidator; export type AnyFieldValueValidator = FieldValueValidator | AsyncFieldValueValidator; export interface AdditionalPropertyKeyValidator { validateAdditionalPropertyKey: (key: string, schema: Schema) => Update; } export declare function isAdditionalPropertyKeyValidator(v: V): v is V & AdditionalPropertyKeyValidator; export interface AsyncFileListValidator { validateFileListAsync: (signal: AbortSignal, fileList: FileList, config: Config) => Promise>; } export declare function isAsyncFileListValidator(v: object): v is AsyncFileListValidator;