/// <reference types="react" />
import { ErrorOption, ControllerProps as ReactHookControllerProps } from 'react-hook-form';
export type ControllerTransformer<TInput extends string = string, TOutput = any> = {
    transform?: {
        input: (value: TOutput) => TInput;
        output: (value: TInput) => TOutput;
    };
};
export type ControllerProps<TInput extends string = string, TOutput = unknown> = Omit<ReactHookControllerProps<Record<string, any>, string>, 'control'> & ControllerTransformer<TInput, TOutput> & {
    debounceOnChange?: number;
    validate?: (value: string) => true | string | ErrorOption | Promise<true | string | ErrorOption>;
};
export type ControllerInnerProps = ReactHookControllerProps<Record<string, any>, string> & {
    debounceOnChange?: number;
};
export declare const Controller: typeof ControllerInner;
export declare function ControllerInner<TInput extends string = string, TOutput = unknown>({ debounceOnChange, transform, render, rules, validate, ...props }: ControllerProps<TInput, TOutput>): JSX.Element;
