import type { IElementRef, OnCreate, OnDestroy, OnRender } from '@melodicdev/core';
import type { SidebarVariant, SidebarNavGroup, SidebarNavItem } from './sidebar.types.js';
/**
 * ml-sidebar - App-level sidebar navigation component
 *
 * @example Slotted mode:
 * ```html
 * <ml-sidebar active="home">
 *   <div slot="header">Logo</div>
 *   <ml-sidebar-group label="GENERAL">
 *     <ml-sidebar-item icon="house" label="Home" value="home"></ml-sidebar-item>
 *   </ml-sidebar-group>
 * </ml-sidebar>
 * ```
 *
 * @example Config mode:
 * ```html
 * <ml-sidebar active="home" .navigation=${navGroups}></ml-sidebar>
 * ```
 *
 * @slot header - Logo/branding area
 * @slot search - Search input area
 * @slot default - Navigation content (groups and items)
 * @slot footer-nav - Footer navigation items
 * @slot feature - Feature promotion card
 * @slot user - User profile area
 *
 * @fires ml:change - Emitted when active item changes
 * @fires ml:item-click - Emitted when any item is clicked
 */
export declare class SidebarComponent implements IElementRef, OnCreate, OnDestroy, OnRender {
    elementRef: HTMLElement;
    /** Visual variant */
    variant: SidebarVariant;
    /** Currently active item value */
    active: string;
    /** Collapsed state (controlled by slim variant hover) */
    collapsed: boolean;
    /** Navigation config (alternative to slotted content) */
    navigation: SidebarNavGroup[];
    /** Footer navigation config */
    footerNavigation: SidebarNavItem[];
    /** Debounce timer for hover */
    private _hoverTimer;
    /** Bound event handlers */
    private readonly _handleItemClick;
    private readonly _handleMouseEnter;
    private readonly _handleMouseLeave;
    /** Check if search slot has content */
    get hasSearch(): boolean;
    /** Check if feature slot has content */
    get hasFeature(): boolean;
    /** Check if user slot has content */
    get hasUser(): boolean;
    onCreate(): void;
    onRender(): void;
    onDestroy(): void;
    /** Handle slotted items change */
    handleDefaultSlotChange: () => void;
    /** Handle config item click */
    handleConfigItemClick: (value: string, href?: string) => void;
    /** Handle config submenu toggle */
    handleConfigToggle: (item: SidebarNavItem) => void;
    /** Keyboard navigation */
    handleKeyDown: (event: KeyboardEvent) => void;
    /** Track expanded config items */
    expandedItems: Set<string>;
    /** Activate an item */
    private activateItem;
    /** Handle item click from slotted children */
    private onItemClick;
    /** Handle mouse enter for slim variant */
    private onMouseEnter;
    /** Handle mouse leave for slim variant */
    private onMouseLeave;
    /** Propagate active/collapsed state to slotted children */
    private updateItemStates;
}
//# sourceMappingURL=sidebar.component.d.ts.map