import { ScanditHTMLElement } from '@scandit/web-datacapture-core/build/js/private/utils/index.js';

type TextInputType = "text" | "date" | "currency" | "number";
declare class TextInput extends ScanditHTMLElement {
    static tag: "scandit-text-input";
    private _inputElement;
    private _labelText;
    private _labelContainer;
    private _errorMessageElement;
    private _iconContainerElement;
    private _type;
    private _value;
    private _label;
    private _locale;
    private _currencyCode;
    private _required;
    private _loadingText;
    private _beforeLoadingState;
    private _handleChange;
    private _handleInput;
    private _handleFocus;
    private _handleBlur;
    private _handleCrossIconClick;
    private _handleAimerIconClick;
    private _handleKeyboardIconClick;
    private _crossIcon;
    private _aimerIcon;
    private _intlFormatter;
    private _keyboardIcon;
    private _showKeyboardTimeout;
    constructor();
    get value(): string;
    set value(val: string);
    get name(): string;
    set name(val: string);
    get type(): TextInputType;
    set type(val: TextInputType);
    get label(): string;
    set label(val: string);
    get locale(): string;
    set locale(val: string);
    get currencyCode(): string;
    set currencyCode(val: string);
    get required(): boolean;
    set required(val: boolean);
    get invalid(): boolean;
    set invalid(val: boolean);
    get errorMessage(): string;
    set errorMessage(val: string);
    set loading(show: boolean);
    get loading(): boolean;
    set loadingText(text: string);
    get loadingText(): string;
    private _formatValue;
    private _onInput;
    private _onChange;
    private _onFocus;
    private _onBlur;
    focus(options?: FocusOptions): void;
    /**
     * Show the keyboard and focus on the input element after a delay.
     * This trick is needed because the keyboard is not opened when the input element is focused
     * on mobile devices.
     * @param timeout - The timeout to focus on the input element
     */
    showKeyboard(timeout?: number, callback?: () => void): void;
    hideKeyboard(): void;
    select(): void;
    blur(): void;
    scrollIntoView(options?: ScrollIntoViewOptions): void;
    connectedCallback(): void;
    disconnectedCallback(): void;
    private _setupEventListeners;
    private _removeEventListeners;
    private _onCrossIconClick;
    private _onAimerIconClick;
    private _onKeyboardIconClick;
    private _updateIconVisibility;
    static create(): TextInput;
    static register(): void;
    private static createStyleElement;
}
declare global {
    interface HTMLElementTagNameMap {
        [TextInput.tag]: TextInput;
    }
    interface HTMLElementEventMap {
        "text-input-change": CustomEvent<{
            value: string;
            formattedValue: string;
        }>;
        "text-input-aimer-icon-click": CustomEvent<{
            target: TextInput;
            innerInput: HTMLInputElement;
        }>;
        "text-input-keyboard-icon-click": CustomEvent<{
            target: TextInput;
            innerInput: HTMLInputElement;
        }>;
        "text-input-focus": CustomEvent<{
            target: TextInput;
            innerInput: HTMLInputElement;
        }>;
        "text-input-blur": CustomEvent<{
            target: TextInput;
            innerInput: HTMLInputElement;
        }>;
        "text-input-clear-icon-click": CustomEvent<{
            target: TextInput;
            innerInput: HTMLInputElement;
        }>;
        "text-input-click": CustomEvent<{
            target: TextInput;
            innerInput: HTMLInputElement;
        }>;
    }
}

export { TextInput, type TextInputType };
