import { MouseEvent as ReactMouseEvent, ReactNode } from 'react';
import { AreasViewerProps } from '../../../../types';
import { PanelSide } from '../../../../../../types';
/**
 * Shared props used by the BaseArea subtree to identify the rendered area.
 */
export type InnerForHooksProps = {
    areaId: string;
    selected: boolean;
    size: AreasViewerProps['size'];
};
/**
 * Props required to render the panel-aware body for one area.
 */
export type AreaPanelsProps = InnerForHooksProps & {
    children: ReactNode;
};
/**
 * Normalized panel model consumed by the runtime layout layer.
 */
export type PanelRuntimeDescriptor = {
    windowId: string;
    side: PanelSide;
    pinned: boolean;
    width: number;
    height: number;
    maxWidth?: number;
    maxHeight?: number;
};
/**
 * Props used by one concrete panel slot instance.
 */
export type PanelWindowProps = {
    areaId: string;
    selected: boolean;
    overlay: boolean;
    panel: PanelRuntimeDescriptor;
    panelZIndexBase: number;
    onPinnedResizeStart?: (panel: PanelRuntimeDescriptor, event: ReactMouseEvent<HTMLDivElement>) => void;
};
/**
 * Transient resize state for overlay panels, tracked locally inside their slot.
 */
export type ResizeSession = {
    pointerStart: number;
    sizeStart: number;
};
/**
 * Transient resize state for pinned panels, tracked at the area layout level.
 */
export type PinnedResizeSession = {
    pointerStart: number;
    sizeStart: number;
    panel: PanelRuntimeDescriptor;
};
/**
 * Live width/height override used while a pinned panel is being resized.
 */
export type PanelLiveSize = Partial<Pick<PanelRuntimeDescriptor, 'width' | 'height'>>;
/**
 * Grouped panel collections split by side and by docked/overlay mode.
 */
export type PanelsByArea = {
    pinned: Record<PanelSide, PanelRuntimeDescriptor[]>;
    overlay: Record<PanelSide, PanelRuntimeDescriptor[]>;
};
//# sourceMappingURL=types.d.ts.map