import type { Weekday } from "../calendar/types"; import type { GanttBar, GanttRow, GanttScale, GanttTask, GanttTick } from "./types"; /** Pixels per day at each zoom. Day = roomy single days; month = dense quarters. */ export declare function pxPerDay(scale: GanttScale): number; /** The axis window: from the earliest task start to the latest end, padded so * bars never hug the edges. Falls back to a month around `today` when empty. */ export declare function axisRange(tasks: GanttTask[], today?: Date, padDays?: number): { start: Date; end: Date; }; /** Bar geometry: left = days from axis start; width spans the inclusive end. * A milestone has no span — it is a marker centred on its day. */ export declare function barGeometry(task: GanttTask, axisStart: Date, scale: GanttScale): GanttBar; /** * The chart's lines, in render order: each lane's heading followed by its tasks. * Ungrouped tasks lead, so a chart that uses no groups is unchanged; lanes appear * in the order they are first seen, which keeps the caller's own array order * rather than sorting alphabetically behind their back. */ export declare function buildRows(tasks: GanttTask[]): GanttRow[]; /** * Header ticks across [start, end]. Granularity follows the zoom: a tick per day * (day), per week (week), or per month (month). Each tick flags a month start so * the view can draw a heavier divider / month band — the monday.com two-level feel. */ export declare function buildTicks(axisStart: Date, axisEnd: Date, scale: GanttScale, locale?: string, weekStartsOn?: Weekday): GanttTick[];