import { default as CxButton } from '../../../atoms/src/components/button/button.ts';
import { default as CxDivider } from '../../../atoms/src/components/divider/divider.ts';
import { default as CxDropdown } from '../../../atoms/src/components/dropdown/dropdown.ts';
import { default as CxIcon } from '../../../atoms/src/components/icon/icon.ts';
import { default as CxIconButton } from '../../../atoms/src/components/icon-button/icon-button.ts';
import { default as CxLineClamp } from '../../../atoms/src/components/line-clamp/line-clamp.ts';
import { default as CxMenu } from '../../../atoms/src/components/menu/menu.ts';
import { default as CxMenuItem } from '../../../atoms/src/components/menu-item/menu-item.ts';
import { default as CxMenuLabel } from '../../../atoms/src/components/menu-label/menu-label.ts';
import { default as CxSpace } from '../../../atoms/src/components/space/space.ts';
import { default as CxSwitch } from '../../../atoms/src/components/switch/switch.ts';
import { default as CxTooltip } from '../../../atoms/src/components/tooltip/tooltip.ts';
import { default as CortexElement } from '../../../base/src/cortex-element.ts';
import { CxSelectEvent } from '../../../events/src/events.ts';
import { ButtonSize, ButtonVariant } from '../../../types/src/button';
import { MenuData, MenuItem, MenuSection } from '../../../types/src/view-and-sort';
import { CSSResultGroup, TemplateResult } from 'lit';

/**
 * @summary A dropdown menu that accepts a JSON string to render menu items for the template switcher dropdown.
 *
 * @event {{ item: MenuItem }} cx-select - Emitted when a menu item is selected.
 */
export default class CxViewAndSort extends CortexElement {
    static readonly styles: CSSResultGroup;
    static readonly dependencies: {
        'cx-button': typeof CxButton;
        'cx-divider': typeof CxDivider;
        'cx-dropdown': typeof CxDropdown;
        'cx-icon': typeof CxIcon;
        'cx-icon-button': typeof CxIconButton;
        'cx-line-clamp': typeof CxLineClamp;
        'cx-menu': typeof CxMenu;
        'cx-menu-item': typeof CxMenuItem;
        'cx-menu-label': typeof CxMenuLabel;
        'cx-space': typeof CxSpace;
        'cx-switch': typeof CxSwitch;
        'cx-tooltip': typeof CxTooltip;
    };
    private readonly localize;
    dropdown: CxDropdown;
    items: MenuData;
    label: string;
    triggerButtonVariant: ButtonVariant;
    triggerButtonSize: ButtonSize;
    constructor();
    connectedUpdatedCallback(): void;
    disconnectedCallback(): void;
    handleSelectChanged(event: CxSelectEvent<CxMenuItem>): void;
    debouncedHandleSelectChanged: (...args: any[]) => void;
    private onSelectChanged;
    private onDropdownShow;
    private onDropdownAfterHide;
    hide(): void;
    private handleButtonClick;
    private handleSwitchClick;
    render(): TemplateResult<1>;
    renderMenuSection(section: MenuSection): TemplateResult;
    renderMenuItem(item: MenuItem, isHorizontal?: boolean, tooltip?: string): TemplateResult;
}
declare global {
    interface HTMLElementTagNameMap {
        'cx-view-and-sort': CxViewAndSort;
    }
}
