import { RenderResult } from '@dojo/framework/core/interfaces';
export declare type TextInputType = 'text' | 'email' | 'number' | 'password' | 'search' | 'tel' | 'url' | 'date';
export interface BaseInputProperties<T extends {
    value: any;
} = {
    value: string;
}> {
    /** Custom aria attributes */
    aria?: {
        [key: string]: string | null;
    };
    /** Should the field autocomplete */
    autocomplete?: boolean | string;
    /** The disabled property of the input */
    disabled?: boolean;
    /** Text to display below the input */
    helperText?: string;
    /** Hides the label for a11y purposes */
    labelHidden?: boolean;
    /** The name property of the input */
    name?: string;
    /** Callback fired when the input is blurred */
    onBlur?(): void;
    /** Callback fired when the input is focused */
    onFocus?(): void;
    /** Callback fired when a key is pressed down */
    onKeyDown?(key: number, preventDefault: () => void): void;
    /** Callback fired when a key is released */
    onKeyUp?(key: number, preventDefault: () => void): void;
    /** Callback fired when the input validation changes */
    onValidate?: (valid: boolean | undefined, message: string) => void;
    /** Callback fired when the input value changes */
    onValue?(value?: T['value']): void;
    /** Callback fired when the input is clicked */
    onClick?(): void;
    /** Callback fired when the pointer enters the input */
    onOver?(): void;
    /** Callback fired when the pointer leaves the input */
    onOut?(): void;
    /** Placeholder text */
    placeholder?: string;
    /** The readonly attribute of the input */
    readOnly?: boolean;
    /** The required attribute of the input */
    required?: boolean;
    /** The initial value */
    initialValue?: T['value'];
    /** The controlled value */
    value?: T['value'];
    /** The id to be applied to the input */
    widgetId?: string;
    /** The kind of input */
    kind?: 'outlined' | 'filled';
}
export interface TextInputChildren {
    /** The label to be displayed above the input */
    label?: RenderResult;
    /** Renderer for leading content */
    leading?: RenderResult;
    /** Renderer for trailing content */
    trailing?: RenderResult;
}
export interface TextInputProperties extends BaseInputProperties {
    /** Custom validator used to validate the contents of the input */
    customValidator?: (value: string) => {
        valid?: boolean;
        message?: string;
    } | void;
    /** The min value a number can be */
    min?: number | string;
    /** The max value a number can be */
    max?: number | string;
    /** The step to increment the number value by */
    step?: number | string;
    /** Maximum number of characters allowed in the input */
    maxLength?: number | string;
    /** Minimum number of characters allowed in the input */
    minLength?: number | string;
    /** Pattern used as part of validation */
    pattern?: string | RegExp;
    /** Input type, e.g. text, email, tel, etc. */
    type?: TextInputType;
    /** Represents if the input value is valid */
    valid?: {
        valid?: boolean;
        message?: string;
    } | boolean;
}
export declare const TextInput: import("@dojo/framework/core/interfaces").OptionalWNodeFactory<{
    properties: TextInputProperties & import("@dojo/framework/core/interfaces").WidgetProperties & {
        variant?: "default" | "inherit" | undefined;
    } & import("@dojo/framework/core/middleware/theme").ThemeProperties & import("@dojo/framework/core/interfaces").FocusProperties;
    children: TextInputChildren;
}>;
export default TextInput;
