/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { IListItemComponent } from '../list';
import { IListDropdownConfig, IListDropdownOption, IListDropdownOptionGroup, ListDropdownOptionGroupBuilder } from '../list-dropdown';
import { IPopupPosition } from '../popup';
export declare const AUTOCOMPLETE_CONSTANTS: {
    elementName: "forge-autocomplete";
    attributes: {
        MODE: string;
        MULTIPLE: string;
        DEBOUNCE: string;
        FILTER_ON_FOCUS: string;
        FILTER_FOCUS_FIRST: string;
        ALLOW_UNMATCHED: string;
        POPUP_TARGET: string;
        POPUP_CLASSES: string;
        OPTION_LIMIT: string;
        OBSERVE_SCROLL: string;
        OBSERVE_SCROLL_THRESHOLD: string;
        SYNC_POPUP_WIDTH: string;
        OPEN: string;
        MATCH_KEY: string;
        FILTER_TEXT: string;
        DROPDOWN_ICON_OPEN: string;
    };
    selectors: {
        INPUT: string;
        DROPDOWN_ICON: string;
        CLEAR_BUTTON: string;
    };
    numbers: {
        DEFAULT_DEBOUNCE_TIME: number;
        NUM_SKELETON_ITEMS: number;
    };
    events: {
        CHANGE: string;
        SELECT: string;
        SCROLLED_BOTTOM: string;
    };
};
export declare type AutocompleteOptionBuilder<T = any> = (option: IAutocompleteOption<T>, filterText: string, parentElement: IListItemComponent) => HTMLElement;
export declare type AutocompleteOptionGroupBuilder<T = any> = ListDropdownOptionGroupBuilder<T>;
export declare type AutocompleteFilterCallback<T = any> = (filterText: string, value: T | null) => IAutocompleteOption<T>[] | IAutocompleteOptionGroup<T>[] | Promise<IAutocompleteOption<T>[] | IAutocompleteOptionGroup<T>[]>;
export declare type AutocompleteSelectedTextBuilder<T = any> = (selectedOptions: Array<IAutocompleteOption<T>>) => string;
export declare enum AutocompleteMode {
    Default = "default",
    Stateless = "stateless"
}
export interface IAutocompleteOption<T = any> extends IListDropdownOption<T> {
}
export interface IAutocompleteOptionGroup<T = any> extends IListDropdownOptionGroup<T> {
}
export interface IAutocompletePopupConfiguration {
    filterText: string;
    popupTarget: string;
    dropdownConfig: IListDropdownConfig;
    popupClasses: string[];
    popupOffset: IPopupPosition;
    syncPopupWidth: boolean;
    listener: (value: string) => void;
    scrollEndListener: () => void;
}
export interface IAutocompleteSelectEventData<T = any> {
    value: T;
}
export interface IAutocompleteForceFilterOptions {
    preserveValue: boolean;
}
