import { type IEventEmitter } from '@breadstone/mosaik-elements';
import type { ILayoutChangedEventDetail } from '../../../events';
import type { TileManagerDragMode } from '../../../Types/TileManagerDragMode';
import type { TileManagerResizeMode } from '../../../Types/TileManagerResizeMode';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { ISerializedTile } from './ISerializedTile';
import type { ITileManagerElementProps } from './ITileManagerElementProps';
import { TileManagerTileElement } from './TileManagerTileElement';
declare const TileManagerElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * The tile manager component is a layout container used to display a group of tiles.
 * The tiles can be dragged to a different position, resized, maximized, or made full-screen.
 * The layout of tiles within the tile manager can be saved for later use.
 *
 * @element mosaik-tile-manager
 * @category Layout
 *
 * @slot - Default slot for tile elements.
 *
 * @csspart base - The wrapper for the entire tile manager content.
 * @csspart maximized-overlay - The overlay shown when a tile is maximized.
 *
 * @cssprop {String} --tile-manager-background - The manager background CSS custom property.
 * @cssprop {String} --tile-manager-font-family - The manager font family CSS custom property.
 * @cssprop {String} --tile-manager-font-letter-spacing - The manager font letter spacing CSS custom property.
 * @cssprop {String} --tile-manager-font-line-height - The manager font line height CSS custom property.
 * @cssprop {String} --tile-manager-font-size - The manager font size CSS custom property.
 * @cssprop {String} --tile-manager-font-text-decoration - The manager font text decoration CSS custom property.
 * @cssprop {String} --tile-manager-font-text-transform - The manager font text transform CSS custom property.
 * @cssprop {String} --tile-manager-font-weight - The manager font weight CSS custom property.
 * @cssprop {String} --tile-manager-gap - The manager gap CSS custom property.
 * @cssprop {String} --tile-manager-padding-bottom - The manager padding bottom CSS custom property.
 * @cssprop {String} --tile-manager-padding-left - The manager padding left CSS custom property.
 * @cssprop {String} --tile-manager-padding-right - The manager padding right CSS custom property.
 * @cssprop {String} --tile-manager-padding-top - The manager padding top CSS custom property.
 * @cssprop {String} --tile-manager-shadow - The manager shadow CSS custom property.
 * @cssprop {String} --tile-manager-shadow-blur - The manager shadow blur CSS custom property.
 * @cssprop {String} --tile-manager-shadow-color - The manager shadow color CSS custom property.
 * @cssprop {String} --tile-manager-shadow-offset-x - The manager shadow offset x CSS custom property.
 * @cssprop {String} --tile-manager-shadow-offset-y - The manager shadow offset y CSS custom property.
 * @cssprop {String} --tile-manager-shadow-spread - The manager shadow spread CSS custom property.
 * @cssprop {String} --tile-manager-transition-duration - The manager transition duration CSS custom property.
 * @cssprop {String} --tile-manager-transition-mode - The manager transition mode CSS custom property.
 * @cssprop {String} --tile-manager-transition-property - The manager transition property CSS custom property.
 * @cssprop {String} --tile-manager-translate - The manager translate CSS custom property.
 *
 * @fires layoutChanged {LayoutChangedEvent} - Fired when the layout changes.
 *
 * @example
 * Basic tile manager with two tiles:
 * ```html
 * <mosaik-tile-manager gap="16">
 *   <mosaik-tile-manager-tile col-span="2" row-span="1"></mosaik-tile-manager-tile>
 *   <mosaik-tile-manager-tile col-span="1" row-span="2"></mosaik-tile-manager-tile>
 * </mosaik-tile-manager>
 * ```
 *
 * @example
 * Tile manager with resize and drag enabled:
 * ```html
 * <mosaik-tile-manager resize-mode="hover" drag-mode="tile" column-count="3">
 *   <mosaik-tile-manager-tile></mosaik-tile-manager-tile>
 *   <mosaik-tile-manager-tile disable-maximize></mosaik-tile-manager-tile>
 * </mosaik-tile-manager>
 * ```
 *
 * @public
 */
export declare class TileManagerElement extends TileManagerElement_base implements ITileManagerElementProps {
    private _resizeMode;
    private _dragMode;
    private _columnCount;
    private _minColumnWidth;
    private _minRowHeight;
    private _gap;
    private readonly _tilesState;
    private readonly _serializer;
    private readonly _slotController;
    private readonly _layoutChanged;
    /**
     * Constructs a new instance of the `TileManagerElement` class.
     *
     * @public
     */
    constructor();
    /**
     * Returns the `is` property.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `resizeMode` property.
     * Determines when the resize handles are visible.
     *
     * - `none` - Resize handles are not visible.
     * - `hover` - Resize handles are visible on hover.
     * - `always` - Resize handles are always visible.
     *
     * @public
     * @attr resize-mode
     */
    get resizeMode(): TileManagerResizeMode;
    set resizeMode(value: TileManagerResizeMode);
    /**
     * Gets or sets the `dragMode` property.
     * Determines how the tiles can be dragged.
     *
     * - `none` - Tiles cannot be dragged.
     * - `tile` - Tiles can be dragged from any part of the tile.
     * - `tile-header` - Tiles can be dragged from the tile header only.
     *
     * @public
     * @attr drag-mode
     */
    get dragMode(): TileManagerDragMode;
    set dragMode(value: TileManagerDragMode);
    /**
     * Gets or sets the `columnCount` property.
     * Specifies the number of columns in the grid.
     *
     * @public
     * @attr column-count
     */
    get columnCount(): number | null;
    set columnCount(value: number | null);
    /**
     * Gets or sets the `minColumnWidth` property.
     * Specifies the minimum column width in pixels.
     * Used with auto-fit columns.
     *
     * @public
     * @attr min-column-width
     */
    get minColumnWidth(): number | null;
    set minColumnWidth(value: number | null);
    /**
     * Gets or sets the `minRowHeight` property.
     * Specifies the minimum row height in pixels.
     *
     * @public
     * @attr min-row-height
     */
    get minRowHeight(): number | null;
    set minRowHeight(value: number | null);
    /**
     * Gets or sets the `gap` property.
     * Specifies the gap between tiles in pixels.
     *
     * @public
     * @attr
     */
    get gap(): number | null;
    set gap(value: number | null);
    /**
     * Gets all tile elements in the tile manager.
     *
     * @public
     * @readonly
     */
    get tiles(): Array<TileManagerTileElement>;
    /**
     * Gets the currently maximized tile, if any.
     *
     * @public
     * @readonly
     */
    get maximizedTile(): TileManagerTileElement | null;
    /**
     * Gets the layoutChange event emitter.
     *
     * @public
     * @readonly
     */
    get layoutChanged(): IEventEmitter<ILayoutChangedEventDetail>;
    /**
     * @public
     * @override
     */
    connectedCallback(): void;
    /**
     * Handles slot changes to update tile positions.
     *
     * @public
     */
    handleSlotChange(): void;
    /**
     * Saves the current layout state.
     *
     * @returns An array of serialized tile states.
     *
     * @public
     */
    saveLayout(): Array<ISerializedTile>;
    /**
     * Saves the current layout state as a JSON string.
     *
     * @returns A JSON string representing the layout.
     *
     * @public
     */
    saveLayoutAsJSON(): string;
    /**
     * Loads a previously saved layout.
     *
     * @param layout - The serialized layout to load.
     *
     * @public
     */
    loadLayout(layout: Array<ISerializedTile>): void;
    /**
     * Loads a layout from a JSON string.
     *
     * @param json - The JSON string representing the layout.
     *
     * @public
     */
    loadLayoutFromJSON(json: string): void;
}
/**
 * @public
 */
export declare namespace TileManagerElement {
    type Props = ITileManagerElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-tile-manager': TileManagerElement;
    }
}
export {};
//# sourceMappingURL=TileManagerElement.d.ts.map