import type * as React from 'react';
import type { Override } from '../helpers/overrides';
export type FormControlState = {
    captionId: string;
};
export type FormControlOverrides = {
    /** Customizes the label element. */
    Label?: Override;
    /** Customizes the label end enhancer element. */
    LabelEndEnhancer?: Override;
    /** Customizes the label container element. */
    LabelContainer?: Override;
    /** Customizes the caption element. */
    Caption?: Override;
    /** Customizes the caption message element. */
    CaptionMessage?: Override;
    /** Customizes the caption icon element. */
    CaptionIcon?: Override;
    /** Customizes the container element. */
    ControlContainer?: Override;
};
export type FormControlProps = {
    overrides?: FormControlOverrides;
    /** A label rendered above the input field. */
    label?: React.ReactNode | ((props: {}) => React.ReactNode) | undefined | null;
    /** A caption rendered below the input field. */
    caption?: React.ReactNode | ((props: {}) => React.ReactNode) | undefined | null;
    /** Displays label in light gray color if true */
    disabled?: boolean;
    /** Error state of the input. If an error prop passed it will be rendered in place of caption as an error message. */
    error?: React.ReactNode | ((props: {}) => React.ReactNode);
    /** Positive state of the input. If an error prop passed it will be rendered in place of positive as an error message. */
    positive?: React.ReactNode | ((props: {}) => React.ReactNode);
    /** The id of the related form element. Defaults to the id property of the child, if any. */
    htmlFor?: string;
    /** Adds a label end enhancer to the label */
    labelEndEnhancer?: React.ReactNode | ((props: {}) => React.ReactNode) | null;
    /** Adds a length counter to the form control. If your input does not have a "string" value exposed as a prop, you provide the length as an object.*/
    counter?: boolean | {
        length?: number;
        maxLength?: number;
        error?: boolean;
    };
    children: React.ReactNode;
};
export type StyleProps = {
    $disabled?: boolean;
    $error?: boolean;
    $positive?: boolean;
    $length?: number;
    $maxLength?: number;
    $counterError?: boolean;
};
