import { IClearable } from '../../../Behaviors/Clearable';
import { type IDropDownable } from '../../../Behaviors/DropDownable';
import { IInvalidable } from '../../../Behaviors/Invalidable';
import { Appearance } from '../../../Types/Appearance';
import { SelectionMode } from '../../../Types/SelectionMode';
import { Variant } from '../../../Types/Variant';
import { MultiSelectorElement } from '../Abstracts/MultiSelector/MultiSelectorElement';
import { ComboItemElement } from './ComboItemElement';
import type { IComboElementProps } from './IComboElementProps';
import { ISlottable } from '../../../Behaviors/Slottable';
import { ComboElementIntl } from './ComboElementIntl';
import { TextAlignment } from '../../../Types/TextAlignment';
declare const ComboElement_base: import("../../../../Index").ControlBehaviorReturn<import("../../../../Index").ControlBehaviorReturn<import("../../../../Index").ControlBehaviorReturn<import("../../../../Index").ControlBehaviorReturn<import("../../../../Index").ControlBehaviorReturn<import("../../../../Index").ControlBehaviorReturn<import("../../../../Index").ControlBehaviorReturn<import("../../../../Index").ControlBehaviorReturn<import("../../../../Index").ControlBehaviorReturn<(abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new () => MultiSelectorElement<any>) & import("../../../Behaviors/Themeable").IThemeableCtor, import("../../../Behaviors/Valueable").IValueableProps<unknown>>, import("../../../Behaviors/Disableable").IDisableableProps>, IInvalidable & import("../../../Behaviors/Invalidable").IInvalidableProps<unknown>>, import("../../../Behaviors/Clearable").IClearableProps & import("../../../Behaviors/Clearable").IClearableEvents & IClearable>, import("../../../Behaviors/Labelable").ILabelableProps>, import("../../../Behaviors/Variantable").IVariantableProps>, import("../../../Behaviors/Appearanceable").IAppearanceableProps>, import("../../../Behaviors/DropDownable").IDropDownableProps & IDropDownable>, import("../../../Behaviors/Slottable").ISlottableProps & ISlottable>;
/**
 * Combo - A user interface component that combines multiple elements or options into a single selectable unit.
 *
 * @element mosaik-combo
 *
 * @description
 * The Combo component is a versatile UI element that allows users to choose from a set of options or elements presented together within a single unit. It often consists of a dropdown or pop-up menu that displays a list of available choices when activated. Combos are commonly used for selecting items from a list, applying filters, or choosing configurations.
 *
 * @category Selectors
 *
 * @fires cleared - Fired when the value is cleared.
 * @fires selectionChanged - Fired when the selection has changed.
 *
 * @keyhandle UpArrow - Selects the previous item.
 * @keyhandle DownArrow - Selects the next item.
 * @keyhandle Space - Toggles the dropdown.
 * @keyhandle Enter - Toggles the dropdown.
 * @keyhandle Escape - Closes the dropdown if it is open, otherwise clears the value.
 * @keyhandle Tab - Closes the dropdown.
 *
 * @dependency {ComboItemElement} mosaik-combo-item - ComboItemElement
 * @dependency {TextBoxElement} mosaik-text-box - TextBoxElement
 * @dependency {TextBoxElement} mosaik-text-box - TextBoxElement
 * @dependency {ButtonElement} mosaik-button - ButtonElement
 * @dependency {FloatingElement} mosaik-floating - FloatingElement
 * @dependency {PortalElement} mosaik-portal - PortalElement
 * @dependency {EmptyStateElement} mosaik-empty-state - EmptyStateElement
 *
 * @example
 * ```html
 * <mosaik-combo label="Select a Color">
 *     <mosaik-combo-item value="red" label="Red"></mosaik-combo-item>
 *     <mosaik-combo-item value="green" label="Green"></mosaik-combo-item>
 *     <mosaik-combo-item value="blue" label="Blue"></mosaik-combo-item>
 * </mosaik-combo>
 * ```
 *
 * @public
 */
export declare class ComboElement extends ComboElement_base implements IComboElementProps, IDropDownable, IClearable, IInvalidable, ISlottable {
    private readonly _inputElement?;
    private readonly _popupElement?;
    private readonly _clickOutsideController;
    private readonly _intl;
    private readonly _projectionController;
    private readonly _itemsClickSubscriptions;
    private _selectionMode;
    private _value;
    private _placeholder;
    private _required;
    private _textAlign;
    /**
     * @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 `selectionMode` property.
     *
     * @public
     * @attr
     */
    get selectionMode(): SelectionMode;
    set selectionMode(value: SelectionMode);
    /**
     * Gets or sets the `value` property.
     *
     * @override
     * @public
     * @attr
     */
    get value(): Array<string> | null;
    set value(value: Array<string> | null);
    /**
     * Gets or sets the `placeholder` property.
     *
     * @public
     */
    get placeholder(): string;
    set placeholder(value: string);
    /**
     * Determines whether the component is required or not.
     * If `true`, the component will require a value when submitted.
     *
     * @public
     * @attr
     */
    get required(): boolean;
    set required(value: boolean);
    /**
     * Determines the text alignment of the component.
     *
     * @public
     * @attr
     */
    get textAlign(): TextAlignment;
    set textAlign(value: TextAlignment);
    /**
     * Gets the items of the Combo.
     *
     * @remark
     * It is important to override the base class property to ensure that only
     * {@link ComboItemElement} instances are returned.
     *
     * @public
     * @readonly
     * @ignore
     */
    get items(): Array<ComboItemElement>;
    /**
     * Returns the `intl` property.
     *
     * @public
     * @readonly
     */
    get intl(): ComboElementIntl;
    /**
     * Resets the value, all kinds of validation and errors.
     *
     * @public
     */
    reset(): void;
    /**
     * Checks the validity of the element and returns `true` if it is valid; otherwise, `false`.
     *
     * @public
     * @override
     */
    checkValidity(): boolean;
    /**
     * Clears the value of the element but not the validation.
     *
     * @public
     * @override
     */
    clear(force?: boolean): boolean;
    /**
     * @public
     * @override
     */
    connectedCallback(): void;
    /**
     * @protected
     * @override
     */
    protected onItemsChanged(): void;
    /**
     * @protected
     * @override
     */
    protected onSelectionChanged(oldIndex: number, newIndex: number): void;
    /**
     * @protected
     */
    protected onSelectionModePropertyChanged(prev?: SelectionMode, next?: SelectionMode): void;
    /**
     * @protected
     */
    protected onVariantPropertyChanged(_prev?: Variant, next?: Variant): void;
    /**
     * @protected
     */
    protected onAppearancePropertyChanged(_prev?: Appearance, _next?: Appearance): void;
    /**
     * @protected
     */
    protected onDisabledPropertyChanged(_prev?: boolean, next?: boolean): void;
    /**
     * @protected
     */
    protected onIsDropDownOpenPropertyChanged(_prev?: boolean, next?: boolean): void;
    /**
     * @param active - A value indicating whether the floating is active.
     *
     * @private
     * @template
     */
    onFloatingActiveChanged(active: boolean): void;
    /**
     * @param item - The item to select.
     * @param force - A value indicating whether to force the selection.
     *
     * @private
     */
    private onSelectItem;
    /**
     * @private
     */
    private initialSelection;
}
/**
 * @public
 */
export declare namespace ComboElement {
    type Props = IComboElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-combo': ComboElement;
    }
}
export {};
//# sourceMappingURL=ComboElement.d.ts.map