import React, { ReactNode } from 'react'; import { FormApi, FormConfig, FieldState, FormState, FieldConfig } from '@formy/core'; export declare type FieldElement = HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement; export declare type ForceUpdate = React.Dispatch>; export declare type FormyValue = any; export interface FieldHandlers { handleBlur(e: React.FocusEvent): Promise; handleBlur(fieldOrEvent: T): T extends string ? (e: any) => void : Promise; handleChange(e: React.ChangeEvent): Promise; handleChange>(field: T): (T extends React.ChangeEvent ? void : (e: unknown | React.ChangeEvent) => void) | Promise; } export interface FieldStates { [key: string]: FieldState; } export interface FormProps extends FormConfig { hook?: FormApi; children?: ReactNode; [key: string]: any; } export interface FieldRegister { value: FormyValue; onChange: FieldHandlers['handleChange']; onBlur: FieldHandlers['handleBlur']; } export interface FormRegisterProps extends FormApi { } export interface FieldRegisterProps extends FieldRenderProps { } export interface FieldRenderProps extends FieldState, FieldHandlers { register: FieldRegister; setFieldState: (fieldState: Partial) => void; } export interface FieldSpyProps { name: string | string[]; children: (...fieldStores: FieldState[]) => ReactNode; } export interface FormSpyRenderProps extends FormState, FormApi { } export interface FormSpyProps { children: (formSpyRenderProps: FormSpyRenderProps) => ReactNode; } export interface FieldProps extends FieldConfig { name: string; children?: (props: FieldRenderProps) => ReactNode; }