import { type IDropDownable } from '../../../Behaviors/DropDownable';
import { ButtonBaseElement } from '../Abstracts/ButtonBaseElement';
import type { IDropDownButtonElementProps } from './IDropDownButtonElementProps';
declare const DropDownButtonElement_base: (abstract new (...args: Array<any>) => import("../../../../Controls/Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Reversible").IReversibleProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Orientable").IOrientableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/ContentAlignable").IContentAlignableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Fitable").IFitableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/DropDownable").IDropDownableProps & IDropDownable) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Busyable").IBusyableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Labelable").ILabelableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Iconable").IIconableProps) & typeof ButtonBaseElement & import("../../../../Controls/Behaviors/Themeable").IThemeableCtor;
/**
 * Drop Down Button - A button that opens a menu when clicked, allowing users to select from a list of options.
 *
 * @description
 * The Drop Down Button is a versatile user interface component that triggers a dropdown menu containing additional
 * options or actions. When clicked, the button reveals a menu with a list of choices, providing users with multiple
 * actions or selections in a compact and organized manner. Drop Down Buttons are commonly used in navigation bars,
 * toolbars, and other interactive areas where a set of related options needs to be presented.
 *
 * @name Drop Down Button
 * @element mosaik-dropdown-button
 * @category Buttons
 *
 * @slot icon - The icon slot.
 * @slot label - The label slot.
 * @slot overlay - The overlay slot (useful for badges).
 * @slot - The default dropdown content slot.
 *
 * @csspart button - The button part.
 * @csspart focusRing - The focus ring part.
 * @csspart ripple - The ripple part.
 * @csspart icon - The icon part.
 * @csspart label - The label part.
 * @csspart progressRing - The progress ring part.
 * @csspart popup - The popup part.
 * @csspart menu - The menu part.
 * @csspart iconCaret - The icon caret part.
 *
 * @cssprop {Color} --drop-down-button-background-color - The background color of the drop down button.
 * @cssprop {Color} --drop-down-button-border-color - The border color of the drop down button.
 * @cssprop {String} --drop-down-button-border-radius - The border radius of the drop down button.
 * @cssprop {String} --drop-down-button-border-width - The border width of the drop down button.
 * @cssprop {String} --drop-down-button-font-family - The font family of the drop down button.
 * @cssprop {String} --drop-down-button-font-letter-spacing - The letter spacing of the drop down button font.
 * @cssprop {String} --drop-down-button-font-line-height - The line height of the drop down button font.
 * @cssprop {String} --drop-down-button-font-size - The font size of the drop down button.
 * @cssprop {String} --drop-down-button-font-text-decoration - The text decoration of the drop down button font.
 * @cssprop {String} --drop-down-button-font-text-transform - The text transform of the drop down button font.
 * @cssprop {String} --drop-down-button-font-weight - The font weight of the drop down button.
 * @cssprop {Color} --drop-down-button-foreground-color - The foreground color of the drop down button.
 * @cssprop {String} --drop-down-button-gap - The gap between elements in the drop down button.
 * @cssprop {String} --drop-down-button-padding-bottom - The bottom padding of the drop down button.
 * @cssprop {String} --drop-down-button-padding-left - The left padding of the drop down button.
 * @cssprop {String} --drop-down-button-padding-right - The right padding of the drop down button.
 * @cssprop {String} --drop-down-button-padding-top - The top padding of the drop down button.
 * @cssprop {String} --drop-down-button-shadow - The shadow of the drop down button.
 * @cssprop {String} --drop-down-button-transition-duration - The transition duration of the drop down button.
 *
 * @dependency {StackElement} - The Stack element.
 * @dependency {IconElement} - The Icon element.
 * @dependency {RippleElement} - The Ripple element.
 * @dependency {FocusRingElement} - The Focus Ring element.
 * @dependency {TextElement} - The Text element.
 * @dependency {ProgressRingElement} - The Progress Ring element.
 * @dependency {FloatingElement} - The Floating element.
 * @dependency {MenuElement} - The Menu element.
 *
 * @example
 * ```html
 * <mosaik-dropdown-button label="Options" icon="menu">
 *   <mosaik-menu>
 *     <mosaik-menu-item>Option 1</mosaik-menu-item>
 *     <mosaik-menu-item>Option 2</mosaik-menu-item>
 *   </mosaik-menu>
 * </mosaik-dropdown-button>
 * ```
 *
 * @public
 */
export declare class DropDownButtonElement extends DropDownButtonElement_base implements IDropDownButtonElementProps, IDropDownable {
    private readonly _clickOutsideController;
    private readonly _projectionController;
    private _caretVisible;
    /**
     * @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 `caretVisible` property.
     *
     * @public
     * @attr
     */
    get caretVisible(): boolean;
    set caretVisible(value: boolean);
    /**
     * @public
     * @override
     */
    connectedCallback(): void;
    /**
     * @protected
     */
    protected onIsDropDownOpenPropertyChanged(_prev?: boolean, next?: boolean): void;
    /**
     * @protected
     */
    protected onIsBusyPropertyChanged(_prev: boolean, next?: string): void;
    /**
     * @private
     */
    private onClickedOutside;
    /**
     * @private
     * @template
     */
    onFloatingActiveChanged(active: boolean): void;
}
/**
 * @public
 */
export declare namespace DropDownButtonElement {
    type Props = IDropDownButtonElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-dropdown-button': DropDownButtonElement;
    }
}
export {};
//# sourceMappingURL=DropDownButtonElement.d.ts.map