import React, { Component, CSSProperties, ReactNode, TextareaHTMLAttributes } from 'react';
import { AbstractInputProps } from './Input';
import ConfigContext, { ConfigContextValue } from '../config-provider/ConfigContext';
export interface AutoSizeType {
    minRows?: number;
    maxRows?: number;
}
export interface TextAreaProps extends AbstractInputProps<HTMLTextAreaElement> {
    autosize?: boolean | AutoSizeType;
    autoFocus?: boolean;
    border?: boolean;
}
export interface TextAreaState {
    textareaStyles?: CSSProperties;
    inputLength?: number;
    focused?: boolean;
}
export declare type HTMLTextareaProps = Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'onChange' | 'prefix'>;
export default class TextArea extends Component<TextAreaProps & HTMLTextareaProps, TextAreaState> {
    static displayName: string;
    static get contextType(): typeof ConfigContext;
    static defaultProps: {
        showLengthInfo: boolean;
        border: boolean;
        labelLayout: string;
    };
    context: ConfigContextValue;
    nextFrameActionId: number;
    state: {
        textareaStyles: {};
        inputLength: number;
        focused: boolean;
    };
    private textAreaRef;
    private resizeObserver?;
    componentDidMount(): void;
    componentWillReceiveProps(nextProps: TextAreaProps): void;
    componentWillUnmount(): void;
    focus(): void;
    blur(): void;
    resizeTextarea: () => void;
    getPrefixCls(): string;
    getTextAreaClassName(): string;
    handleTextareaChange: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;
    handleKeyDown: (e: React.KeyboardEvent<HTMLTextAreaElement>) => void;
    handleInput: () => void;
    saveTextAreaRef: (textArea: HTMLTextAreaElement) => void;
    getWrapperClassName(): string;
    handleFocus: (e: React.FocusEvent<HTMLTextAreaElement, Element>) => void;
    handleBlur: (e: React.FocusEvent<HTMLTextAreaElement, Element>) => void;
    getLengthInfo(prefixCls: any): JSX.Element | null;
    renderFloatLabel(): ReactNode;
    render(): JSX.Element;
}
