import type React from 'react'; import type { ChangeHandler, FieldError, FieldPath, FieldPathValue, FieldValues, RefCallBack, UseFormReturn, UseFormStateReturn } from './'; export type ExtractProps = T extends React.ComponentType ? P : never; export type ControllerFieldState = { invalid: boolean; isTouched: boolean; isDirty: boolean; error?: FieldError; }; export type ControllerRenderProps = FieldPath> = { onChange: ChangeHandler; onBlur: ChangeHandler; value: FieldPathValue; disabled?: boolean; name: TName; ref?: RefCallBack; }; export type UseControllerProps = FieldPath> = { form?: UseFormReturn; setValueAs?: (value: any) => FieldPathValue; name: TName; defaultValue?: FieldPathValue; disabled?: boolean; }; export type UseControllerReturn = FieldPath> = { field: ControllerRenderProps; formState: UseFormStateReturn; fieldState: ControllerFieldState; }; /** * Render function to provide the control for the field. * * @returns all the event handlers, and relevant field and form state. * * @example * ```tsx * const { field, fieldState, formState } = useController(); * * ({ * * })} * /> * ``` */ export type ControllerProps = FieldPath, TComponent extends React.FC = React.FC> = { name: TName; form?: UseFormReturn; component?: TComponent; componentProps?: ExtractProps; setValueAs?: (value: unknown) => FieldPathValue; render?: ({ field, fieldState, formState, }: { field: ControllerRenderProps; fieldState: ControllerFieldState; formState: UseFormStateReturn; }) => React.ReactElement; } & UseControllerProps; export type DefaultProps = { onChange: ChangeHandler; onBlur: ChangeHandler; value: unknown; className?: string; type?: string; } & Record; //# sourceMappingURL=controller.d.ts.map