export interface UseFormProps { initialValues: T; validate?: (values: T) => FormErrors | Promise> | undefined | Promise | void | Promise; onSubmit?: (values: T, helpers: FormSetters) => Promise | void; onChange?: (values: T) => Promise | void; } export interface FormHandler extends FormSetters { submit: () => Promise; reset: () => void; validate: () => void; values: T; errors: FormErrors; changes: FormChanged; submitting: boolean; submitCount: number; changed: boolean; } export interface FormSetters { setFieldError: (field: keyof T, message?: string) => void; setFieldValue: { (field: keyof T): (value: T[keyof T]) => void; (field: keyof T, value: T[keyof T]): void; }; setValues: (values: Partial) => void; setSubmitting: (submitting: boolean) => void; setErrors: (errors: FormErrors) => void; reset: () => void; } export type FormErrors = { [key in keyof T]?: string; }; export type FormChanged = { [key in keyof T]?: boolean; }; export declare function useForm(props: UseFormProps): FormHandler;