import { CalendarEvent, ResolvedCalendarEvent } from './types'; /** Evento ya posicionado dentro de una columna horaria, en porcentajes. */ export interface PositionedEvent { readonly resolved: ResolvedCalendarEvent; /** Distancia al tope de la columna, en % del alto total. */ readonly top: number; readonly height: number; /** Posición horizontal cuando hay eventos superpuestos, en % del ancho. */ readonly left: number; readonly width: number; /** El evento empieza antes del día/rango visible. */ readonly clippedStart: boolean; readonly clippedEnd: boolean; } /** * Normaliza los eventos de entrada: descarta los que no tienen fecha válida, * completa el `end` faltante y expande los `allDay` al día entero. */ export declare function resolveEvents(events: readonly CalendarEvent[], defaultDuration: number): ResolvedCalendarEvent[]; /** Orden de lectura: por inicio y, a igual inicio, el más largo primero. */ export declare function compareEvents(a: ResolvedCalendarEvent, b: ResolvedCalendarEvent): number; /** * Eventos que tocan un día. Un evento multi-día aparece en cada día que abarca * (el componente no dibuja barras horizontales que atraviesen la semana). */ export declare function eventsForDay(events: readonly ResolvedCalendarEvent[], day: Date): ResolvedCalendarEvent[]; /** * Separa los eventos de un día entre los que van a la fila superior y los que * se posicionan en la grilla horaria. Un evento con hora que cae fuera de * [minMinutes, maxMinutes] sube a la fila superior en lugar de desaparecer. */ export declare function splitDayEvents(events: readonly ResolvedCalendarEvent[], day: Date, minMinutes: number, maxMinutes: number): { topRow: ResolvedCalendarEvent[]; timed: ResolvedCalendarEvent[]; }; /** * Posiciona los eventos con hora de un día resolviendo superposiciones: los que * se solapan se reparten el ancho en columnas (mismo criterio que Google * Calendar), calculadas por grupo de solapamiento y no sobre el día entero. */ export declare function layoutDayEvents(events: readonly ResolvedCalendarEvent[], day: Date, minMinutes: number, maxMinutes: number): PositionedEvent[];