/** Milliseconds ↔ pixels and timecode helpers for media timelines. */ export type TimeTickLevel = 'major' | 'mid' | 'minor'; export interface TimeTick { ms: number; level: TimeTickLevel; /** @deprecated Prefer `level === 'major'` */ major: boolean; } export declare function msToPx(ms: number, pxPerMs: number): number; export declare function pxToMs(px: number, pxPerMs: number): number; /** px per ms from a zoom level (1 = 0.05 px/ms ≈ 50px/s). */ export declare function pxPerMsFromZoom(zoom: number): number; export declare function snapMs(ms: number, snapToMs: number): number; export declare function clampMs(ms: number, min?: number, max?: number): number; /** Format as HH:MM:SS or MM:SS.mmm when showMs. */ export declare function formatTimecode(ms: number, opts?: { showMs?: boolean; fps?: number; }): string; /** * Major / mid / minor ticks for a duration (same hierarchy idea as MediaStage rulers). * mid = major/2, minor = major/10. */ export declare function ticksForDuration(durationMs: number, pxPerMs: number, minTickPx?: number): TimeTick[]; /** Suggested snap interval from current zoom (mid tick step). */ export declare function snapStepForZoom(pxPerMs: number, minTickPx?: number): number;