export { parseDateCell, tlProgressFrac } from '../core/cells.js'; /** days since epoch, UTC — the x-axis unit */ export declare function dayNum(iso: string): number; export interface TimelineScale { /** the grid unit, chosen from the span itself: weeks while they stay * countable, months after (~10 weeks) */ unit: 'week' | 'month'; /** the padded domain — the data's span expanded to unit boundaries * (weeks start Monday, months on the 1st) so ticks align with the grid */ min: string; max: string; ticks: { iso: string; label: string; }[]; } /** The time grid over the DATA's own span. Deterministic: same dates in, same * domain, ticks and labels out, wherever it runs. */ export declare function timelineScale(minISO: string, maxISO: string): TimelineScale; /** where a date sits on the padded domain, percent 0..100 */ export declare function tlPct(iso: string, scale: TimelineScale): number; /** a bar's geometry, END-INCLUSIVE: an item due the day it starts is one day * of work, not zero pixels */ export declare function tlBarPct(start: string, end: string, scale: TimelineScale): { left: number; width: number; }; /** the viewer's LOCAL civil date as YYYY-MM-DD. Every bar is a civil date * written in a document, so the today line must come from the same frame: * toISOString() is the UTC calendar date, which sits on tomorrow's grid * position all evening west of UTC and on yesterday's all morning east. */ export declare function tlLocalISO(d?: Date): string; /** the today marker's position — null when today is outside the domain, so a * finished (or unstarted) timeline never draws a stray line */ export declare function tlTodayPct(todayISO: string, scale: TimelineScale): number | null; /** a date n days later (negative n: earlier) — same UTC day math as dayNum */ export declare function tlAddDays(iso: string, n: number): string; /** the snap grid under a gesture, in days: day cells under week ticks, week * steps under month ticks — one unit finer than the drawn scale, so a drop * lands where the grid suggests it will */ export declare function tlSnapDays(unit: TimelineScale['unit']): number; /** pixel travel → a snapped day delta over the padded domain. Deterministic * and total: a zero-width track (nothing laid out yet) moves nothing. */ export declare function tlDragDays(dxPx: number, trackPx: number, scale: TimelineScale, snap: number): number; /** What a settled gesture MEANS in dates. `move` shifts both ends together; * a resize moves one end and CLAMPS at the other — a handle dragged past its * partner settles on a one-day bar, it never inverts into the end