/** Width (px) of the sticky track-header column in the timeline. */ export declare const TRACK_HEADER_W = 160; /** Pixel distance within which a dragged edge snaps to a candidate. */ export declare const SNAP_PX = 8; /** Drag MIME prefix for bin items; suffixed with the item's media type so * lanes can accept/reject during dragover (data is unreadable until drop). */ export declare const BIN_ITEM_MIME_PREFIX = "application/x-timeline-bin-"; export declare function timeToPx(t: number, zoom: number): number; export declare function pxToTime(px: number, zoom: number): number; export declare function frameToPx(frame: number, fps: number, zoom: number): number; export declare function pxToFrame(px: number, fps: number, zoom: number): number; /** * Snap a time to the nearest candidate within threshold seconds. Returns the * original time when nothing is close enough. */ export declare function snap(t: number, candidates: number[], threshold: number): number; /** Format a frame count as HH:MM:SS:FF at the given fps. */ export declare function formatTimecode(frame: number, fps: number): string; /** Format seconds as a short duration label for clips/bin items (e.g. 12.5s). */ export declare function formatDuration(t: number): string; export declare function groupColor(groupId: string): string; /** * Pick a "nice" ruler tick interval for the current zoom so labels stay * readable (~target px apart). */ export declare function rulerInterval(zoom: number, targetPx?: number): number;