import { CSSProperties, DetailedHTMLProps, HTMLAttributes, Key, ReactNode } from 'react';
import { DebouncedFunc } from 'lodash';
import { Tooltip as TextTooltip, WaitType } from '../core/enum';
import { FormField, FormFieldProps } from '../field/FormField';
import { GroupItemCategory, ValueChangeAction } from './enum';
import { ShowHelp } from '../field/enum';
import Record from '../data-set/Record';
import { RenderedTextProps } from './RenderedText';
import { TooltipProps } from '../tooltip/Tooltip';
export declare function isPlaceHolderSupport(): boolean;
export interface TextFieldProps<V = any> extends FormFieldProps<V> {
    /**
     * 占位词
     */
    placeholder?: string | string[];
    /**
     * 最小长度
     */
    minLength?: number;
    /**
     * 最大长度
     */
    maxLength?: number;
    /**
     * 正则校验
     */
    pattern?: string | RegExp;
    /**
     * 自动完成
     */
    autoComplete?: string;
    /**
     * 前缀
     */
    prefix?: ReactNode;
    /**
     * 后缀
     */
    suffix?: ReactNode;
    /**
     * 是否显示清除按钮
     */
    clearButton?: boolean;
    /**
     * 前置标签
     */
    addonBefore?: ReactNode;
    /**
     * 前置标签样式
     */
    addonBeforeStyle?: CSSProperties;
    /**
     * 后置标签
     */
    addonAfter?: ReactNode;
    /**
     * 后置标签样式
     */
    addonAfterStyle?: CSSProperties;
    /**
     * 限制可输入的字符
     */
    restrict?: string | RegExp;
    /**
     * 是否是筛选条 flat 模式
     */
    isFlat?: boolean;
    /**
     * 触发值变更的动作， default: blur
     */
    valueChangeAction?: ValueChangeAction;
    /**
     * 值变更间隔时间，只有在valueChangeAction为input时起作用
     */
    wait?: number;
    /**
     * 值变更间隔类型，可选值：throttle | debounce
     * @default throttle
     */
    waitType?: WaitType;
    groupClassName?: string;
    /**
     * 是否显示长度信息
     */
    showLengthInfo?: boolean;
    /**
     * 是否显示边框
     * @default true
     */
    border?: boolean;
    /**
     * 用tooltip显示输入框内容（禁用模式下生效）
     * 可选值：`none` `always` `overflow` 或自定义 tooltip
     * 配置自定义tooltip属性：tooltip={['always', { theme: 'light', ... }]}
     */
    tooltip?: TextTooltip | [TextTooltip, TooltipProps];
}
export declare class TextField<T extends TextFieldProps> extends FormField<T> {
    static displayName: string;
    static defaultProps: {
        suffixCls: string;
        clearButton: boolean;
        multiple: boolean;
        border: boolean;
        valueChangeAction: ValueChangeAction;
        waitType: WaitType;
        readOnly: boolean;
        disabled: boolean;
        noValidate: boolean;
        trim: import("../data-set/enum").FieldTrim;
    };
    text?: string;
    type: string;
    renderedValue: ReactNode;
    tagContainer: HTMLUListElement | null;
    handleChangeWait: DebouncedFunc<(...value: any[]) => void>;
    addonAfterRef?: HTMLDivElement | null;
    addonBeforeRef?: HTMLDivElement | null;
    suffixRef?: HTMLDivElement | null;
    renderedText?: {
        text: string;
        width: number;
    } | undefined;
    renderedStartText?: {
        text: string;
        width: number;
    } | undefined;
    renderedEndText?: {
        text: string;
        width: number;
    } | undefined;
    prefixWidth?: number;
    lengthElement?: ReactNode;
    lengthInfoWidth?: number;
    suffixWidth?: number;
    isSuffixClick?: boolean;
    lastAnimationRecord?: Record;
    get clearButton(): boolean;
    /**
     * 是否显示长度信息
     */
    get showLengthInfo(): boolean | undefined;
    get showHelp(): ShowHelp;
    get border(): boolean | undefined;
    constructor(props: any, context: any);
    handleRenderedValueChange(text: string, width: number, rangeTarget?: 0 | 1): void;
    clearRenderedText(rangeTarget?: 0 | 1): void;
    componentWillReceiveProps(nextProps: any, nextContext: any): void;
    componentWillUnmount(): void;
    saveTagContainer(node: any): void;
    saveAddonAfterRef(node: any): void;
    saveAddonBeforeRef(node: any): void;
    saveSuffixRef(node: any): any;
    measureTextWidth(text: string): number;
    getEditorTextInfo(rangeTarget?: 0 | 1): {
        text: string;
        width: number;
        placeholder?: string;
    };
    isRenderEmpty(): boolean;
    isEmpty(): boolean;
    getOmitPropsKeys(): string[];
    getOtherProps(): any;
    forceBlur(e: any): void;
    handleAddonBeforeKeyDown(e: any): void;
    handleAddonAfterKeyDown(e: any): void;
    handleMultipleMouseEnter(e: any): void;
    handleMultipleMouseLeave(): void;
    handleHelpMouseEnter(e: any): void;
    handleHelpMouseLeave(): void;
    getWrapperClassNames(...args: any[]): string;
    renderWrapper(): ReactNode;
    getRenderedValue(): ReactNode;
    showTooltip(e: any): boolean;
    renderInputElement(): ReactNode;
    renderGroup(): ReactNode;
    renderTooltipHelp(): ReactNode;
    renderLengthInfo(maxLength?: number, inputLength?: number): ReactNode;
    getPlaceholders(): string[];
    wrapGroupItem(node: ReactNode, category: GroupItemCategory, props?: DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, childrenProps?: any): ReactNode;
    setRangeTarget(target: any): void;
    renderRangeEditor(props: any): JSX.Element;
    getRangeInputValue(startText: string, endText: string): string;
    getInputClassString(className: string): string;
    renderMultipleEditor(props: T): JSX.Element;
    getWrappedEditor(renderedValue?: ReactNode): ReactNode;
    getClassName(...props: any[]): string | undefined;
    /**
     * 处理 flat 多选tooltip text
     */
    getMultipleText(): string;
    getEditor(wrap: (node: ReactNode) => ReactNode, renderedValue?: ReactNode): ReactNode;
    getSuffixWidth(): number | undefined;
    setInputStylePadding(otherProps: any): void;
    renderLengthElement(): void;
    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(value: any | undefined, props: RenderedTextProps & {
        key?: Key;
    }): ReactNode;
    getPlaceHolderNode(): ReactNode;
    getInnerSpanButton(): ReactNode;
    wrapperInnerSpanButton(children: ReactNode, props?: any): ReactNode;
    handleTagAnimateEnd(): void;
    handleTagAnimateEnter(): void;
    handleRangeStart(event: any): void;
    handleRangeEnd(event: any): 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, noVaidate?: boolean, reserveParam?: boolean): void;
    getTextNode(value?: any): {} | null | undefined;
    setText(text?: string): void;
    select(): void;
    getHandleChange(props: any): DebouncedFunc<(...value: any[]) => void>;
    handleChange(e: any): void;
    restrictInput(value: string): string;
    toValueString(value: any): string | undefined;
    isValidInput(_input: string): boolean;
}
export default class ObserverTextField extends TextField<TextFieldProps> {
    static defaultProps: {
        suffixCls: string;
        clearButton: boolean;
        multiple: boolean;
        border: boolean;
        valueChangeAction: ValueChangeAction;
        waitType: WaitType;
        readOnly: boolean;
        disabled: boolean;
        noValidate: boolean;
        trim: import("../data-set/enum").FieldTrim;
    };
}
