import { InputType } from '../input-field/input-field.types';
/**
 * @exampleComponent limel-example-input-field-text
 * @exampleComponent limel-example-input-field-placeholder
 * @exampleComponent limel-example-input-field-text-multiple
 * @exampleComponent limel-example-input-field-number
 * @exampleComponent limel-example-input-field-autocomplete
 * @exampleComponent limel-example-input-field-icon-leading
 * @exampleComponent limel-example-input-field-icon-trailing
 * @exampleComponent limel-example-input-field-icon-both
 * @exampleComponent limel-example-input-field-showlink
 * @exampleComponent limel-example-input-field-error-icon
 * @exampleComponent limel-example-input-field-textarea
 * @exampleComponent limel-example-input-field-suffix
 * @exampleComponent limel-example-input-field-prefix
 * @exampleComponent limel-example-input-field-search
 * @exampleComponent limel-example-input-field-pattern
 * @exampleComponent limel-example-input-field-focus
 * @exampleComponent limel-example-input-field-selection
 */
export declare class InputField {
    /**
     * Set to `true` to disable the field.
     * Use `disabled` to indicate that the field can normally be interacted
     * with, but is currently disabled. This tells the user that if certain
     * requirements are met, the field may become enabled again.
     */
    disabled: boolean;
    /**
     * Set to `true` to make the field read-only.
     * Use `readonly` when the field is only there to present the data it holds,
     * and will not become possible for the current user to edit.
     */
    readonly: boolean;
    /**
     * Set to `true` to indicate that the current value of the input field is
     * invalid.
     */
    invalid: boolean;
    /**
     * The input label.
     */
    label: string;
    /**
     * The placeholder text shown inside the input field, when the field is focused and empty.
     */
    placeholder: string;
    /**
     * Optional helper text to display below the input field when it has focus
     */
    helperText: string;
    /**
     * A short piece of text to display before the value inside the input field.
     * Displayed for all types except `textarea`.
     */
    prefix: string;
    /**
     * A short piece of text to display after the value inside the input field.
     * Displayed for all types except `textarea`.
     */
    suffix: string;
    /**
     * Set to `true` to indicate that the field is required.
     */
    required: boolean;
    /**
     * The value of the field.
     */
    value: string;
    /**
     * Trailing icon to show to the far right in the field.
     */
    trailingIcon: string;
    /**
     * Leading icon to show to the far left in the field.
     */
    leadingIcon: string;
    /**
     * Regular expression that the current value of the input field must match.
     * No forward slashes should be specified around the pattern.
     * Only used if type is `text`, `tel`, `email`, `url`, `urlAsText`,
     * `password`, or `search`.
     */
    pattern: string;
    /**
     * Type of input.
     *
     * Note** regarding type `url`: `limel-input` uses the native validation
     * built into the browser for many types of input fields. The native
     * validation for `url` is very strict, and does not allow relative urls,
     * nor any other formats that are not a "fully qualified" url. To allow
     * such urls, use the type `urlAsText` instead. `urlAsText` works exactly
     * like `text` in all regards, except that it enables use of the `showLink`
     * property.
     */
    type: InputType;
    /**
     * Set to `true` to format the current value of the input field only
     * if the field is of type number.
     * The number format is determined by the current language of the browser.
     */
    formatNumber: boolean;
    /**
     * Defines which numeric values are valid and the increment/decrement interval.
     * For example, `step={0.1}` allows decimals and steps by 0.1.
     * Set to `'any'` to allow any numeric value.
     * Only applies when `type` is `number`.
     */
    step: number | 'any';
    /**
     * Maximum allowed value if input type is `number`.
     */
    max: number;
    /**
     * Minimum allowed value if input type is `number`.
     */
    min: number;
    /**
     * Maximum length of the value if type is `password`, `search`, `tel`,
     * `text`, `url`, or `urlAsText`.
     */
    maxlength: number;
    /**
     * Minimum length of the value if type is `password`, `search`, `tel`,
     * `text`, `url`, or `urlAsText`.
     */
    minlength: number;
    /**
     * list of suggestions `value` can autocomplete to.
     */
    completions: string[];
    /**
     * For inputs of type `email`, `tel`, `url`, and `urlAsText`, set this to
     * `true` to show a trailing icon with a `mailto:`,`tel:`, or normal link,
     * respectively. The default icon can be overridden using the `trailingIcon`
     * property.
     */
    showLink: boolean;
    /**
     * The locale to use for formatting numbers.
     */
    locale: string;
    /**
     * Emitted when the input value is changed.
     */
    private change;
    /**
     * Emitted when `trailingIcon` or `leadingIcon` is set
     * and the icon is interacted with.
     */
    private action;
    private limelInputField;
    private isFocused;
    private wasInvalid;
    showCompletions: boolean;
    private inputElement?;
    private mdcTextField;
    private completionsList;
    private portalId;
    private helperTextId;
    private labelId;
    private changeWaiting;
    constructor();
    connectedCallback(): void;
    componentDidLoad(): void;
    disconnectedCallback(): void;
    componentDidUpdate(): void;
    /**
     * Returns the start position of the current text selection.
     * Returns `null` if the input element is not available or if
     * the input type does not support selection (e.g., `number`).
     */
    getSelectionStart(): Promise<number | null>;
    /**
     * Returns the end position of the current text selection.
     * Returns `null` if the input element is not available or if
     * the input type does not support selection (e.g., `number`).
     */
    getSelectionEnd(): Promise<number | null>;
    /**
     * Returns the direction of the current text selection.
     * Can be `'forward'`, `'backward'`, or `'none'`.
     * Returns `null` if the input element is not available or if
     * the input type does not support selection (e.g., `number`).
     */
    getSelectionDirection(): Promise<'forward' | 'backward' | 'none' | null>;
    render(): any;
    protected valueWatcher(newValue: string): void;
    protected completionsWatcher(): void;
    private initialize;
    private mapCompletions;
    private setFocus;
    private getContainerClassList;
    private isEmpty;
    private getCurrentValue;
    private renderInput;
    private renderTextarea;
    private layout;
    private restyleCompletionsDropDown;
    private getAdditionalProps;
    private onFocus;
    private onBlur;
    private get validationMessage();
    private hasHelperText;
    private hasHelperLine;
    private renderHelperLine;
    private renderSuffix;
    private hasSuffix;
    private renderPrefix;
    private hasPrefix;
    private isInvalid;
    private validate;
    private setInputElement;
    private renderLeadingIcon;
    private renderTrailingLinkOrButton;
    private hasLink;
    private getLink;
    private renderLinkIcon;
    private renderTrailingIcon;
    private getTrailingIcon;
    private renderFormattedNumber;
    /**
     * Key handler for the input field
     * Will change focus to the first/last item in the dropdown list to enable selection with the keyboard
     *
     * @param event - event
     */
    private onKeyDown;
    private handleCompletionChange;
    private renderAutocompleteList;
    private renderListResult;
    private handleKeyDownInDropdown;
    private handleCloseMenu;
    private filterCompletions;
    private handleInput;
    private changeEmitter;
    private handleChange;
    private handleIconClick;
    private handleIconKeyPress;
    private handleWheel;
}
//# sourceMappingURL=input-field.d.ts.map