import { CustomElement } from '../Abstracts/CustomElement';
import { AppHeaderElement } from './AppHeaderElement';
import { IAppElementProps } from './IAppElementProps';
import { ITheme } from '@breadstone/mosaik-themes';
import { ISlottable } from '../../Behaviors/Slottable';
declare const AppElement_base: (abstract new (...args: Array<any>) => import("../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../Behaviors/Slottable").ISlottableProps & ISlottable) & typeof CustomElement & import("../../Behaviors/Themeable").IThemeableCtor;
/**
 * App - A comprehensive application shell component that provides the foundation layout structure for modern web applications.
 *
 * Creates a complete application framework with integrated navigation drawers, headers, content areas, and responsive
 * layout management. Handles breakpoint-aware design, theme management, and provides structured slots for organizing
 * application navigation, branding, actions, and primary content in a cohesive shell architecture.
 *
 * @name AppElement
 * @element mosaik-app
 * @category Shell
 *
 * @slot nav - Navigation drawer content area for primary navigation links and menu items
 * @slot menu - Menu area for contextual actions and secondary navigation
 * @slot logo - Application branding area for logos, titles, and identity elements
 * @slot actions - Action buttons area for global application actions and controls
 * @slot content - Main content area for primary application content and views
 * @slot footer - Footer area for secondary information, links, and application metadata
 *
 * @csspart header - Application header section containing branding and navigation controls
 * @csspart content - Main content wrapper for application views and functionality
 * @csspart drawer - Navigation drawer container for side navigation elements
 * @csspart nav - Navigation area within the drawer for menu items and links
 * @csspart overlay - Drawer overlay for mobile and responsive interactions
 * @csspart backdrop - Background overlay for modal drawer interactions
 *
 * @cssprop --app-header-height - Height of the application header bar
 * @cssprop --app-drawer-width - Width of the navigation drawer when expanded
 * @cssprop --app-breakpoint-mobile - Mobile breakpoint threshold for responsive behavior
 * @cssprop --app-breakpoint-tablet - Tablet breakpoint threshold for layout changes
 * @cssprop --app-breakpoint-desktop - Desktop breakpoint for full layout display
 * @cssprop --app-background-color - Background color for the application shell
 * @cssprop --app-surface-color - Surface color for elevated application areas
 * @cssprop --app-drawer-background - Background color for the navigation drawer
 * @cssprop --app-header-background - Background color for the application header
 *
 * @dependency DrawerElement - For navigation drawer functionality and responsive behavior
 * @dependency AppHeaderElement - For application header management and branding display
 * @dependency Theme2Element - For comprehensive theme management and styling coordination
 * @dependency BreakpointController - For responsive design and layout adaptation
 *
 * @example
 * ```html
 * <!-- Complete application shell -->
 * <mosaik-app theme="joy" responsive="true">
 *   <mosaik-icon slot="logo" data="company-logo"></mosaik-icon>
 *   <mosaik-text slot="logo">My Application</mosaik-text>
 *
 *   <nav slot="nav">
 *     <mosaik-list>
 *       <mosaik-list-item value="dashboard">
 *         <mosaik-icon slot="prefix" data="home"></mosaik-icon>
 *         Dashboard
 *       </mosaik-list-item>
 *       <mosaik-list-item value="analytics">
 *         <mosaik-icon slot="prefix" data="chart-bar"></mosaik-icon>
 *         Analytics
 *       </mosaik-list-item>
 *       <mosaik-list-item value="settings">
 *         <mosaik-icon slot="prefix" data="cog"></mosaik-icon>
 *         Settings
 *       </mosaik-list-item>
 *     </mosaik-list>
 *   </nav>
 *
 *   <div slot="actions">
 *     <mosaik-button appearance="ghost" onclick="openSearch()">
 *       <mosaik-icon data="search"></mosaik-icon>
 *     </mosaik-button>
 *     <mosaik-button appearance="ghost" onclick="showNotifications()">
 *       <mosaik-icon data="bell"></mosaik-icon>
 *       <mosaik-badge slot="overlay" value="3"></mosaik-badge>
 *     </mosaik-button>
 *     <mosaik-avatar onclick="showProfile()" src="user-avatar.jpg"></mosaik-avatar>
 *   </div>
 *
 *   <main slot="content">
 *     <router-outlet></router-outlet>
 *   </main>
 *
 *   <footer slot="footer">
 *     <mosaik-text variant="caption">© 2024 My Company. All rights reserved.</mosaik-text>
 *   </footer>
 * </mosaik-app>
 *
 * <!-- Minimal app shell -->
 * <mosaik-app drawer-mode="overlay">
 *   <h1 slot="logo">Simple App</h1>
 *   <div slot="content">
 *     <h2>Welcome to the application</h2>
 *   </div>
 * </mosaik-app>
 *
 * <!-- Dashboard layout -->
 * <mosaik-app theme="cosmopolitan" drawer-collapsed="false">
 *   <div slot="logo">
 *     <img src="logo.png" alt="Dashboard" />
 *   </div>
 *
 *   <div slot="menu">
 *     <mosaik-combo label="Workspace" value="current">
 *       <mosaik-combo-item value="current">Current Project</mosaik-combo-item>
 *       <mosaik-combo-item value="archived">Archived Projects</mosaik-combo-item>
 *     </mosaik-combo>
 *   </div>
 *
 *   <div slot="content">
 *     <mosaik-chart type="line" title="Performance Metrics"></mosaik-chart>
 *   </div>
 * </mosaik-app>
 * ```
 *
 * @public
 */
export declare class AppElement extends AppElement_base implements IAppElementProps, ISlottable {
    private readonly _breakpointController;
    private _drawerElement;
    private _headerElement;
    private _contentElement;
    private _theme;
    private _isNavOpen;
    private _hasNav;
    private _isMobile;
    private _hasHeader;
    /**
     * @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 `theme` property.
     *
     * @public
     */
    get theme(): ITheme | null;
    set theme(value: ITheme | null);
    /**
     * Gets or sets the `isNavOpen` property.
     *
     * @public
     * @attr
     */
    get isNavOpen(): boolean;
    set isNavOpen(value: boolean);
    /**
     * Gets or sets the `hasNav` property.
     *
     * @public
     * @attr
     */
    get hasNav(): boolean;
    set hasNav(value: boolean);
    /**
     * Gets or sets the `isMobile` property.
     *
     * @public
     * @readonly
     * @attr
     */
    get isMobile(): boolean;
    private set isMobile(value);
    /**
     * Gets or sets the `hasHeader` property.
     *
     * @public
     * @readonly
     * @attr
     */
    get hasHeader(): boolean;
    private set hasHeader(value);
    /**
     * Returns the `appHeaderElement` property.
     *
     * @hidden
     * @protected
     * @readonly
     */
    get header(): AppHeaderElement;
    /**
     * Returns the `contentElement` property.
     *
     * @hidden
     * @protected
     * @readonly
     */
    get content(): HTMLElement;
    /**
     * Toggles the navigation drawer.
     *
     * @public
     */
    toggleNavigation(): void;
    /**
     * Opens the navigation drawer.
     *
     * @public
     */
    openNavigation(): void;
    /**
     * Closes the navigation drawer.
     *
     * @public
     */
    closeNavigation(): void;
    onSlotChanges(slotName?: string): void;
    /**
     * @protected
     * @override
     */
    protected onApplyTemplate(): void;
    /**
     * @protected
     */
    protected onIsNavOpenPropertyChanged(_prev?: boolean, next?: boolean): void;
}
/**
 * @public
 */
export declare namespace AppElement {
    type Props = IAppElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-app': AppElement;
    }
}
export {};
//# sourceMappingURL=AppElement.d.ts.map