import React from 'react';
import type { GetItemPropsOptions, StateChangeOptions } from 'downshift';
import type { ListenerAction, Option } from 'jamis-core';
import type { InputTextProps } from '../types';
interface TextState {
    isOpen?: boolean;
    inputValue?: string;
    isFocused?: boolean;
    revealPassword?: boolean;
}
export default class TextControl extends React.PureComponent<InputTextProps, TextState> {
    static defaultProps: Partial<InputTextProps>;
    input?: HTMLInputElement;
    highlightedIndex?: any;
    unHook: Function;
    /**
     * 发出了change事件的value值, 用于避免重复发出
     */
    valueEmitedChangeEvent: any;
    handleNormalInputChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
    constructor(props: InputTextProps);
    componentDidMount(): void;
    componentDidUpdate(prevProps: InputTextProps): void;
    componentWillUnmount(): void;
    dispatchChangeEvent: (moreData: Record<string, any>) => Promise<void | import("jamis-core").RendererEvent<any, any>>;
    inputRef(ref: any): void;
    doAction(action: ListenerAction, args: any): void;
    focus: () => void;
    clearValue: () => Promise<void>;
    removeItem(index: number): void;
    handleClick: () => Promise<void>;
    handleFocus: (e: any) => Promise<void>;
    handleBlur: (e: any) => Promise<void>;
    handleInputChange: (evt: React.ChangeEvent<HTMLInputElement>) => Promise<void>;
    /**
     * 创建新的option
     */
    createNewOption: () => Promise<void>;
    handleKeyDown: (evt: React.KeyboardEvent<HTMLInputElement>) => Promise<void>;
    handleChange: (value: any) => Promise<void>;
    handleStateChange: (changes: StateChangeOptions<any>) => void;
    /** 同时支持防抖和不防抖设置的change事件通知函数 */
    handleNormalInputChangeWrap: (emitChangeDelay: InputTextProps["emitChangeDelay"]) => ((e: React.ChangeEvent<HTMLInputElement>) => Promise<void>) | import("lodash").DebouncedFunc<(e: React.ChangeEvent<HTMLInputElement>) => Promise<void>>;
    normalizeValue(value: Option[] | Option | undefined | null): any;
    transformValue(value: string): string;
    loadAutoComplete(): void;
    reload(): void;
    valueToString(value: any): string;
    toggleRevealPassword: () => void;
    makeTextInputClass: () => import("jamis-core").ClassValue[];
    renderSugItem: (option: Option, { getItemProps, indices, highlightedIndex }: {
        getItemProps: (options: GetItemPropsOptions<any>) => any;
        indices: any;
        highlightedIndex: number | null;
    }) => JSX.Element;
    renderSugestMode: () => JSX.Element;
    renderNormal: () => JSX.Element;
    renderAddOn: () => JSX.Element | null;
    render(): JSX.Element;
}
export declare function mapItemIndex(items: Array<any>, values: Array<any>, valueField?: string): any;
export declare class TextControlRenderer extends TextControl {
}
export declare class PasswordControlRenderer extends TextControl {
}
export declare class EmailControlRenderer extends TextControl {
}
export declare class UrlControlRenderer extends TextControl {
}
export declare class NativeDateControlRenderer extends TextControl {
}
export declare class NativeTimeControlRenderer extends TextControl {
}
export declare class NativeNumberControlRenderer extends TextControl {
}
export {};
