import { CustomElement } from '../Abstracts/CustomElement';
import { DrawerElement } from '../Overlays/Drawer/DrawerElement';
import { AppHeaderElement } from './AppHeaderElement';
import { IAppElementProps } from './IAppElementProps';
import { ITheme } from '@breadstone/mosaik-themes';
declare const AppElement_base: (abstract new (...args: Array<any>) => import("../../Behaviors/Themeable").IThemeableProps) & typeof CustomElement & import("../../Behaviors/Themeable").IThemeableCtor;
/**
 * App - A container component that manages the layout and structure of the application, typically including
 *       navigation drawers, headers, and main content areas.
 *
 * @description
 * The App component provides a wrapper for the main layout of an application. It includes support for navigation
 * drawers, headers, and a content area, allowing for a consistent and customizable structure. This component is useful
 * for applications that require a flexible layout with integrated navigation and content management.
 *
 * @name App
 * @element mosaik-app
 * @category Shell
 *
 * @csspart header - The header section of the App, often used for titles or app branding.
 * @csspart content - The main content area of the App.
 * @csspart drawer - The part of the App responsible for the navigation drawer.
 * @csspart nav - The navigation part of the App, used for placing navigation links or menus.
 *
 * @dependency {DrawerElement} - The Drawer element used for navigation.
 * @dependency {AppHeaderElement} - The App Header element for displaying the application header.
 * @dependency {Theme2Element} - The Theme element for applying theming and styling.
 *
 * @slot nav - The slot for navigation elements.
 * @slot menu - The slot for menu items.
 * @slot logo - The slot for the application logo or branding.
 * @slot actions - The slot for action buttons or icons.
 * @slot content - The main content area of the App.
 * @slot footer - The footer area of the App, typically used for additional information or links.
 *
 * @example
 * ```html
 * <mosaik-app>
 *   <div slot="nav">
 *   </div>
 *   <div slot="menu">
 *   </div>
 *   <div slot="logo">
 *   </div>
 *   <div slot="actions">
 *   </div>
 *   <div slot="content">
 *     <!-- Main content area here -->
 *   </div>
 *   <div slot="footer">
 *     <!-- Footer content here -->
 *   </div>
 * </mosaik-app>
 * ```
 *
 * @public
 */
export declare class AppElement extends AppElement_base implements IAppElementProps {
    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 `drawerElement` property.
     *
     * @hidden
     * @protected
     * @readonly
     */
    get drawer(): DrawerElement;
    /**
     * Returns the `appHeaderElement` property.
     *
     * @hidden
     * @protected
     * @readonly
     */
    get header(): AppHeaderElement;
    /**
     * Returns the `contentElement` property.
     *
     * @hidden
     * @protected
     * @readonly
     */
    get content(): HTMLElement;
    /**
     * @protected
     * @override
     */
    protected onApplyTemplate(): void;
}
/**
 * @public
 */
export declare namespace AppElement {
    type Props = IAppElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-app': AppElement;
    }
}
export {};
//# sourceMappingURL=AppElement.d.ts.map