import { GhanttTimelineScale } from './types';
/** Convierte `Date` o ISO/string en timestamp ms. */
export declare function ghanttParseTime(d: Date | string): number;
/** Inicio del día local (00:00) para un timestamp. */
export declare function ghanttStartOfLocalDay(ms: number): number;
/** Inicio del mes local. */
export declare function ghanttStartOfLocalMonth(ms: number): number;
/** Inicio de la hora local (minutos y segundos a 0). */
export declare function ghanttStartOfLocalHour(ms: number): number;
/** Suma meses calendario en hora local (mismo día del mes cuando existe). */
export declare function ghanttAddCalendarMonths(ms: number, delta: number): number;
export interface GhanttExpandedDayRangeOptions {
    /** Incluye el mes completo **anterior** al mes que contiene `viewStart`. @default true */
    includeLeadingFullMonth?: boolean;
}
/**
 * Rango de eje diario para rejilla y barras: mes anterior completo + meses hasta fin del mes de `viewEnd`.
 * `endExclusiveMs` es el instante 00:00 del día siguiente al último día incluido (intervalo semiabierto).
 */
export declare function ghanttResolveExpandedDayRange(viewStart: Date | string, viewEnd: Date | string, options?: GhanttExpandedDayRangeOptions): {
    startMs: number;
    endExclusiveMs: number;
};
export interface GhanttTimelineSlot {
    /** Inicio del intervalo del slot (ms). */
    startMs: number;
    /** Etiqueta breve para cabecera. */
    label: string;
}
/** Piso superior de la cabecera Gantt (p. ej. meses o años), alineado en ancho con los slots inferiores. */
export interface GhanttUpperSegment {
    /** Texto visible (mes y año, año, etc.). */
    label: string;
    /** Cuántos slots del piso inferior ocupa (misma suma que `slots.length`). */
    slotSpan: number;
}
/**
 * Agrupa slots consecutivos para el primer piso de la cabecera (alineado con el segundo piso).
 * - `day` / `week`: agrupa por mes–año del inicio de cada slot.
 * - `month`: agrupa por año.
 * - `year`: sin piso superior (solo años en el piso inferior).
 */
export declare function ghanttBuildUpperFloorSegments(slots: readonly GhanttTimelineSlot[], scale: GhanttTimelineScale): GhanttUpperSegment[];
/**
 * Genera slots alineados a `scale` entre `viewStart` y `viewEnd` para rejilla y cabecera.
 * Con `scale: 'day'`, por defecto amplía a meses completos (ver `ghanttResolveExpandedDayRange`).
 */
export declare function ghanttBuildTimelineSlots(viewStart: Date | string, viewEnd: Date | string, scale?: GhanttTimelineScale, options?: GhanttExpandedDayRangeOptions): GhanttTimelineSlot[];
/**
 * Posición horizontal de un intervalo [start,end] dentro del viewport [viewStart,viewEnd] en %.
 * Devuelve `null` si no hay solape.
 */
export declare function ghanttBarLayoutPercent(viewStartMs: number, viewEndMs: number, barStartMs: number, barEndMs: number): {
    leftPct: number;
    widthPct: number;
} | null;
/**
 * Intervalo temporal que cubren los slots generados (para posicionar barras alineadas a la rejilla).
 * `endExclusiveMs` es exclusivo.
 */
export declare function ghanttSlotsTimeExtent(slots: readonly GhanttTimelineSlot[], scale: GhanttTimelineScale): {
    startMs: number;
    endExclusiveMs: number;
} | null;
//# sourceMappingURL=ganttTimeline.d.ts.map