import { WidgetBase } from '@dojo/framework/core/WidgetBase';
import { DNode } from '@dojo/framework/core/interfaces';
import { ThemedMixin, ThemedProperties } from '@dojo/framework/core/mixins/Themed';
import { FocusMixin, FocusProperties } from '@dojo/framework/core/mixins/Focus';
import { CustomAriaProperties, PointerEventProperties, KeyEventProperties, InputEventProperties } from '../common/interfaces';
export declare type TextInputType = 'text' | 'email' | 'number' | 'password' | 'search' | 'tel' | 'url' | 'date';
/**
 * @type IconProperties
 *
 * Properties that can be set on a TextInput component
 *
 * @property controls       ID of an element that this input controls
 * @property type           Input type, e.g. text, email, tel, etc.
 * @property maxLength      Maximum number of characters allowed in the input
 * @property minLength      Minimum number of characters allowed in the input
 * @property placeholder    Placeholder text
 * @property value          The current value
 * @property leading		Renderer for leading icon content
 * @property trailing		Renderer for trailing icon content
 */
export interface TextInputProperties extends ThemedProperties, FocusProperties, PointerEventProperties, KeyEventProperties, InputEventProperties, CustomAriaProperties {
    disabled?: boolean;
    widgetId?: string;
    name?: string;
    readOnly?: boolean;
    required?: boolean;
    controls?: string;
    type?: TextInputType;
    maxLength?: number | string;
    minLength?: number | string;
    placeholder?: string;
    helperText?: string;
    value?: string;
    valid?: {
        valid?: boolean;
        message?: string;
    } | boolean;
    customValidator?: (value: string) => {
        valid?: boolean;
        message?: string;
    } | void;
    pattern?: string | RegExp;
    autocomplete?: boolean | string;
    onClick?(value: string): void;
    onValidate?: (valid: boolean | undefined, message: string) => void;
    leading?: () => DNode;
    trailing?: () => DNode;
    labelHidden?: boolean;
    label?: string;
}
declare const TextInput_base: import("@dojo/framework/core/interfaces").Constructor<ThemedMixin<{}>> & typeof WidgetBase & import("@dojo/framework/core/interfaces").Constructor<FocusMixin>;
export declare class TextInput extends TextInput_base<TextInputProperties> {
    private _onBlur;
    private _onChange;
    private _onClick;
    private _onFocus;
    private _onInput;
    private _onKeyDown;
    private _onKeyPress;
    private _onKeyUp;
    private _onMouseDown;
    private _onMouseUp;
    private _onTouchStart;
    private _onTouchEnd;
    private _onTouchCancel;
    private _callOnValidate;
    private _validate;
    protected readonly validity: {
        valid: boolean | undefined;
        message: string | undefined;
    };
    private _uuid;
    private _state;
    protected getRootClasses(): (string | null)[];
    protected render(): DNode;
}
export default TextInput;
