/**
 * @license chowa v1.1.3
 *
 * Copyright (c) Chowa Techonlogies Co.,Ltd.(http://www.chowa.cn).
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
import * as React from 'react';
import * as PropTypes from 'prop-types';
import { OmitProps } from '../utils';
import Textarea from './textarea';
import InputNumber from './input-number';
export interface InputProps extends OmitProps<React.InputHTMLAttributes<any>, 'size' | 'defaultValue' | 'prefix'> {
    className?: string;
    style?: React.CSSProperties;
    size?: 'small' | 'default' | 'large';
    tabIndex?: number;
    disabled?: boolean;
    placeholder?: string;
    addonBefore?: React.ReactNode;
    addonAfter?: React.ReactNode;
    prefix?: React.ReactNode;
    suffix?: React.ReactNode;
    prepend?: React.ReactNode;
    append?: React.ReactNode;
    onPressEnter?: (e: React.KeyboardEvent) => void;
    onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
    clearable?: boolean;
    defaultValue?: React.ReactText;
    value?: React.ReactText;
}
export interface InputState {
    result: React.ReactText;
    showClear: boolean;
}
declare class Input extends React.PureComponent<InputProps, InputState> {
    static propTypes: {
        className: PropTypes.Requireable<string>;
        style: PropTypes.Requireable<object>;
        size: PropTypes.Requireable<string>;
        tabIndex: PropTypes.Requireable<number>;
        disabled: PropTypes.Requireable<boolean>;
        placeholder: PropTypes.Requireable<string>;
        addonBefore: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        addonAfter: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        prefix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        suffix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        append: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        prepend: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        onPressEnter: PropTypes.Requireable<(...args: any[]) => any>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        clearable: PropTypes.Requireable<boolean>;
        defaultValue: PropTypes.Requireable<string | number>;
        value: PropTypes.Requireable<string | number>;
    };
    static defaultProps: {
        tabIndex: number;
        disabled: boolean;
        size: string;
        clearable: boolean;
    };
    static Textarea: typeof Textarea;
    static Number: typeof InputNumber;
    private inputEle;
    constructor(props: InputProps);
    private onMouseEnterHandler;
    private onMouseLeaveHandler;
    componentDidUpdate(preProps: InputProps): void;
    private clearResult;
    private onChangeHandler;
    private onKeyDownHandler;
    focus(): void;
    blur(): void;
    renderInput(single: boolean): JSX.Element;
    render(): JSX.Element;
}
export default Input;
