import { type Json, type Validate } from "@exodus/schemasafe"; import type { Config, FieldValueValidator, FormValue, FormValueValidator, Schema, Validator } from "@sjsf/form"; import { type Merger } from "@sjsf/form/core"; import { type MapLike } from "@sjsf/form/lib/memoize"; export type ValidateFactory = (schema: Schema, rootSchema: Schema) => Validate; export declare const defaultValidateFactory: ValidateFactory; export interface ValueToJSON { valueToJSON: (value: FormValue) => Json; } export interface ValidatorOptions extends ValueToJSON { createSchemaValidator: (schema: Schema, rootSchema: Schema) => Validate; } export interface ValidatorsCache extends MapLike { clear(): void; } export declare function createSchemaValidatorFactory(factory: ValidateFactory, cache?: ValidatorsCache): (schema: Schema, rootSchema: Schema) => Validate; export declare function createFieldsValidatorFactory(factory: ValidateFactory): (config: Config) => Validate; export declare function createValidator({ createSchemaValidator, valueToJSON, }: ValidatorOptions): Validator; export interface FormValueValidatorOptions extends ValidatorOptions { merger: () => Merger; } export declare function createFormValueValidator(options: FormValueValidatorOptions): FormValueValidator; export interface FieldValueValidatorOptions extends ValueToJSON { createFieldSchemaValidator: (config: Config) => Validate; } export declare function createFieldValueValidator({ createFieldSchemaValidator, valueToJSON, }: FieldValueValidatorOptions): FieldValueValidator; export interface FormValidatorOptions extends ValidatorOptions, FormValueValidatorOptions, FieldValueValidatorOptions { } export declare function createFormValidator({ factory, validatorsCache, createSchemaValidator, createFieldSchemaValidator, valueToJSON, ...rest }: Partial & { factory?: ValidateFactory; validatorsCache?: ValidatorsCache; merger: () => Merger; }): Validator & FormValueValidator & FieldValueValidator;