import * as React from "react";
import * as PropTypes from "prop-types";
import { FormElementSize, AutoComplete } from "../utils/Forms";
import { Values } from "../utils/types";
import "./TextInput.less";
import "../less/forms.less";
export interface Props {
    autoComplete?: AutoComplete;
    disabled?: boolean;
    className?: string;
    disableAutocomplete?: boolean;
    enableShow?: boolean;
    error?: string;
    /** Temporary prop to allow overriding the text with a translation. */
    hideButtonText?: string;
    label?: string;
    name: string;
    onChange?: React.ChangeEventHandler<HTMLInputElement>;
    onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;
    onKeyPress?: React.KeyboardEventHandler<HTMLInputElement>;
    onKeyUp?: React.KeyboardEventHandler<HTMLInputElement>;
    onFocus?: React.FocusEventHandler<HTMLInputElement>;
    onBlur?: React.FocusEventHandler<HTMLInputElement>;
    optional?: boolean;
    placeholder?: string;
    placeholderCaps?: boolean;
    readOnly?: boolean;
    required?: boolean;
    /** Temporary prop to allow overriding the text with a translation. */
    requiredText?: string;
    /** Temporary prop to allow overriding the text with a translation. */
    showButtonText?: string;
    size?: Values<typeof FormElementSize>;
    type?: string;
    value?: React.ReactNode;
    [additionalProp: string]: any;
}
interface State {
    hasBeenFocused: boolean;
    hidden: boolean;
    inFocus: boolean;
}
export declare class TextInput extends React.Component<Props, State> {
    static propTypes: {
        autoComplete: PropTypes.Requireable<string>;
        className: PropTypes.Requireable<string>;
        disabled: PropTypes.Requireable<boolean>;
        disableAutocomplete: PropTypes.Requireable<boolean>;
        enableShow: PropTypes.Requireable<boolean>;
        error: PropTypes.Requireable<string>;
        hideButtonText: PropTypes.Requireable<string>;
        label: PropTypes.Requireable<string>;
        name: PropTypes.Validator<string>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyPress: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyUp: PropTypes.Requireable<(...args: any[]) => any>;
        onFocus: PropTypes.Requireable<(...args: any[]) => any>;
        onBlur: PropTypes.Requireable<(...args: any[]) => any>;
        optional: PropTypes.Requireable<boolean>;
        placeholder: PropTypes.Requireable<string>;
        placeholderCaps: PropTypes.Requireable<boolean>;
        readOnly: PropTypes.Requireable<boolean>;
        required: PropTypes.Requireable<boolean>;
        requiredText: PropTypes.Requireable<string>;
        showButtonText: PropTypes.Requireable<string>;
        size: PropTypes.Requireable<Values<{
            readonly SMALL: "small";
            readonly MEDIUM: "medium";
            readonly LARGE: "large";
            readonly FULL_WIDTH: "fullWidth";
        }>>;
        type: PropTypes.Requireable<string>;
        value: PropTypes.Requireable<PropTypes.ReactNodeLike>;
    };
    static defaultProps: {
        placeholderCaps: boolean;
        size: "fullWidth";
    };
    static validateProps(props: any): any;
    constructor(props: Props);
    private input;
    onFocus: React.FocusEventHandler<HTMLInputElement>;
    onBlur: React.FocusEventHandler<HTMLInputElement>;
    focus(): void;
    toggleHidden: () => void;
    currentErrorMessage(): string;
    renderNote(errorMessage: any): any;
    render(): JSX.Element;
}
export {};
