import { FrameRenderable, FrameState } from "../preview/FrameController.js";
import { TemporalMixinInterface } from "./EFTemporal.js";
import { EFAudio } from "./EFAudio.js";
import { EFVideo } from "./EFVideo.js";
import { TargetController } from "./TargetController.js";
import * as lit6 from "lit";
import { LitElement, PropertyValueMap } from "lit";
import { Ref } from "lit/directives/ref.js";
import * as lit_html6 from "lit-html";

//#region src/elements/EFWaveform.d.ts
declare const EFWaveform_base: (new (...args: any[]) => TemporalMixinInterface) & typeof LitElement;
declare class EFWaveform extends EFWaveform_base implements FrameRenderable {
  #private;
  static styles: lit6.CSSResult;
  canvasRef: Ref<HTMLCanvasElement>;
  private ctx;
  private styleObserver;
  private resizeObserver?;
  private mutationObserver?;
  /**
   * Get the current render version.
   * Version increments when mode, color, barSpacing, lineWidth, or target changes.
   * @public
   */
  get renderVersion(): number;
  render(): lit_html6.TemplateResult<1>;
  mode: "roundBars" | "bars" | "bricks" | "line" | "curve" | "pixel" | "wave" | "spikes";
  color: string;
  target: string;
  barSpacing: number;
  targetElement: EFAudio | EFVideo | null;
  lineWidth: number;
  targetController: TargetController;
  connectedCallback(): void;
  disconnectedCallback(): void;
  private resizeCanvas;
  protected initCanvas(): CanvasRenderingContext2D | null;
  protected drawBars(ctx: CanvasRenderingContext2D, frequencyData: Uint8Array): void;
  protected drawBricks(ctx: CanvasRenderingContext2D, frequencyData: Uint8Array): void;
  protected drawRoundBars(ctx: CanvasRenderingContext2D, frequencyData: Uint8Array): void;
  protected drawLine(ctx: CanvasRenderingContext2D, frequencyData: Uint8Array): void;
  protected drawCurve(ctx: CanvasRenderingContext2D, frequencyData: Uint8Array): void;
  protected drawPixel(ctx: CanvasRenderingContext2D, frequencyData: Uint8Array): void;
  protected drawWave(ctx: CanvasRenderingContext2D, frequencyData: Uint8Array): void;
  protected drawSpikes(ctx: CanvasRenderingContext2D, frequencyData: Uint8Array): void;
  /**
   * Query readiness state for a given time.
   * @implements FrameRenderable
   */
  getFrameState(timeMs: number): FrameState;
  /**
   * Async preparation - fetches frequency data from target and initializes canvas.
   * @implements FrameRenderable
   */
  prepareFrame(timeMs: number, signal: AbortSignal): Promise<void>;
  /**
   * Synchronous render - draws waveform to canvas.
   * @implements FrameRenderable
   */
  renderFrame(_timeMs: number): void;
  get durationMs(): number;
  protected updated(changedProperties: PropertyValueMap<this>): void;
}
declare global {
  interface HTMLElementTagNameMap {
    "ef-waveform": EFWaveform & Element;
  }
}
//#endregion
export { EFWaveform };
//# sourceMappingURL=EFWaveform.d.ts.map