import React, { ReactNode } from 'react';
import { Cancelable } from 'lodash';
import PropTypes from 'prop-types';
import { WaitType } from '../core/enum';
import { FormField, FormFieldProps } from '../field/FormField';
import { ValidatorProps } from '../validator/rules';
import { GroupItemCategory, ValueChangeAction } from './enum';
import { ShowHelp } from '../field/enum';
export declare function isPlaceHolderSupport(): boolean;
export interface TextFieldProps extends FormFieldProps {
    /**
     * 占位词
     */
    placeholder?: string | string[];
    /**
     * 最小长度
     */
    minLength?: number;
    /**
     * 最大长度
     */
    maxLength?: number;
    /**
     * 正则校验
     */
    pattern?: string | RegExp;
    /**
     * 自动完成
     */
    autoComplete?: 'on' | 'off';
    /**
     * 前缀
     */
    prefix?: ReactNode;
    /**
     * 后缀
     */
    suffix?: ReactNode;
    /**
     * 是否显示清除按钮
     */
    clearButton?: boolean;
    /**
     * 前置标签
     */
    addonBefore?: ReactNode;
    /**
     * 后置标签
     */
    addonAfter?: ReactNode;
    /**
     * 限制可输入的字符
     */
    restrict?: string;
    /**
     * 是否是筛选条 flat 模式
     */
    isFlat?: boolean;
    /**
     * 触发值变更的动作， default: blur
     */
    valueChangeAction?: ValueChangeAction;
    /**
     * 值变更间隔时间，只有在valueChangeAction为input时起作用
     */
    wait?: number;
    /**
     * 值变更间隔类型，可选值：throttle | debounce
     * @default throttle
     */
    waitType?: WaitType;
    groupClassName?: string;
}
export declare class TextField<T extends TextFieldProps> extends FormField<T> {
    static displayName: string;
    static propTypes: {
        id: PropTypes.Requireable<string>;
        size: PropTypes.Requireable<import("../core/enum").Size>;
        suffixCls: PropTypes.Requireable<string>;
        prefixCls: PropTypes.Requireable<string>; /**
         * 值变更间隔类型，可选值：throttle | debounce
         * @default throttle
         */
        title: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        disabled: PropTypes.Requireable<boolean>;
        hidden: PropTypes.Requireable<boolean>;
        autoFocus: PropTypes.Requireable<boolean>;
        style: PropTypes.Requireable<object>;
        className: PropTypes.Requireable<string>;
        tabIndex: PropTypes.Requireable<number>;
        lang: PropTypes.Requireable<string>;
        spellCheck: PropTypes.Requireable<boolean>;
        onFocus: PropTypes.Requireable<(...args: any[]) => any>;
        onBlur: PropTypes.Requireable<(...args: any[]) => any>;
        onClick: PropTypes.Requireable<(...args: any[]) => any>;
        onDoubleClick: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseUp: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseDown: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseMove: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseOver: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseOut: PropTypes.Requireable<(...args: any[]) => any>;
        onContextMenu: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyUp: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyPress: PropTypes.Requireable<(...args: any[]) => any>;
        dataSet: PropTypes.Requireable<object>;
        _inTable: PropTypes.Requireable<boolean>;
        type: PropTypes.Requireable<string>;
        name: PropTypes.Requireable<string>;
        value: PropTypes.Requireable<any>;
        defaultValue: PropTypes.Requireable<any>;
        required: PropTypes.Requireable<boolean>;
        readOnly: PropTypes.Requireable<boolean>;
        form: PropTypes.Requireable<string>;
        dataIndex: PropTypes.Requireable<number>;
        multiple: PropTypes.Requireable<boolean>;
        rowSpan: PropTypes.Requireable<number>;
        newLine: PropTypes.Requireable<boolean>;
        colSpan: PropTypes.Requireable<number>;
        validator: PropTypes.Requireable<(...args: any[]) => any>;
        onInvalid: PropTypes.Requireable<(...args: any[]) => any>;
        help: PropTypes.Requireable<string>;
        showHelp: PropTypes.Requireable<ShowHelp>;
        renderer: PropTypes.Requireable<(...args: any[]) => any>;
        validationRenderer: PropTypes.Requireable<(...args: any[]) => any>;
        maxTagPlaceholder: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
        maxTagCount: PropTypes.Requireable<number>;
        maxTagTextLength: PropTypes.Requireable<number>;
        pristine: PropTypes.Requireable<boolean>;
        trim: PropTypes.Requireable<import("../data-set/enum").FieldTrim>;
        onBeforeChange: PropTypes.Requireable<(...args: any[]) => any>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        onInput: PropTypes.Requireable<(...args: any[]) => any>;
        onEnterDown: PropTypes.Requireable<(...args: any[]) => any>;
        fieldClassName: PropTypes.Requireable<string>;
        /**
         * 占位词
         */
        placeholder: PropTypes.Requireable<string | (string | null | undefined)[]>;
        /**
         * 最小长度
         */
        minLength: PropTypes.Requireable<number>;
        /**
         * 最大长度
         */
        maxLength: PropTypes.Requireable<number>;
        /**
         * 正则校验
         */
        pattern: PropTypes.Requireable<string | object>;
        /**
         * 自动完成
         */
        autoComplete: PropTypes.Requireable<string>;
        /**
         * 前缀
         */
        prefix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        /**
         * 后缀
         */
        suffix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        /**
         * 是否显示清除按钮
         */
        clearButton: PropTypes.Requireable<boolean>;
        /**
         * 前置标签
         */
        addonBefore: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        /**
         * 后置标签
         */
        addonAfter: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        /**
         * 限制可输入的字符
         */
        restrict: PropTypes.Requireable<string>;
        /**
         * 是否是筛选条 flat 模式
         */
        isFlat: PropTypes.Requireable<boolean>;
        /**
         * 触发值变更的动作， default: blur
         */
        valueChangeAction: PropTypes.Requireable<ValueChangeAction>;
        /**
         * 值变更间隔时间，只有在valueChangeAction为input时起作用
         */
        wait: PropTypes.Requireable<number>;
        /**
         * 值变更间隔类型，可选值：throttle | debounce
         * @default throttle
         */
        waitType: PropTypes.Requireable<WaitType>;
        groupClassName: PropTypes.Requireable<string>;
    };
    static defaultProps: {
        suffixCls: string;
        clearButton: boolean;
        multiple: boolean;
        valueChangeAction: ValueChangeAction;
        waitType: WaitType;
        readOnly: boolean;
        disabled: boolean;
        noValidate: boolean;
        showHelp: string;
        trim: import("../data-set/enum").FieldTrim;
    };
    text?: string;
    type: string;
    tagContainer: HTMLUListElement | null;
    handleChangeWait: Function & Cancelable;
    constructor(props: any, context: any);
    componentWillReceiveProps(nextProps: any, nextContext: any): void;
    componentWillUnmount(): void;
    saveTagContainer(node: any): void;
    isEmpty(): boolean;
    getOtherProps(): Pick<Pick<Pick<any, string | number | symbol>, string | number | symbol>, string | number | symbol>;
    getValidatorProps(): ValidatorProps;
    getWrapperClassNames(...args: any[]): string;
    renderWrapper(): ReactNode;
    renderInputElement(): ReactNode;
    renderGroup(): ReactNode;
    renderTooltipHelp(): ReactNode;
    getPlaceholders(): string[];
    getLabel(): any;
    wrapGroupItem(node: ReactNode, category: GroupItemCategory): ReactNode;
    setRangeTarget(target: any): void;
    renderRangeEditor(props: any): JSX.Element;
    renderMultipleEditor(props: T): JSX.Element;
    getWrappedEditor(): ReactNode;
    getClassName(...props: any[]): string | undefined;
    /**
     * 处理 flat 多选tooltip text
     */
    getMultipleText(): string;
    getEditor(): ReactNode;
    getSuffix(): ReactNode;
    getDefaultSuffix(): ReactNode;
    wrapperSuffix(children: ReactNode, props?: any): ReactNode;
    getPrefix(): ReactNode;
    wrapperPrefix(children: ReactNode): ReactNode;
    renderMultipleHolder(): JSX.Element | undefined;
    getOtherPrevNode(): ReactNode;
    getOtherNextNode(): ReactNode;
    renderPlaceHolder(): ReactNode;
    renderRenderedValue(): ReactNode;
    getPlaceHolderNode(): ReactNode;
    getInnerSpanButton(): ReactNode;
    wrapperInnerSpanButton(children: ReactNode, props?: any): ReactNode;
    removeLastValue(): void;
    handleTagAnimateEnd(): void;
    handleTagAnimateEnter(): void;
    handleRangeStart(event: React.MouseEvent<HTMLInputElement, MouseEvent>): void;
    handleRangeEnd(event: React.MouseEvent<HTMLInputElement, MouseEvent>): void;
    handleKeyDown(e: any): void;
    handleMouseDown(e: any): void;
    handleClearButtonClick(e: any): void;
    handleFocus(e: any): void;
    handleBlur(e: any): void;
    handleInnerButtonMouseDown(e: any): void;
    setValue(value: any): void;
    getTextNode(): string;
    setText(text?: string): void;
    select(): void;
    getHandleChange(props: any): Function & Cancelable;
    handleChange(e: any): void;
    restrictInput(value: string): string;
    toValueString(value: any): string | undefined;
}
export default class ObserverTextField extends TextField<TextFieldProps> {
    static defaultProps: {
        suffixCls: string;
        clearButton: boolean;
        multiple: boolean;
        valueChangeAction: ValueChangeAction;
        waitType: WaitType;
        readOnly: boolean;
        disabled: boolean;
        noValidate: boolean;
        showHelp: string;
        trim: import("../data-set/enum").FieldTrim;
    };
}
