//#region src/gui/timeline/timelineStateContext.d.ts
/**
 * The core invariant of the timeline system.
 * Everything else (ruler positions, track positions, playhead position) derives from this.
 */
interface TimelineState {
  /** Pixels per millisecond - the single zoom value */
  pixelsPerMs: number;
  /** Current playhead position in milliseconds */
  currentTimeMs: number;
  /** Total duration in milliseconds */
  durationMs: number;
  /** Viewport scroll position in pixels - single source of truth for visible time range */
  viewportScrollLeft: number;
  /** Viewport width in pixels - for calculating visible time range */
  viewportWidth: number;
  /** Seek to a specific time */
  seek: (timeMs: number) => void;
  /** Zoom in */
  zoomIn: () => void;
  /** Zoom out */
  zoomOut: () => void;
}
//#endregion
export { TimelineState };
//# sourceMappingURL=timelineStateContext.d.ts.map