import { IEventEmitter } from '@breadstone/mosaik-elements';
import type { IDrawerMarginChangedEventDetail } from '../../../events';
import { CustomElement } from '../../Abstracts/CustomElement';
import { DrawerContentElement } from './DrawerContentElement';
import { DrawerElement } from './DrawerElement';
import type { IDrawerContainerElementProps } from './IDrawerContainerElementProps';
declare const DrawerContainerElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Fitable").IFitableProps) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * DrawerContainer - A container element that wraps a drawer and its associated page content.
 *
 * @description
 * Organises a `mosaik-drawer` alongside the main page content, automatically adjusting
 * content margins when the drawer opens or closes in `side` mode.
 *
 * @name DrawerContainer
 * @element mosaik-drawer-container
 * @category Overlays
 *
 * @slot content - The content element.
 * @slot drawer - The drawer element.
 *
 * @cssprop {String} --drawer-container-font-family - The container font family CSS custom property.
 * @cssprop {String} --drawer-container-font-letter-spacing - The container font letter spacing CSS custom property.
 * @cssprop {String} --drawer-container-font-line-height - The container font line height CSS custom property.
 * @cssprop {String} --drawer-container-font-size - The container font size CSS custom property.
 * @cssprop {String} --drawer-container-font-text-decoration - The container font text decoration CSS custom property.
 * @cssprop {String} --drawer-container-font-text-transform - The container font text transform CSS custom property.
 * @cssprop {String} --drawer-container-font-weight - The container font weight CSS custom property.
 * @cssprop {String} --drawer-container-gap - The container gap CSS custom property.
 * @cssprop {String} --drawer-container-padding-bottom - The container padding bottom CSS custom property.
 * @cssprop {String} --drawer-container-padding-left - The container padding left CSS custom property.
 * @cssprop {String} --drawer-container-padding-right - The container padding right CSS custom property.
 * @cssprop {String} --drawer-container-padding-top - The container padding top CSS custom property.
 * @cssprop {String} --drawer-container-shadow - The container shadow CSS custom property.
 * @cssprop {String} --drawer-container-shadow-blur - The container shadow blur CSS custom property.
 * @cssprop {String} --drawer-container-shadow-color - The container shadow color CSS custom property.
 * @cssprop {String} --drawer-container-shadow-offset-x - The container shadow offset x CSS custom property.
 * @cssprop {String} --drawer-container-shadow-offset-y - The container shadow offset y CSS custom property.
 * @cssprop {String} --drawer-container-shadow-spread - The container shadow spread CSS custom property.
 * @cssprop {String} --drawer-container-transition-duration - The container transition duration CSS custom property.
 * @cssprop {String} --drawer-container-transition-mode - The container transition mode CSS custom property.
 * @cssprop {String} --drawer-container-transition-property - The container transition property CSS custom property.
 * @cssprop {String} --drawer-container-translate - The container translate CSS custom property.
 *
 * @fires contentMarginChanged {DrawerMarginChangedEvent} - Called when the content margin changed.
 *
 * @example
 * Basic drawer container:
 * ```html
 * <mosaik-drawer-container>
 *   <mosaik-drawer slot="drawer" position="left" mode="side"></mosaik-drawer>
 *   <main slot="content">Page content goes here</main>
 * </mosaik-drawer-container>
 * ```
 *
 * @example
 * Drawer container with backdrop:
 * ```html
 * <mosaik-drawer-container has-backdrop>
 *   <mosaik-drawer slot="drawer"></mosaik-drawer>
 *   <main slot="content">Page content</main>
 * </mosaik-drawer-container>
 * ```
 *
 * @public
 */
export declare class DrawerContainerElement extends DrawerContainerElement_base implements IDrawerContainerElementProps {
    private readonly _contentMarginChanged;
    private readonly _resizeController;
    private _drawer;
    private _content;
    private _autoSize;
    private _hasBackdrop;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `is` property.
     * The `is` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `autoSize` property.
     *
     * @public
     * @attr
     */
    get autoSize(): boolean;
    set autoSize(value: boolean);
    /**
     * Gets or sets the `hasBackdrop` property.
     *
     * @public
     * @attr
     */
    get hasBackdrop(): boolean;
    set hasBackdrop(value: boolean);
    /**
     * Called when the content margin changed.
     * Provides reference to `IDrawerMarginChangedEventDetails` as event argument.
     *
     * @public
     * @readonly
     * @eventProperty
     * @type IEventEmitter<IDrawerMarginChangedEventDetail>
     */
    get contentMarginChanged(): IEventEmitter<IDrawerMarginChangedEventDetail>;
    /**
     * Returns the `content` property.
     *
     * @public
     * @readonly
     */
    get content(): DrawerContentElement | null;
    /**
     * Returns the `drawer` property.
     *
     * @public
     * @readonly
     */
    get drawer(): DrawerElement | null;
    /**
     * @public
     */
    open(): void;
    /**
     * @public
     */
    close(): void;
    /**
     * @protected
     * @override
     */
    protected onApplyTemplate(): void;
    /**
     * @private
     *
     * Recalculates and updates the inline styles for the content. Note that this should be used
     * sparingly, because it causes a reflow.
     */
    private updateContentMargins;
}
/**
* @public
*/
export declare namespace DrawerContainerElement {
    type Props = IDrawerContainerElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-drawer-container': DrawerContainerElement;
    }
}
export {};
//# sourceMappingURL=DrawerContainerElement.d.ts.map