import { CssLength } from '@breadstone/mosaik-themes';
import { type TemplateResult } from '../../../../Dom/Html';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { IAutoCompleteBoxElementProps } from './IAutoCompleteBoxElementProps';
import { Placement } from '../../../Types/Placement';
import { Strategy } from '../../../Types/Strategy';
import { FloatingSync } from '../../../Types/FloatingSync';
import { type IDropDownable } from '../../../Behaviors/DropDownable';
import { AutoCompleteBoxElementIntl } from './AutoCompleteBoxElementIntl';
declare const AutoCompleteBoxElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/DropDownable").IDropDownableProps & IDropDownable) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Focusable").IFocusableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/AutoCompleteable").IAutoCompleteableProps & import("../../../Behaviors/AutoCompleteable").IAutoCompletableEvents & import("../../../Behaviors/AutoCompleteable").IAutoCompletable) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Auto Complete Box - An input field with auto-completion functionality for enhanced user experience.
 *
 * @description
 * The Auto Complete Box component provides real-time suggestions as users type, helping them quickly find and select
 * from a list of predefined options. It combines the functionality of a text input with a dropdown list of suggestions,
 * making data entry faster and more accurate. This component is ideal for search fields, location inputs, and any
 * scenario where users need to select from a large set of possible values.
 *
 * @name Auto Complete Box
 * @element mosaik-autocompletebox
 * @category Inputs
 *
 * @csspart input - the input field.
 * @csspart list - the suggestions list.
 * @csspart item - individual suggestion items.
 * @csspart portal - the floating portal container for the suggestions.
 * @csspart popup - the floating popup container for the suggestions.
 *
 * @cssprop {String} --auto-complete-box-background-color - The background color.
 * @cssprop {String} --auto-complete-box-border-color - The border color.
 * @cssprop {String} --auto-complete-box-border-radius - The border radius.
 * @cssprop {String} --auto-complete-box-border-style - The border style.
 * @cssprop {String} --auto-complete-box-border-width - The border width.
 * @cssprop {String} --auto-complete-box-foreground-color - The foreground color.
 * @cssprop {String} --auto-complete-box-gap - The gap between elements.
 * @cssprop {String} --auto-complete-box-height - The height.
 * @cssprop {String} --auto-complete-box-padding-bottom - The padding bottom.
 * @cssprop {String} --auto-complete-box-padding-left - The padding left.
 * @cssprop {String} --auto-complete-box-padding-right - The padding right.
 * @cssprop {String} --auto-complete-box-padding-top - The padding top.
 * @cssprop {String} --auto-complete-box-shadow - The shadow.
 * @cssprop {String} --auto-complete-box-width - The width.
 *
 * @dependency mosaik-portal - Provides a portal host for rendering the suggestion popup.
 * @dependency mosaik-floating - Positions the suggestion popup relative to the host element.
 *
 * @example
 * ```html
 * <mosaik-autocompletebox
 *   placeholder="Search countries..."
 *   items='["Germany", "France", "Italy", "Spain"]'>
 * </mosaik-autocompletebox>
 * ```
 *
 * @public
 */
export declare class AutoCompleteBoxElement extends AutoCompleteBoxElement_base implements IAutoCompleteBoxElementProps, IDropDownable {
    private static _idCounter;
    private static readonly _floatingFlipFallbackPlacements;
    private _text;
    private _shouldSyncSearchFromText;
    private _highlightedIndex;
    private _lastFilterText;
    private readonly _inputId;
    private readonly _listboxId;
    private readonly _intlController;
    private _closeTimeoutHandle;
    private _suggestionSync;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     * The `{@link is}` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `text` property.
     *
     * @public
     * @attr
     */
    get text(): string;
    set text(value: string);
    /**
     * Gets the identifier of the input element.
     *
     * @public
     * @readonly
     */
    get inputId(): string;
    /**
     * Gets the identifier of the suggestion list element.
     *
     * @public
     * @readonly
     */
    get listboxId(): string;
    /**
     * Gets the index of the highlighted suggestion.
     *
     * @public
     * @readonly
     */
    get highlightedIndex(): number;
    /**
     * Gets a value indicating whether the suggestion list should be rendered.
     *
     * @public
     * @readonly
     */
    get shouldRenderSuggestions(): boolean;
    /**
     * Gets a value indicating whether suggestions are available.
     *
     * @public
     * @readonly
     */
    get hasSuggestions(): boolean;
    /**
     * Gets the active descendant identifier for accessibility.
     *
     * @public
     * @readonly
     */
    get activeDescendantId(): string | null;
    /**
     * Gets a value indicating whether the no-results message should be displayed.
     *
     * @public
     * @readonly
     */
    get shouldShowNoResultsMessage(): boolean;
    /**
     * Gets a value indicating whether the loading state should be displayed.
     *
     * @public
     * @readonly
     */
    get shouldShowLoadingState(): boolean;
    /**
     * Gets or sets the preferred placement for the suggestion popup.
     *
     * @public
     * @attr
     */
    get suggestionPlacement(): Placement;
    set suggestionPlacement(value: Placement);
    /**
     * Gets or sets the positioning strategy for the suggestion popup.
     *
     * @public
     * @attr
     */
    get suggestionStrategy(): Strategy;
    set suggestionStrategy(value: Strategy);
    /**
     * Gets or sets the distance in pixels between the host and the suggestion popup.
     *
     * @public
     * @attr
     */
    get suggestionDistance(): number;
    set suggestionDistance(value: number);
    /**
     * Gets or sets the horizontal skidding offset for the suggestion popup.
     *
     * @public
     * @attr
     */
    get suggestionSkidding(): number;
    set suggestionSkidding(value: number);
    /**
     * Gets or sets the size synchronization mode for the suggestion popup.
     *
     * @public
     * @attr
     */
    get suggestionSync(): FloatingSync;
    set suggestionSync(value: FloatingSync);
    /**
     * Gets or sets the maximum height for the suggestion popup.
     *
     * @public
     * @attr
     */
    get maxSuggestionHeight(): CssLength;
    set maxSuggestionHeight(value: CssLength);
    /**
     * Gets the fallback placements used when positioning the suggestion popup.
     *
     * @public
     * @readonly
     */
    get suggestionFlipFallbackPlacements(): Array<Placement>;
    /**
     * Returns the `intl` property.
     *
     * @public
     * @readonly
     */
    get intl(): AutoCompleteBoxElementIntl;
    /**
       * Synchronizes the suggestion visibility with the floating popup state.
       *
       * @public
       * @param isActive - Indicates whether the floating popup is active.
       */
    onFloatingActiveChanged(isActive: boolean): void;
    /**
     * @public
     * @override
     */
    onSelectCallback(item: unknown): void;
    /**
     * @public
     * @override
     */
    disconnectedCallback(): void;
    /**
     * Handles input events raised by the native text box.
     *
     * @public
     * @param event - The event that triggered the handler.
     */
    onInput(event: Event): void;
    /**
     * Handles focus events raised by the native input element.
     *
     * @public
     */
    onFocus(_event: FocusEvent): void;
    /**
     * Handles blur events raised by the native input element.
     *
     * @public
     */
    onBlur(_event: FocusEvent): void;
    /**
     * Handles keyboard interactions for navigating the suggestion list.
     *
     * @public
     * @param event - The keyboard event that triggered the handler.
     */
    onKeyDown(event: KeyboardEvent): void;
    /**
     * Handles pointer events to keep the suggestion list open while interacting with it.
     *
     * @public
     * @param event - The mouse event that triggered the handler.
     */
    onSuggestionMouseDown(event: MouseEvent): void;
    /**
     * Handles click events on suggestion items.
     *
     * @public
     * @param index - The index of the clicked suggestion.
     */
    onSuggestionClick(index: number): void;
    /**
     * Renders a suggestion with highlighted text.
     *
     * @public
     * @param item - The item to render.
     */
    renderHighlightedItem(item: unknown): TemplateResult;
    /**
     * Gets the identifier for the suggestion option at the specified index.
     *
     * @public
     * @param index - The index of the option.
     */
    getOptionId(index: number): string;
    /**
     * Synchronizes internal state when the dropdown open state changes.
     *
     * @protected
     */
    protected onDropDownOpenChanged(_previous?: boolean, next?: boolean): void;
    /**
     * @protected
     */
    protected onDisabledChanged(_previous: boolean, next: boolean): void;
    private static generateId;
    private getInputElement;
    private executeWithoutSearchSync;
    private openSuggestions;
    private closeSuggestions;
    private scheduleCloseSuggestions;
    private cancelCloseSuggestions;
    private clearCloseTimeout;
    private commitSelection;
    private applyTextCompletion;
    private moveHighlight;
    private setHighlightedIndex;
    private scrollHighlightedOptionIntoView;
    private scrollOptionIntoView;
}
/**
 * @public
 */
export declare namespace AutoCompleteBoxElement {
    type Props = IAutoCompleteBoxElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-autocompletebox': AutoCompleteBoxElement;
    }
}
export {};
//# sourceMappingURL=AutoCompleteBoxElement.d.ts.map