/**
 * @name Field
 *
 * @description
 *  The Field component is used when you're wanting to render any type of form field. It supports labels and captions for all types of fields,
 * and offers detailed levels of support for specific field types. Please refer to the storybook examples to see the many different ways in which
 * you can work with fields.
 *
 * @example
 *  <Field
 *    isDisabled={true}
 *    label={"Email Address"}
 *    name="Sample"
 *    formFieldProps={{
 *      placeholder: "Placeholder Text",
 *      size: Sizes.SMALL
 *    }}
 *    status={Statuses.ERROR}
 *  />
 */
/// <reference types="react" />
import * as PropTypes from 'prop-types';
import { CheckboxStates } from '../../types';
declare const fieldPropTypes: {
    type: PropTypes.Validator<string>;
    formFieldProps: PropTypes.Requireable<PropTypes.InferProps<{
        text: PropTypes.Requireable<string>;
        checked: PropTypes.Requireable<string | boolean>;
        onClick: PropTypes.Requireable<(...args: any[]) => any>;
        isIndeterminate: PropTypes.Requireable<boolean>;
    }> | PropTypes.InferProps<{
        placeholder: PropTypes.Requireable<string>;
        leftIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        rightIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        size: PropTypes.Requireable<string>;
        showStatus: PropTypes.Requireable<boolean>;
        showClear: PropTypes.Requireable<boolean>;
        onClearClicked: PropTypes.Requireable<(...args: any[]) => any>;
        inputProps: PropTypes.Requireable<any>;
    }>>;
    name: PropTypes.Validator<string>;
    label: PropTypes.Requireable<string>;
    caption: PropTypes.Requireable<string>;
    mods: PropTypes.Requireable<string>;
    status: PropTypes.Requireable<string>;
    ref: PropTypes.Requireable<any>;
    otherProps: PropTypes.Requireable<any>;
    isDisabled: PropTypes.Requireable<boolean>;
    isInline: PropTypes.Requireable<boolean>;
    style: PropTypes.Requireable<any>;
    testId: PropTypes.Requireable<string>;
};
declare type FieldProps = PropTypes.InferProps<typeof fieldPropTypes>;
declare const Field: {
    ({ type, name, label, caption, ref, status, isDisabled, formFieldProps, isInline, style, testId, ...otherProps }: FieldProps): JSX.Element;
    propTypes: {
        type: PropTypes.Validator<string>;
        formFieldProps: PropTypes.Requireable<PropTypes.InferProps<{
            text: PropTypes.Requireable<string>;
            checked: PropTypes.Requireable<string | boolean>;
            onClick: PropTypes.Requireable<(...args: any[]) => any>;
            isIndeterminate: PropTypes.Requireable<boolean>;
        }> | PropTypes.InferProps<{
            placeholder: PropTypes.Requireable<string>;
            leftIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
            rightIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
            size: PropTypes.Requireable<string>;
            showStatus: PropTypes.Requireable<boolean>;
            showClear: PropTypes.Requireable<boolean>;
            onClearClicked: PropTypes.Requireable<(...args: any[]) => any>;
            inputProps: PropTypes.Requireable<any>;
        }>>;
        name: PropTypes.Validator<string>;
        label: PropTypes.Requireable<string>;
        caption: PropTypes.Requireable<string>;
        mods: PropTypes.Requireable<string>;
        status: PropTypes.Requireable<string>;
        ref: PropTypes.Requireable<any>;
        otherProps: PropTypes.Requireable<any>;
        isDisabled: PropTypes.Requireable<boolean>;
        isInline: PropTypes.Requireable<boolean>;
        style: PropTypes.Requireable<any>;
        testId: PropTypes.Requireable<string>;
    };
    defaultProps: {};
    CheckboxStates: typeof CheckboxStates;
    Label: {
        (props: PropTypes.InferProps<{
            children: PropTypes.Validator<PropTypes.ReactNodeLike>;
            name: PropTypes.Requireable<string>;
            className: PropTypes.Requireable<string>;
            mods: PropTypes.Requireable<string>;
            style: PropTypes.Requireable<object>;
            testId: PropTypes.Requireable<string>;
            otherProps: PropTypes.Requireable<object>;
        }>): JSX.Element;
        defaultProps: {
            name: any;
            className: string;
            mods: any;
            style: {};
            testId: any;
            otherProps: {};
        };
    };
    Caption: {
        (props: PropTypes.InferProps<{
            children: PropTypes.Requireable<string>;
            isError: PropTypes.Requireable<boolean>;
            className: PropTypes.Requireable<string>;
            mods: PropTypes.Requireable<string>;
            style: PropTypes.Requireable<object>;
            testId: PropTypes.Requireable<string>;
            otherProps: PropTypes.Requireable<object>;
            status: PropTypes.Requireable<string>;
        }>): JSX.Element;
        defaultProps: {
            children: any;
            className: string;
            mods: any;
            style: {};
            testId: any;
            otherProps: {};
        };
    };
};
export default Field;
