import { Layout, ReactGridLayoutProps, ResponsiveProps } from 'react-grid-layout'; export type GridDNDItems = { id: string; type: 's' | 'm' | 'l'; }; export type GridDNDItemConfig = { id: string; type: 's' | 'm' | 'l'; position: { x: number; y: number; w: number; h: number; }; }; export type GridDNDLayout = { breakpoint: string; cols: number; rowHeight: number; items: GridDNDItemConfig[]; }; export type GridDNDMeta = { itemsOrder: string[]; itemsOrderTyped?: GridDNDItems[]; }; export type GridDNDProps = { items: GridDNDItems[]; breakpoints?: Record; cols?: Record; rowHeights?: Record; isDraggable?: boolean; isResizable?: boolean; margin?: [number, number]; containerPadding?: [number, number]; preventCollision?: boolean; allowOverlap?: boolean; isBounded?: boolean; autoSize?: boolean; useCSSTransforms?: boolean; compactType?: ReactGridLayoutProps['compactType']; smartCompact?: boolean; resizeHandles?: ReactGridLayoutProps['resizeHandles']; draggableHandle?: string; draggableCancel?: string; maxRows?: ReactGridLayoutProps['maxRows']; transformScale?: ReactGridLayoutProps['transformScale']; onLayoutChange?: (layout: GridDNDLayout, allLayouts: Record, meta: GridDNDMeta) => void; onBreakpointChange?: (breakpoint: string, layout: GridDNDLayout) => void; onItemsChange?: (items: GridDNDItemConfig[]) => void; onWidthChange?: ResponsiveProps['onWidthChange']; onDrag?: ReactGridLayoutProps['onDrag']; onDragStart?: ReactGridLayoutProps['onDragStart']; onDragStop?: ReactGridLayoutProps['onDragStop']; onResize?: ReactGridLayoutProps['onResize']; onResizeStart?: ReactGridLayoutProps['onResizeStart']; onResizeStop?: ReactGridLayoutProps['onResizeStop']; children?: React.ReactNode | ((item: GridDNDItemConfig, onRemove: () => void, onResize: (type: 's' | 'm' | 'l') => void) => React.ReactNode); dragActivationDelay?: number; gridItemComponent?: React.ComponentType<{ children: React.ReactNode; isDraggable: boolean; className?: string; }>; containerStyle?: React.CSSProperties; gridStyle?: React.CSSProperties; enableLogs?: boolean; }; export type GridDNDRef = { api: { getOrder: () => string[]; getOrderDetailed: () => GridDNDItems[]; setOrder: (order: string[]) => void; addItem: (spec: GridDNDItems, index?: number) => void; removeItem: (id: string) => void; setItemType: (id: string, type: 's' | 'm' | 'l') => void; getAllLayouts: () => Record; getCurrentLayout: () => GridDNDLayout; }; };