import { LitElement } from "lit";
import "./Backdrop";
/**
 * Responsive menu component that is coupled with the topbar component
 * (for mobile menu toggling and actions display on desktop) and the
 * banner component (nav display on desktop) via events.
 *
 * @slot nav - Slot for application navigation that is visible in the
 * banner on desktop and moves into the hamburger menu on mobile
 * @slot items - Slot for menu content that is visible on the page on
 * desktop (typically on the left of the content) and moves into the
 * hamburger menu on mobile
 * @slot actions - Slot for application-wide menu actions (like help,
 * logout etc.) that are visible in the topbar on desktop and move
 * into the hamburger menu on mobile
 * @fires pzsh-menu-change
 * @fires pzsh-menu-nav-change
 */
export declare class Menu extends LitElement {
    open: boolean;
    /**
     * The selector for the scroll container which will be blocked from
     * scrolling while menu is open.
     */
    scrollContainerSelector: string;
    available: boolean;
    hasNav: boolean;
    hasSubnav: boolean;
    actionsObserver: MutationObserver;
    static styles: import("lit").CSSResult[];
    constructor();
    connectedCallback(): void;
    disconnectedCallback(): void;
    toggleMenu(e: Event): void;
    toggleBackdrop(): void;
    handleEvent(e: Event): void;
    handleMenuClose(e: Event): void;
    handleMenuNavigation(e: Event): void;
    /**
     * Flatten all menu actions & dropdown items to an array
     */
    getMenuItems(): ReadonlyArray<HTMLElement>;
    handleSlotChange(e: Event): void;
    handleActionsChange(): void;
    updateMenuAvailablity(): void;
    hasMenuItems(): boolean;
    /**
     * Emit an event for the pzsh-topbar component to show/hide the
     * hamburger menu button or update its open/closed state.
     */
    triggerMenuChange(available: boolean, open: boolean): void;
    updateNavAvailability(): void;
    /**
     * Emit an event for the pzsh-banner component to preserve spacing
     * for the absolute positioned nav.
     */
    triggerNavChange(hasNav: boolean, hasSubnav: boolean): void;
    render(): import("lit-html").TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        "pzsh-menu": Menu;
    }
}
