import type { IEventDetail } from '@breadstone/mosaik-elements';
import type { IDragStartEventDetail, IResizeStartEventDetail } from './ResizeDragEvents';
/**
 * Represents the event detail for tile resize start events.
 *
 * @public
 */
export interface ITileResizeStartEventDetail extends IResizeStartEventDetail {
    /**
     * The tile element.
     */
    readonly tile?: unknown;
    /**
     * The column span.
     */
    readonly colSpan?: number;
    /**
     * The row span.
     */
    readonly rowSpan?: number;
}
/**
 * Event fired when tile resize starts.
 *
 * @public
 */
export type TileResizeStartEvent = CustomEvent<ITileResizeStartEventDetail>;
/**
 * Represents the event detail for tile resize end events.
 *
 * @public
 */
export interface ITileResizeEndEventDetail extends IResizeStartEventDetail {
    /**
     * The tile element.
     */
    readonly tile?: unknown;
    /**
     * The column span.
     */
    readonly colSpan?: number;
    /**
     * The row span.
     */
    readonly rowSpan?: number;
}
/**
 * Event fired when tile resize ends.
 *
 * @public
 */
export type TileResizeEndEvent = CustomEvent<ITileResizeEndEventDetail>;
/**
 * Represents the event detail for tile resize cancel events.
 *
 * @public
 */
export interface ITileResizeCancelEventDetail extends IResizeStartEventDetail {
    /**
     * The tile element.
     */
    readonly tile?: unknown;
    /**
     * The column span.
     */
    readonly colSpan?: number;
    /**
     * The row span.
     */
    readonly rowSpan?: number;
}
/**
 * Event fired when tile resize is cancelled.
 *
 * @public
 */
export type TileResizeCancelEvent = CustomEvent<ITileResizeCancelEventDetail>;
/**
 * Represents the event detail for tile drag start events.
 *
 * @public
 */
export interface ITileDragStartEventDetail extends IDragStartEventDetail {
    /**
     * The tile element.
     */
    readonly tile?: unknown;
    /**
     * The tile position.
     */
    readonly position?: number;
}
/**
 * Event fired when tile drag starts.
 *
 * @public
 */
export type TileDragStartEvent = CustomEvent<ITileDragStartEventDetail>;
/**
 * Represents the event detail for tile drag end events.
 *
 * @public
 */
export interface ITileDragEndEventDetail extends IDragStartEventDetail {
    /**
     * The tile element.
     */
    readonly tile?: unknown;
    /**
     * The tile position.
     */
    readonly position?: number;
}
/**
 * Event fired when tile drag ends.
 *
 * @public
 */
export type TileDragEndEvent = CustomEvent<ITileDragEndEventDetail>;
/**
 * Represents the event detail for tile drag cancel events.
 *
 * @public
 */
export interface ITileDragCancelEventDetail extends IDragStartEventDetail {
    /**
     * The tile element.
     */
    readonly tile?: unknown;
    /**
     * The tile position.
     */
    readonly position?: number;
}
/**
 * Event fired when tile drag is cancelled.
 *
 * @public
 */
export type TileDragCancelEvent = CustomEvent<ITileDragCancelEventDetail>;
/**
 * Represents the event detail for tile fullscreen events.
 *
 * @public
 */
export interface ITileFullscreenEventDetail extends IEventDetail {
    /**
     * Whether the tile is in fullscreen mode.
     */
    readonly isFullscreen: boolean;
}
/**
 * Event fired when tile fullscreen state changes.
 *
 * @public
 */
export type TileFullscreenEvent = CustomEvent<ITileFullscreenEventDetail>;
/**
 * Represents the event detail for tile maximize events.
 *
 * @public
 */
export interface ITileMaximizeEventDetail extends IEventDetail {
    /**
     * Whether the tile is maximized.
     */
    readonly isMaximized: boolean;
}
/**
 * Event fired when tile maximize state changes.
 *
 * @public
 */
export type TileMaximizeEvent = CustomEvent<ITileMaximizeEventDetail>;
declare global {
    interface HTMLElementEventMap {
        tileResizeStart: TileResizeStartEvent;
        tileResizeEnd: TileResizeEndEvent;
        tileResizeCancel: TileResizeCancelEvent;
        tileDragStart: TileDragStartEvent;
        tileDragEnd: TileDragEndEvent;
        tileDragCancel: TileDragCancelEvent;
        tileFullscreen: TileFullscreenEvent;
        tileMaximize: TileMaximizeEvent;
    }
}
//# sourceMappingURL=TileEvents.d.ts.map