///
import { FormFieldControl, FormFieldHTMLElement, FormFieldRegisterOptions } from './FormFieldControl';
export declare type FieldArrayItem = {
key: string;
item: TItem | undefined;
getName: (name: string) => string;
};
export declare type FormRegisterOptions = Record> = {
ref?: React.MutableRefObject;
onReset: (e: Event) => void;
onSubmit: (data: TFormFields, event?: SubmitEvent) => any | Promise;
};
export declare class FormControl = Record> {
#private;
constructor(options?: {
defaultValues?: Partial;
});
get props(): {
ref(el: HTMLFormElement): void;
};
get id(): string;
get value(): Partial;
get isDirty(): boolean;
set isDirty(value: boolean);
get isSubmitting(): boolean;
startUpdate(): void;
endUpdate(): void;
getFieldValueChangedCallbacks(name: TName): ((defer?: boolean) => void)[];
getFieldStateChangedCallbacks(name: TName): ((defer?: boolean) => void)[];
register(options: FormRegisterOptions): {
id: string;
ref(el: HTMLFormElement): void;
};
register(name: TName, options?: FormFieldRegisterOptions): {
name: string;
form: string;
ref(el: FormFieldHTMLElement | null): void;
};
unregister(name: TName): void;
requestSubmit(): void;
useFormState(): this;
useFormFieldState(name: TName): Partial<{ [TName_1 in keyof TFormFields]: FormFieldControl; }>[TName];
useFormFieldValue(name: TName): TFormFields[TName] | undefined;
useFieldArrayValue(name: TName): Partial[TName];
useFormValue(): Partial;
useFieldArray(name: TName, bind?: {
keyField: TKeyField | ((item: TItem) => string);
items: TItem[] | undefined;
loading?: boolean;
returnTrueValues?: boolean;
}): {
fields: {
key: string;
item: TItem | undefined;
getName: (name: string) => string;
}[];
addItem: () => void;
removeItem: (item: number | string) => void;
};
reset(defaultValues?: Partial): void;
setValue(name: TName, value: TFormFields[TName] | undefined): void;
setDefaultValue(name: TName, value: TFormFields[TName] | undefined): void;
}