import type { IEventDetail } from '@breadstone/mosaik-elements';
/**
 * Represents the event detail for resize start events.
 *
 * @public
 */
export interface IResizeStartEventDetail extends IEventDetail {
    /**
     * The x-coordinate.
     */
    readonly x?: number;
    /**
     * The y-coordinate.
     */
    readonly y?: number;
    /**
     * The width.
     */
    readonly width?: number;
    /**
     * The height.
     */
    readonly height?: number;
    /**
     * The resize direction.
     */
    readonly direction?: unknown;
    /**
     * The starting x-coordinate.
     */
    readonly startX?: number;
    /**
     * The starting y-coordinate.
     */
    readonly startY?: number;
    /**
     * The delta x from the previous event.
     */
    readonly deltaX?: number;
    /**
     * The delta y from the previous event.
     */
    readonly deltaY?: number;
    /**
     * The total delta x from the start.
     */
    readonly totalDeltaX?: number;
    /**
     * The total delta y from the start.
     */
    readonly totalDeltaY?: number;
}
/**
 * Event fired when resize starts.
 *
 * @public
 */
export type ResizeStartEvent = CustomEvent<IResizeStartEventDetail>;
/**
 * Represents the event detail for resizing events.
 *
 * @public
 */
export interface IResizingEventDetail extends IEventDetail {
    /**
     * The x-coordinate.
     */
    readonly x?: number;
    /**
     * The y-coordinate.
     */
    readonly y?: number;
    /**
     * The width.
     */
    readonly width?: number;
    /**
     * The height.
     */
    readonly height?: number;
    /**
     * The resize direction.
     */
    readonly direction?: unknown;
    /**
     * The starting x-coordinate.
     */
    readonly startX?: number;
    /**
     * The starting y-coordinate.
     */
    readonly startY?: number;
    /**
     * The current x-coordinate.
     */
    readonly currentX?: number;
    /**
     * The current y-coordinate.
     */
    readonly currentY?: number;
    /**
     * The new width.
     */
    readonly newWidth?: number;
    /**
     * The new height.
     */
    readonly newHeight?: number;
    /**
     * The delta x from the previous event.
     */
    readonly deltaX?: number;
    /**
     * The delta y from the previous event.
     */
    readonly deltaY?: number;
    /**
     * The total delta x from the start.
     */
    readonly totalDeltaX?: number;
    /**
     * The total delta y from the start.
     */
    readonly totalDeltaY?: number;
}
/**
 * Event fired during resize.
 *
 * @public
 */
export type ResizingEvent = CustomEvent<IResizingEventDetail>;
/**
 * Represents the event detail for resize end events.
 *
 * @public
 */
export interface IResizeEndEventDetail extends IEventDetail {
    /**
     * The x-coordinate.
     */
    readonly x?: number;
    /**
     * The y-coordinate.
     */
    readonly y?: number;
    /**
     * The width.
     */
    readonly width?: number;
    /**
     * The height.
     */
    readonly height?: number;
    /**
     * The final width.
     */
    readonly finalWidth?: number;
    /**
     * The final height.
     */
    readonly finalHeight?: number;
    /**
     * The resize direction.
     */
    readonly direction?: unknown;
    /**
     * The starting x-coordinate.
     */
    readonly startX?: number;
    /**
     * The starting y-coordinate.
     */
    readonly startY?: number;
    /**
     * The delta x from the previous event.
     */
    readonly deltaX?: number;
    /**
     * The delta y from the previous event.
     */
    readonly deltaY?: number;
    /**
     * The total delta x from the start.
     */
    readonly totalDeltaX?: number;
    /**
     * The total delta y from the start.
     */
    readonly totalDeltaY?: number;
}
/**
 * Event fired when resize ends.
 *
 * @public
 */
export type ResizeEndEvent = CustomEvent<IResizeEndEventDetail>;
/**
 * Represents the event detail for resize cancel events.
 *
 * @public
 */
export interface IResizeCancelEventDetail extends IEventDetail {
    /**
     * The x-coordinate.
     */
    readonly x?: number;
    /**
     * The y-coordinate.
     */
    readonly y?: number;
    /**
     * The width.
     */
    readonly width?: number;
    /**
     * The height.
     */
    readonly height?: number;
}
/**
 * Event fired when resize is cancelled.
 *
 * @public
 */
export type ResizeCancelEvent = CustomEvent<IResizeCancelEventDetail>;
/**
 * Represents the event detail for drag start events.
 *
 * @public
 */
export interface IDragStartEventDetail extends IEventDetail {
    /**
     * The x-coordinate.
     */
    readonly x?: number;
    /**
     * The y-coordinate.
     */
    readonly y?: number;
}
/**
 * Event fired when drag starts.
 *
 * @public
 */
export type DragStartEvent = CustomEvent<IDragStartEventDetail>;
/**
 * Represents the event detail for dragging events.
 *
 * @public
 */
export interface IDraggingEventDetail extends IEventDetail {
    /**
     * The x-coordinate.
     */
    readonly x?: number;
    /**
     * The y-coordinate.
     */
    readonly y?: number;
}
/**
 * Event fired during drag.
 *
 * @public
 */
export type DraggingEvent = CustomEvent<IDraggingEventDetail>;
/**
 * Represents the event detail for drag end events.
 *
 * @public
 */
export interface IDragEndEventDetail extends IEventDetail {
    /**
     * The x-coordinate.
     */
    readonly x?: number;
    /**
     * The y-coordinate.
     */
    readonly y?: number;
}
/**
 * Event fired when drag ends.
 *
 * @public
 */
export type DragEndEvent = CustomEvent<IDragEndEventDetail>;
/**
 * Represents the event detail for drag cancel events.
 *
 * @public
 */
export interface IDragCancelEventDetail extends IEventDetail {
    /**
     * The x-coordinate.
     */
    readonly x?: number;
    /**
     * The y-coordinate.
     */
    readonly y?: number;
}
/**
 * Event fired when drag is cancelled.
 *
 * @public
 */
export type DragCancelEvent = CustomEvent<IDragCancelEventDetail>;
/**
 * Represents the event detail for reposition events.
 *
 * @public
 */
export interface IRepositionEventDetail extends IEventDetail {
    /**
     * The new position.
     */
    readonly position: number;
}
/**
 * Event fired when an element is repositioned.
 *
 * @public
 */
export type RepositionEvent = CustomEvent<IRepositionEventDetail>;
declare global {
    interface HTMLElementEventMap {
        resizeStart: ResizeStartEvent;
        resizing: ResizingEvent;
        resizeEnd: ResizeEndEvent;
        resizeCancel: ResizeCancelEvent;
        dragStart: DragStartEvent;
        dragging: DraggingEvent;
        dragEnd: DragEndEvent;
        dragCancel: DragCancelEvent;
        repositioned: RepositionEvent;
        resizeResizeStarted: CustomEvent<unknown>;
        resizeResized: CustomEvent<unknown>;
        resizeResizeEnded: CustomEvent<unknown>;
        resizeResizeCanceled: CustomEvent<unknown>;
    }
}
//# sourceMappingURL=ResizeDragEvents.d.ts.map