import { ICalendarEvent } from '../../types/CalendarTypes';

/**
 * Stack link metadata stored on event elements
 * Simplified from V1: No prev/next chains - only stackLevel needed for rendering
 */
export interface IStackLink {
  stackLevel: number;
}

/**
 * Layout result for a stacked event (overlapping events with margin offset)
 */
export interface IStackedEventLayout {
  event: ICalendarEvent;
  stackLevel: number;
}

/**
 * Layout result for a grid group (simultaneous events side-by-side)
 */
export interface IGridGroupLayout {
  events: ICalendarEvent[];
  columns: ICalendarEvent[][];  // Events grouped by column (non-overlapping within column)
  stackLevel: number;           // Stack level for entire group (if nested in another event)
  position: { top: number };    // Top position of earliest event in pixels
}

/**
 * Complete layout result for a column's events
 */
export interface IColumnLayout {
  grids: IGridGroupLayout[];
  stacked: IStackedEventLayout[];
}
