import React from 'react';
import { FieldStateProps } from './hooks/useFieldAttrs';
import { ControllerRenderProps, FieldValues, UseFormSetError, UseFormSetValue } from 'react-hook-form';
import { LabelProps, LabelType } from './FieldLabel';
import { ValidationProps } from './hooks/useValidations';
export interface UncontrolledFieldProps extends FieldStateProps, Omit<ControllerRenderProps, 'ref'> {
    className?: string;
    disabled?: boolean;
    invalid?: boolean;
    max?: number | string;
    min?: number | string;
    placeholder?: string;
    theme?: 'light' | 'dark';
}
export interface ControlledFieldProps extends UncontrolledFieldProps, Pick<LabelProps, 'labelVisible'> {
    helpText?: LabelType;
    label?: LabelType;
    matchAgainst?: string;
    setError?: UseFormSetError<FieldValues>;
    setValue?: UseFormSetValue<FieldValues>;
    validations?: ValidationProps;
}
export declare type ControlledFieldWrapProps = Pick<ControlledFieldProps, 'className' | 'helpText' | 'label' | 'labelVisible' | 'matchAgainst' | 'max' | 'min' | 'name' | 'placeholder' | 'theme' | 'validations'>;
export interface TextFieldType {
    type?: 'text' | 'email' | 'textarea' | 'number' | 'tel';
}
export declare type TextFieldUncontrolledProps = UncontrolledFieldProps & TextFieldType;
export declare type TextFieldControlledProps = ControlledFieldWrapProps & TextFieldType;
export declare const TextField: React.ForwardRefExoticComponent<UncontrolledFieldProps & TextFieldType & React.RefAttributes<HTMLTextAreaElement & HTMLInputElement>>;
export declare const TextFieldControlled: ({ className, placeholder, type, theme, ...props }: TextFieldControlledProps) => JSX.Element;
