//#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; /** Fit entire timeline into the viewport (no scroll) */ fitToViewport: () => void; } //#endregion export { TimelineState }; //# sourceMappingURL=timelineStateContext.d.ts.map