import * as React from "react";
import * as PropTypes from "prop-types";
import { Size } from "../utils/Forms";
import "./TextArea.less";
import "../less/forms.less";
export interface Props {
    disabled?: boolean;
    error?: string;
    label?: string;
    maxLength?: number;
    minLength?: number;
    name: string;
    id?: string;
    dataTestID?: string;
    onBlur?: React.FocusEventHandler<HTMLTextAreaElement>;
    onChange?: React.ChangeEventHandler<HTMLTextAreaElement>;
    onFocus?: React.FocusEventHandler<HTMLTextAreaElement>;
    onKeyDown?: React.KeyboardEventHandler<HTMLTextAreaElement>;
    onKeyPress?: React.KeyboardEventHandler<HTMLTextAreaElement>;
    onKeyUp?: React.KeyboardEventHandler<HTMLTextAreaElement>;
    optional?: boolean;
    placeholder?: string;
    readOnly?: boolean;
    required?: boolean;
    spellCheck?: boolean;
    value?: string | string[] | number;
    className?: string;
    autoResize?: boolean;
    rows?: number;
    size?: Size;
    showUploadAttachmentButton?: boolean;
    storeUpload?: (file: any, callbacks: any) => void;
    fileUploadCustomIcon?: JSX.Element;
    uploads?: React.ReactNode;
}
interface State {
    hasBeenFocused: boolean;
    inFocus: boolean;
}
export declare class TextArea extends React.Component<Props, State> {
    static propTypes: {
        disabled: PropTypes.Requireable<boolean>;
        error: PropTypes.Requireable<string>;
        label: PropTypes.Requireable<string>;
        maxLength: PropTypes.Requireable<number>;
        minLength: PropTypes.Requireable<number>;
        name: PropTypes.Validator<string>;
        onBlur: PropTypes.Requireable<(...args: any[]) => any>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        onFocus: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyPress: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyUp: PropTypes.Requireable<(...args: any[]) => any>;
        optional: PropTypes.Requireable<boolean>;
        placeholder: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        readOnly: PropTypes.Requireable<boolean>;
        required: PropTypes.Requireable<boolean>;
        spellCheck: PropTypes.Requireable<boolean>;
        value: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        className: PropTypes.Requireable<string>;
        autoResize: PropTypes.Requireable<boolean>;
        rows: PropTypes.Requireable<number>;
        size: PropTypes.Requireable<import("../utils/types").Values<{
            readonly SMALL: "small";
            readonly MEDIUM: "medium";
            readonly LARGE: "large";
            readonly FULL_WIDTH: "fullWidth";
        }>>;
        showUploadAttachmentButton: PropTypes.Requireable<boolean>;
        storeUpload: PropTypes.Requireable<(...args: any[]) => any>;
        fileUploadCustomIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
    };
    static defaultProps: {
        rows: number;
        size: "fullWidth";
    };
    static validateProps(props: any): any;
    constructor(props: Props);
    private textAreaEl;
    onFocus: React.FocusEventHandler<HTMLTextAreaElement>;
    onBlur: React.FocusEventHandler<HTMLTextAreaElement>;
    onKeyDown: React.KeyboardEventHandler<HTMLTextAreaElement>;
    onKeyPress: React.KeyboardEventHandler<HTMLTextAreaElement>;
    onKeyUp: React.KeyboardEventHandler<HTMLTextAreaElement>;
    focus(): void;
    textAreaHeight(): number | undefined;
    currentErrorMessage(): string;
    renderNote(errorMessage: any): any;
    render(): JSX.Element;
}
export {};
