import React from 'react';
import PropTypes from 'prop-types';
import { dataAttr } from './constants';
import { StatusContextProps } from '../FormField/StatusContext';
import { InputAreaProps } from './InputArea.types';
interface InputAreaState {
    focus: boolean;
    counter: number;
    computedRows: number | undefined;
}
/**
 * General inputArea container
 */
declare class InputArea extends React.PureComponent<InputAreaProps, InputAreaState> {
    textArea: HTMLTextAreaElement | null;
    _computedStyle: CSSStyleDeclaration | null;
    private _defaultLineHeight?;
    state: {
        focus: boolean;
        counter: number;
        computedRows: number | undefined;
    };
    static MIN_ROWS: number;
    static MAX_ROWS: number;
    static displayName: string;
    static defaultProps: InputAreaProps;
    static propTypes: {
        dataHook: PropTypes.Requireable<string>;
        className: PropTypes.Requireable<string>;
        children: PropTypes.Requireable<(...args: any[]) => any>;
        ariaControls: PropTypes.Requireable<string>;
        ariaDescribedby: PropTypes.Requireable<string>;
        ariaLabel: PropTypes.Requireable<string>;
        autoFocus: PropTypes.Requireable<boolean>;
        size: PropTypes.Requireable<string>;
        defaultValue: PropTypes.Requireable<string>;
        disabled: PropTypes.Requireable<boolean>;
        status: PropTypes.Requireable<string>;
        statusMessage: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        forceFocus: PropTypes.Requireable<boolean>;
        forceHover: PropTypes.Requireable<boolean>;
        hasCounter: PropTypes.Requireable<boolean>;
        id: PropTypes.Requireable<string>;
        name: PropTypes.Requireable<string>;
        maxHeight: PropTypes.Requireable<string>;
        maxLength: PropTypes.Requireable<number>;
        minHeight: PropTypes.Requireable<string>;
        onBlur: PropTypes.Requireable<(...args: any[]) => any>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        onEnterPressed: PropTypes.Requireable<(...args: any[]) => any>;
        onEscapePressed: PropTypes.Requireable<(...args: any[]) => any>;
        onFocus: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyUp: PropTypes.Requireable<(...args: any[]) => any>;
        onCompositionStart: PropTypes.Requireable<(...args: any[]) => any>;
        onCompositionEnd: PropTypes.Requireable<(...args: any[]) => any>;
        placeholder: PropTypes.Requireable<string>;
        readOnly: PropTypes.Requireable<boolean>;
        resizable: PropTypes.Requireable<boolean>;
        rows: PropTypes.Requireable<number>;
        autoGrow: PropTypes.Requireable<boolean>;
        minRowsAutoGrow: PropTypes.Requireable<number>;
        maxRowsAutoGrow: PropTypes.Requireable<number>;
        tabIndex: PropTypes.Requireable<number>;
        tooltipPlacement: PropTypes.Requireable<string>;
        value: PropTypes.Requireable<string>;
        required: PropTypes.Requireable<boolean>;
        dir: PropTypes.Requireable<string>;
    };
    _getDataAttr: ({ statusContext }: {
        statusContext: StatusContextProps;
    }) => Partial<{
        [dataAttr.SIZE]: import("./InputArea.types").InputAreaSize | undefined;
        [dataAttr.STATUS]: import("..").StatusType | null | undefined;
        [dataAttr.DISABLED]: boolean;
        [dataAttr.RESIZABLE]: boolean;
        [dataAttr.HOVER]: boolean;
        [dataAttr.FOCUS]: boolean;
    }>;
    componentDidMount(): void;
    componentDidUpdate(prevProps: InputAreaProps): void;
    componentWillUnmount(): void;
    render(): React.JSX.Element;
    focus: () => void;
    blur: () => void;
    select: () => void;
    calculateComputedRows: () => void;
    _onFocus: (e?: React.FocusEvent<HTMLTextAreaElement>) => void;
    _onBlur: (e: React.FocusEvent<HTMLTextAreaElement>) => void;
    _onKeyDown: (e: React.KeyboardEvent<HTMLTextAreaElement>) => void;
    _onChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
    _onInput: () => void;
    _updateComputedStyle: import("lodash").DebouncedFuncLeading<() => void>;
    _getComputedStyle: () => CSSStyleDeclaration | null;
    _getRowsCount: () => number;
    _getDefaultLineHeight: () => number | undefined;
}
export default InputArea;
//# sourceMappingURL=InputArea.d.ts.map