import type { AsyncFieldValueValidator, AsyncFormValueValidator, Config, Schema, FieldValueValidator, FormValueValidator, Validator } from "@sjsf/form";
import { Ajv, type AsyncValidateFunction, type Options, type ValidateFunction } from "ajv";
import { type ErrorsTransformerOptions, type LocalizeOptions } from "./errors.js";
import { type ValidatorsCache } from "./schema-compilers.js";
export interface ValidatorOptions {
    compileSchema: (schema: Schema, rootSchema: Schema) => ValidateFunction;
}
export declare function createValidator({ compileSchema, }: ValidatorOptions): Validator;
export interface FormValueValidatorOptions extends ValidatorOptions, ErrorsTransformerOptions, LocalizeOptions {
}
export declare function createFormValueValidator<T>(options: FormValueValidatorOptions): FormValueValidator<T>;
export interface FieldValueValidatorOptions extends LocalizeOptions {
    compileFieldSchema: (config: Config) => ValidateFunction;
}
export declare function createFieldValueValidator({ compileFieldSchema, localize, }: FieldValueValidatorOptions): FieldValueValidator;
export interface AsyncFormValueValidatorOptions extends ErrorsTransformerOptions, LocalizeOptions {
    compileAsyncSchema: (schema: Schema, rootSchema: Schema) => AsyncValidateFunction;
}
export declare function createAsyncFormValueValidator<T>(options: AsyncFormValueValidatorOptions): AsyncFormValueValidator<T>;
export interface AsyncFieldValueValidatorOptions extends LocalizeOptions {
    compileAsyncFieldSchema: (config: Config) => AsyncValidateFunction;
}
export declare function createAsyncFieldValueValidator({ compileAsyncFieldSchema, localize, }: AsyncFieldValueValidatorOptions): AsyncFieldValueValidator;
export interface FormValidatorOptions extends ValidatorOptions, FormValueValidatorOptions, FieldValueValidatorOptions {
}
interface AjvConstructor {
    new (options: Options): Ajv;
}
export declare function createFormValidator<T>({ ajvOptions, ajvPlugins, Ajv: AjvConstructor, ajv, validatorsCache, compileSchema, compileFieldSchema, ...rest }?: Partial<FormValidatorOptions> & {
    /**
     * @default `DEFAULT_AJV_CONFIG`
     */
    ajvOptions?: Options;
    /**
     * @default `addFormComponents`
     */
    ajvPlugins?: (ajv: Ajv) => Ajv;
    Ajv?: AjvConstructor;
    ajv?: Ajv;
    validatorsCache?: ValidatorsCache;
}): Validator & FormValueValidator<T> & FieldValueValidator;
export interface AsyncFormValidatorOptions extends ValidatorOptions, AsyncFormValueValidatorOptions, AsyncFieldValueValidatorOptions {
}
export declare function createAsyncFormValidator<T>({ ajv, validatorsCache, compileSchema, compileAsyncSchema, compileAsyncFieldSchema, ...rest }: Partial<AsyncFormValidatorOptions> & {
    ajv: Ajv;
    validatorsCache?: ValidatorsCache;
}): Validator & AsyncFormValueValidator<T> & AsyncFieldValueValidator;
export {};
