import { EventEmitter } from '../../../stencil-public-runtime';
import { SizesType } from './constants';
import { FormAutocompleteEvent, GovFormAutocompleteItem } from './gov-form-autocomplete.types';
import { Attributes } from "../../../helpers/Dom/attribute";
export declare class GovFormAutocomplete {
    private inputRef?;
    private listRef?;
    private readonly listBoxId;
    private searchCallback;
    private templateResolver;
    private attributeObserver;
    constructor();
    host: HTMLGovFormInputElement;
    /**
     * Value of input
     */
    value: string;
    /**
     * Options of autocomplete
     */
    options?: string | GovFormAutocompleteItem[];
    /**
     * Custom input identifier.
     */
    readonly identifier: string;
    /**
     * Indicates the entered value of child form element does conform to the format expected by the application.
     */
    readonly success: boolean;
    /**
     * Input’s size.
     */
    readonly size?: SizesType;
    /**
     * Main key name in the object
     */
    readonly nameKey: string;
    /**
     * Name of the input.
     */
    readonly name: string;
    /**
     * Set whether the input is required or not. Please note that this is necessary for accessible inputs when the user is required to fill them.
     * When using this property you need to also set “novalidate” attribute to your form element to prevent browser from displaying its own validation errors.
     */
    readonly required: boolean;
    /**
     * Makes the input component disabled.
     * This prevents users from being able to interact with the select, and conveys its inactive state to assistive technologies.
     */
    readonly disabled: boolean;
    /**
     * Text that appears in the form control when it has no value set
     */
    readonly placeholder: string;
    /**
     * The value is not editable
     */
    readonly readonly: boolean;
    /**
     * Indicates the entered value does not conform to the format expected by the application.
     */
    readonly invalid: boolean;
    /**
     * Minimum length (number of characters) of value
     */
    readonly minlength: number;
    /**
     * Maximum length (number of characters) of value
     */
    readonly maxlength: number;
    /**
     * Input throttle in milliseconds
     */
    readonly throttleTime: number;
    /**
     * Custom message for when there is a blank sheet
     */
    readonly messageEmpty: string;
    /**
     * Emitted when the input has focus.
     */
    govFocus: EventEmitter<FormAutocompleteEvent>;
    /**
     * Emitted when the input loses focus.
     */
    govBlur: EventEmitter<FormAutocompleteEvent>;
    /**
     * Emitted when the input change value.
     */
    govInput: EventEmitter<FormAutocompleteEvent>;
    /**
     * Emitted when the input change value.
     */
    govSelect: EventEmitter<FormAutocompleteEvent>;
    focused: boolean;
    processing: boolean;
    arrowCounter: number;
    list: GovFormAutocompleteItem[];
    inheritedAttributes: Attributes;
    validateSize(newValue: string): void;
    watchOptions(newValue: string | GovFormAutocompleteItem[]): void;
    private onArrowUp;
    private onArrowDown;
    private moveToView;
    private doSearch;
    private clearList;
    get isValueAccepted(): boolean;
    componentDidLoad(): void;
    componentWillLoad(): void;
    disconnectedCallback(): void;
    onAriaAttributeChange(attributeName: string, newValue: string): void;
    render(): any;
    private onFocusHandler;
    private onBlurHandler;
    private onInputHandler;
    private onSelectHandler;
    private onKeyUpHandler;
    private onKeyDownHandler;
    /**
     * Focus main input element
     */
    setFocus(options?: FocusOptions): Promise<void>;
    /**
     * Blur main input element
     */
    setBlur(): Promise<void>;
    /**
     * Set options for list
     */
    setOptions(options: GovFormAutocompleteItem[]): Promise<void>;
    /**
     * Clears whisperer value
     */
    clearValue(): Promise<void>;
    /**
     * Clears whisperer value
     */
    setProcessing(status: boolean): Promise<void>;
    /**
     * Set a custom asynchronous function for the whisperer
     */
    setSearchCallback(callback: (value: string) => Promise<any>): Promise<void>;
    /**
     * Setting a custom whisper result template
     * @param callback
     */
    setTemplateResolver(callback: (item: GovFormAutocompleteItem) => string): Promise<void>;
}
