import { TimelineState } from "./timeline/timelineStateContext.js";
import * as lit33 from "lit";
import { LitElement } from "lit";
import * as lit_html31 from "lit-html";

//#region src/gui/EFTimelineRuler.d.ts
/**
 * Quantize a time value to the nearest frame boundary.
 * This ensures frame markers align perfectly with playhead position.
 */
declare function quantizeToFrameTimeMs(timeMs: number, fps: number): number;
/**
 * Calculate the duration of a single frame in milliseconds.
 */
declare function calculateFrameIntervalMs(fps: number): number;
/**
 * Calculate pixels per frame given frame interval and zoom scale.
 * @param frameIntervalMs Duration of one frame in ms
 * @param pixelsPerMs Current zoom level (pixels per millisecond)
 */
declare function calculatePixelsPerFrame(frameIntervalMs: number, pixelsPerMs: number): number;
/**
 * Determine if frame markers should be visible at the current zoom level.
 * Frame markers appear when each frame is at least MIN_FRAME_SPACING_PX wide.
 */
declare function shouldShowFrameMarkers(pixelsPerFrame: number, minSpacing?: number): boolean;
declare class EFTimelineRuler extends LitElement {
  static styles: lit33.CSSResult[];
  durationMs: number;
  contextDurationMs: number;
  timelineState?: TimelineState;
  fps: number;
  /** Full content width in pixels (for virtualization) */
  contentWidth: number;
  private containerRef;
  private canvasRef;
  private resizeObserver?;
  private viewportWidth;
  /** Canvas viewport left position for virtualization */
  private _canvasViewportLeft;
  /** Canvas viewport width for virtualization */
  private _canvasViewportWidth;
  /** Last rendered scroll position - for detecting scroll changes */
  private _lastRenderedScrollLeft;
  /** Last rendered viewport width - for detecting viewport changes */
  private _lastRenderedViewportWidth;
  get effectiveDurationMs(): number;
  get pixelsPerMs(): number;
  get scrollLeft(): number;
  /**
   * Calculate canvas viewport bounds for virtualization.
   * Returns the left position and width of the canvas viewport.
   */
  private calculateCanvasViewport;
  connectedCallback(): void;
  disconnectedCallback(): void;
  protected firstUpdated(): void;
  protected updated(changedProperties: Map<string | number | symbol, unknown>): void;
  private calculateLabelInterval;
  private getVisibleLabels;
  private renderCanvas;
  render(): lit_html31.TemplateResult<1>;
}
declare global {
  interface HTMLElementTagNameMap {
    "ef-timeline-ruler": EFTimelineRuler;
  }
}
//#endregion
export { EFTimelineRuler, calculateFrameIntervalMs, calculatePixelsPerFrame, quantizeToFrameTimeMs, shouldShowFrameMarkers };
//# sourceMappingURL=EFTimelineRuler.d.ts.map