import { CreateState } from "@reins/state"; import { ObjectType, PathsOf, ObjectPathToValue, MaybePromise, OptionalKeys } from "@reins/types"; import { FormStateType, FieldErrorType, ValidateFieldOutput, FormAdapterOptionsType, FieldValidation } from "./form-adapter.types.js"; import { FieldElements } from "../../hooks/index.js"; export declare class FormAdapter> { options?: FormAdapterOptionsType | undefined; initialStore: FormStateType; readonly store: CreateState>; getState(): FormStateType; setState(...args: Parameters<(typeof this.store)["setState"]>): void; getValues(): Values; getErrors(): OptionalKeys>; /** * This property stores registered fields, so we know what fields currently active on screen * @private */ private readonly _registeredFields; /** * This property stores registered validators on fields, so we know what fields do have * and require validation * @private */ private readonly _registeredValidators; private readonly _attachedNodes; constructor(initialValues: Values, options?: FormAdapterOptionsType | undefined); /** * Attach the field element to the form adapter * This is required to be able to scroll to the field * @param field * @param element * @returns */ attachFieldElement(field: Name, element: FieldElements): VoidFunction; detachFields(field: Name): void; getAttachedNodes(field: Name): NonNullable>[Name]>; scrollToField(field: Name): void; registerField(field: Name): () => void; unregisterField(field: Name): void; registerFieldValidation>(field: Name, validation: FieldValidation, Value>): () => void; unregisterFieldValidation(field: Name): void; validateField(field: Names): Promise; validate(): Promise<{ isValid: boolean; firstError: ValidateFieldOutput | null; result: ValidateFieldOutput[]; values: Values; }>; submit(onSubmit: (values: Values) => MaybePromise): Promise; reinitialize(values: Values, withValues?: boolean): void; setValues(values: Values): void; reset(auto?: boolean): void; resetField(field: Name): void; getFieldValue(field: Name): ObjectPathToValue; setFieldValue(field: Name, value: ObjectPathToValue): void; getFieldError(field: Name): FieldErrorType; setFieldError(field: Name, value: FieldErrorType): void; getFieldTouched(field: Name): boolean; setFieldTouched(field: Name, value: boolean): void; getFieldDirty(field: Name): boolean; setFieldDirty(field: Name, value: boolean): void; getFieldValidation(field: Name): boolean; setFieldValidation(field: Name, value: boolean): void; }