import { PropsWithChildren, HTMLProps } from 'react';
import { DefaultValues, Mode, SubmitHandler, DeepPartial, UseFormReturn } from 'react-hook-form';
import { ObjectSchema } from 'yup';
export interface FormProps<V extends object> extends PropsWithChildren {
    className?: string;
    name?: string;
    mode?: Mode;
    reValidateMode?: Exclude<Mode, "onTouched" | "all">;
    defaultValues?: DefaultValues<V>;
    schema?: ObjectSchema<V>;
    formProps?: HTMLProps<HTMLFormElement>;
    onSubmit?: SubmitHandler<V>;
    onChange?: (data: DeepPartial<V>) => void;
}
export type FormRef<V extends object> = UseFormReturn<V>;
declare function FormInner<V extends object>({ className, name, children, mode, reValidateMode, defaultValues, schema, formProps, onSubmit, onChange, }: FormProps<V>, ref: React.Ref<FormRef<V>>): import("react/jsx-runtime").JSX.Element;
export declare const Form: <V extends object>(props: FormProps<V> & {
    ref?: React.Ref<FormRef<V>>;
}) => ReturnType<typeof FormInner>;
export {};
