import { GridItemComponent } from './components/grid-items/component';
import { CompactType } from './utils/react-grid-layout.utils';
export type GridItemDimension = 'w' | 'h' | undefined;
export type DragActionType = 'drag' | 'resize';
export type COMPACT_TYPE = 'HORIZONTAL' | 'VERTICAL' | 'FREE';
export declare const GridCompactType: Record<COMPACT_TYPE, CompactType>;
export type GridCompactType = (typeof GridCompactType)[keyof typeof GridCompactType];
export type GridLayoutItem<Extra = unknown> = {
    id: string;
    x: number;
    y: number;
    w: number;
    h: number;
    minW?: number;
    minH?: number;
    maxW?: number;
    maxH?: number;
} & Extra;
export type GridLayout<Extra = unknown> = Array<GridLayoutItem<Extra>>;
export interface GridItemClientRect {
    top?: number;
    bottom?: number;
    left?: number;
    right?: number;
    width?: number;
    height?: number;
}
export interface GridItemDraggingInfo {
    pointerDownEvent: MouseEvent;
    pointerDragEvent: MouseEvent;
    gridElemClientRect: GridItemClientRect;
    dragElemClientRect: GridItemClientRect;
    scrollDifference: {
        top: number;
        left: number;
    };
}
export interface GridItemRenderData<T = number> {
    id: string;
    top: T;
    left: T;
    width: T;
    height: T;
}
export interface GridCfg {
    cols: number;
    rowHeight: number;
    layout: GridLayoutItem[];
    preventCollision?: boolean;
    gutter: number;
}
export interface DragResizeEvent {
    layout: GridLayout;
    layoutItem: GridLayoutItem;
    gridItemRef: GridItemComponent;
}
export type DragStartEvent = DragResizeEvent;
export type ResizeStartEvent = DragResizeEvent;
export type DragEndEvent = DragResizeEvent;
export type ResizeEndEvent = DragResizeEvent;
export interface ItemResizeEvent {
    width: number;
    height: number;
    gridItemRef: GridItemComponent;
}
