import { JSONSchema7 } from "decorated-ajv";
import { Component, PropsWithChildren } from "react";
import { FormContextType } from "./FormContext";
export type FormFieldValidatorType = (name: string, value: unknown) => Promise<void>;
export type FormProps<T extends Record<string, unknown>> = PropsWithChildren<{
    initialValues: T;
    initialErrors?: Partial<Record<keyof T, string>>;
    onSubmit: (values: T) => Promise<void>;
    schemas?: Partial<Record<keyof T, JSONSchema7>>;
    validators?: Partial<Record<keyof T, FormFieldValidatorType>>;
}>;
export declare class Form<T extends Record<string, unknown>> extends Component<FormProps<T>, FormContextType<T>> {
    private validationErrors;
    constructor(props: FormProps<T>);
    private _getInitialState;
    onFieldBlur(name: keyof T): void;
    onFieldChange(name: keyof T, value: T[keyof T]): void;
    private _validateField;
    private _validateWrapper;
    validateField(name: keyof T): Promise<void>;
    validate(): Promise<void>;
    reset(): void;
    submit(): void;
    render(): import("react/jsx-runtime").JSX.Element;
}
