import { EventEmitter } from "../../stencil-public-runtime";
export type InputType = 'email' | 'number' | 'numeric' | 'password' | 'search' | 'tel' | 'text' | 'url' | 'color' | 'amount' | 'otp';
export type InputEnterKeyHintType = 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send';
export type InputModeType = 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search';
export type InputAutocompleteTypes = 'on' | 'off' | 'name' | 'honorific-prefix' | 'given-name' | 'additional-name' | 'family-name' | 'honorific-suffix' | 'nickname' | 'email' | 'username' | 'new-password' | 'current-password' | 'one-time-code' | 'organization-title' | 'organization' | 'street-address' | 'address-line1' | 'address-line2' | 'address-line3' | 'address-level4' | 'address-level3' | 'address-level2' | 'address-level1' | 'country' | 'country-name' | 'postal-code' | 'cc-name' | 'cc-given-name' | 'cc-additional-name' | 'cc-family-name' | 'cc-number' | 'cc-exp' | 'cc-exp-month' | 'cc-exp-year' | 'cc-csc' | 'cc-type' | 'transaction-currency' | 'transaction-amount' | 'language' | 'bday' | 'bday-day' | 'bday-month' | 'bday-year' | 'sex' | 'tel' | 'tel-country-code' | 'tel-national' | 'tel-area-code' | 'tel-local' | 'tel-extension' | 'impp' | 'url' | 'photo';
export type InputAutocapitalizeTypes = 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters';
export declare class XInput {
    /**
     * Typing timer instance
     */
    private typingTimer;
    /**
     * Typing input event instance
     */
    private typingEvent;
    /**
     * Element ID for internal reference
     */
    private inputId;
    /**
     * IMask instance
     */
    private maskInstance;
    /**
     * Element input label text
     */
    label?: string;
    /**
     * Element input name for forms keys
     */
    name?: string;
    /**
     * Element input type
     */
    type: InputType;
    /**
     * Element input placeholder text
     */
    placeholder?: string;
    /**
     * Element input information block
     */
    info?: string;
    /**
     * Element input debounce time
     */
    typingtimeout: number;
    /**
     * Element enable internal validation
     */
    validate: boolean;
    /**
     * Element input required for forms validations
     */
    required: boolean;
    /**
     * Element show loading and block for edit
     */
    loading: boolean;
    /**
     * Element input block for edit
     */
    readonly: boolean;
    /**
     * Element input clear button
     */
    cleanable: boolean;
    /**
     * Element autofocus on render
     */
    autofocus: boolean;
    /**
     * Element input autocapitalize options
     */
    capitalize: InputAutocapitalizeTypes;
    /**
     * Element input auto correction should be enabled
     */
    autocorrect: 'on' | 'off';
    /**
     * Element input regular expression that the value is checked against
     */
    pattern?: string;
    /**
     * Element input value of the control can be automatically completed by the browser
     */
    autocomplete: InputAutocompleteTypes;
    /**
     * Element input hint to the browser for which enter key to display
     */
    enterkeyhint?: InputEnterKeyHintType;
    /**
     * Element input hint to the browser for which keyboard to display
     */
    inputmode?: InputModeType;
    /**
     * Element input maximun value
     */
    max?: number;
    /**
     * Element input minimun value
     */
    min?: number;
    /**
     * Element input value in steps only for numeric|number type
     */
    step?: number;
    /**
     * Element input maximun count of characters
     */
    maxlength?: number;
    /**
     * Element input minimun count of characters
     */
    minlength?: number;
    /**
     * Element input imaks pattern/options
     */
    mask?: string | Object;
    /**
     * Element input value
     */
    value?: string | number | null;
    /**
     * Input type modifier
     */
    inputType: InputType;
    /**
     * Form input validation state
     */
    isValid: boolean;
    /**
     * Input typing state
     */
    isTyping: boolean;
    /**
     * input focus state
     */
    isFocused: boolean;
    /**
     * Input loading state
     */
    isLoading: boolean;
    /**
     * Input diabled state
     */
    isDisabled: boolean;
    /**
     * On watch mask pattern/options
     */
    protected maskChanged(): void;
    /**
     * On watch type property hook
     */
    protected typeChanged(): void;
    /**
     * On done input typing finish event
     */
    onDoneTypingEvent: EventEmitter<any>;
    /**
     * On clear input event
     */
    onClearInputEvent: EventEmitter<any>;
    /**
     * On validate input event
     */
    onValidateInputEvent: EventEmitter<HTMLObjectElement>;
    /**
     * Element reference
     */
    el: HTMLElement;
    /**
     * Element internal
     */
    internals: ElementInternals;
    /**
     * Set the value of the input
     */
    setValue(value: string): Promise<void>;
    /**
     * Validate the input and get the validation result
    */
    checkValidity(): Promise<boolean>;
    /**
     * This is called when the 'disabled' attribute of the element or or an ancestor <fieldset> is updated
     *
     * @param disabled
     */
    formDisabledCallback(disabled: boolean): void;
    /**
     * This is called when the parent/owner form is reset
     */
    formResetCallback(): void;
    /**
     * This is called on component before load
     */
    componentWillLoad(): void;
    /**
     * This is called on component did load
     */
    componentDidLoad(): void;
    /**
     * Set element value by event
     *
     * @param event
     */
    onInput(event: any): void;
    /**
     * This called on input field is unfocused
     */
    onBlurInput(): void;
    /**
     * This called on input field is focused
     */
    onFocusInput(): void;
    /**
     * This called on input field was changed
     *
     * @param event
     */
    onKeyUpInput(event: any): void;
    /**
     * This called on input field detect key is down
     */
    onKeyDownInput(event: KeyboardEvent): void;
    /**
     * This called on input field finished typing
     */
    onDoneTypingInput(): void;
    /**
     * Validate the field input
     *
     * @returns
     */
    onValidate(): void;
    /**
     * Return validation of showing the input label
     *
     * @returns
     */
    showLabel(): string | boolean;
    /**
     * Compute the placeholder value
     *
     * @returns
     */
    placeholderValue(): string;
    /**
     * Show the content of input when type is `password`
     *
     * @returns
     */
    togglePasswordVisibility(): void;
    /**
     * Sumarize the actual value if type is `numeric`
     *
     * @returns
     */
    sumValue(): void;
    /**
     * Substract the actual value if type is `numeric`
     *
     * @returns
     */
    subValue(): void;
    /**
     * Validate the initials values of the input by type
     */
    validateInputType(): void;
    /**
     * Clears the input value
     */
    clearInput(): void;
    /**
     * Paste the clipboard content to the input
     */
    pasteClipboard(): void;
    /**
     * Render component
     */
    render(): any;
}
