import React from 'react';
import { RegisterOptions } from './validator';
import { Control, FieldError, FieldPath, FieldPathValue, FieldValues, Noop, RefCallBack, UseFormStateReturn } from './';
export declare type ControllerFieldState = {
/**
* @deprecated check `fieldState.error` instead
* ```jsx
* {fieldState.error &&
{fieldState.error.message}
}
* ```
*/
invalid: boolean;
isTouched: boolean;
isDirty: boolean;
error?: FieldError;
};
export declare type ControllerRenderProps = FieldPath> = {
onChange: (...event: any[]) => void;
onBlur: Noop;
value: FieldPathValue;
name: TName;
ref: RefCallBack;
};
export declare type UseControllerProps = FieldPath> = {
name: TName;
rules?: Omit, 'valueAsNumber' | 'valueAsDate' | 'setValueAs' | 'disabled'>;
shouldUnregister?: boolean;
defaultValue?: FieldPathValue;
control?: Control;
};
export declare type UseControllerReturn = FieldPath> = {
field: ControllerRenderProps;
formState: UseFormStateReturn;
fieldState: ControllerFieldState;
};
/**
* Render function to provide the control for the field.
*
* @returns all the event handler, and relevant field and form state.
*
* @example
* ```tsx
* const { field, fieldState, formState } = useController();
*
* ({
*
* })}
* />
* ```
*/
export declare type ControllerProps = FieldPath> = {
render: ({ field, fieldState, formState, }: {
field: ControllerRenderProps;
fieldState: ControllerFieldState;
formState: UseFormStateReturn;
}) => React.ReactElement;
} & UseControllerProps;
//# sourceMappingURL=controller.d.ts.map