import { type EventEmitter } from "../../../stencil-public-runtime";
import type { Option } from "./interfaces";
export declare class Multiselect {
    /** Name of the multi-select field (used in forms). */
    readonly name: string;
    /** If true, the multi-select is disabled and not interactive. */
    readonly disabled: boolean;
    /** Whether at least one option must be selected. */
    readonly required: boolean;
    /** If true, shows the multi-select in an error state. */
    readonly error: boolean;
    /** Helper text shown below the multi-select. */
    readonly caption: string;
    /** Label shown above the multi-select. */
    readonly label: string;
    /** Placeholder text shown when nothing is selected. */
    readonly placeholder: string;
    /** If true, shows a search box inside the dropdown. */
    readonly showSearch: boolean;
    /** If true, shows a “Select all” option. */
    readonly showSelectAll: boolean;
    /** If true, shows a button to clear all selections. */
    readonly showClearButton: boolean;
    /** If true, shows expand/collapse controls for nested options. */
    readonly showExpandCollapse: boolean;
    /** Message shown when no search results are found. */
    readonly noResultsMessage: string;
    /** If true, displays the “no results” message when nothing matches. */
    readonly showNoResultsMessage: boolean;
    /** Placeholder text for the search input. */
    readonly searchPlaceholder: string;
    /** Label text for the “Select all” option. */
    readonly selectAllLabel: string;
    /** Label text for the “Expand all” action. */
    readonly expandLabel: string;
    /** Label text for the “Collapse all” action. */
    readonly collapseLabel: string;
    /** ARIA label for the multi-select dropdown. */
    readonly ariaMultiSelectLabel: string;
    /** ID of element that labels the multi-select (aria-labelledby). */
    readonly ariaMultiSelectLabelledBy: string;
    /** ID of element that describes the multi-select (aria-describedby). */
    readonly ariaMultiSelectDescribedBy: string;
    /** ARIA label for the search input inside the dropdown. */
    readonly ariaSearchLabel: string;
    /** ARIA label for the “Clear all” button. */
    readonly ariaClearLabel: string;
    /** ARIA label for the dropdown toggle button. */
    readonly ariaToggleLabel: string;
    /** ARIA label for the “Select all options” control. */
    readonly ariaSelectAllLabel: string;
    /** ARIA label for the “Expand all categories” control. */
    readonly ariaExpandAllLabel: string;
    /** ARIA label for the “Collapse all categories” control. */
    readonly ariaCollapseAllLabel: string;
    internalError: boolean;
    persistentSelectedOptions: Option[];
    dropdownOpen: boolean;
    dropdownFlipped: boolean;
    searchTerm: string;
    /** Fired when an option is selected in the multi-select. */
    ifxSelect: EventEmitter;
    /** Fired when the multi-select dropdown is opened. */
    ifxOpen: EventEmitter;
    el: HTMLIfxMultiselectElement;
    private dropdownElement;
    internals: ElementInternals;
    private parseChildOptions;
    private parseOptionElement;
    private loadInitialOptions;
    private collectSelectedOptions;
    private collectLeafOptions;
    private handleSearch;
    private handleSearchFocus;
    private positionDropdown;
    private updateSlotBasedSelections;
    private updateInitialParentStates;
    private updateParentState;
    componentDidLoad(): Promise<void>;
    componentWillLoad(): void;
    updateInternalError(): void;
    onSelectionChange(newValue: Option[], _: Option[]): void;
    private collapseAll;
    private expandAll;
    private selectAll;
    /** Clears all selected options in the multi-select and resets their state. */
    clearSelection(): Promise<void>;
    private handleDocumentClick;
    private toggleDropdown;
    private resetSearch;
    private handleWrapperClick;
    private handleKeyDown;
    private focusFirstOption;
    private renderSelectAll;
    private renderNoResultsMessage;
    render(): any;
}
