import { FrameRenderable, FrameState } from "../preview/FrameController.js";
import { EFSourceMixinInterface } from "./EFSourceMixin.js";
import { TemporalMixinInterface } from "./EFTemporal.js";
import { FetchMixinInterface } from "./FetchMixin.js";
import * as lit2 from "lit";
import { LitElement, PropertyValueMap } from "lit";
import * as lit_html1 from "lit-html";
import * as lit_html_directives_ref_js0 from "lit-html/directives/ref.js";

//#region src/elements/EFImage.d.ts
declare const EFImage_base: (new (...args: any[]) => TemporalMixinInterface) & (new (...args: any[]) => EFSourceMixinInterface) & (new (...args: any[]) => FetchMixinInterface) & typeof LitElement;
declare class EFImage extends EFImage_base implements FrameRenderable {
  #private;
  static styles: lit2.CSSResult[];
  static get observedAttributes(): string[];
  attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
  imageRef: lit_html_directives_ref_js0.Ref<HTMLImageElement>;
  canvasRef: lit_html_directives_ref_js0.Ref<HTMLCanvasElement>;
  /**
   * Get the current render version.
   * Version increments when src or fileId changes.
   * @public
   */
  get renderVersion(): number;
  /**
   * Get whether the image has an alpha channel.
   * Used to determine if we should encode as PNG (alpha) or JPEG (no alpha).
   * @public
   */
  get hasAlpha(): boolean;
  set fileId(value: string | null);
  get fileId(): string | null;
  /** @deprecated Use fileId instead */
  get assetId(): string | null;
  set assetId(value: string | null);
  render(): lit_html1.TemplateResult<1>;
  private isDirectUrl;
  assetPath(): string;
  get hasOwnDuration(): boolean;
  shouldAutoReady(): boolean;
  /**
   * Load image from the configured source
   */
  loadImage(signal?: AbortSignal): Promise<void>;
  /**
   * Query readiness state for a given time.
   * @implements FrameRenderable
   */
  getFrameState(_timeMs: number): FrameState;
  /**
   * Async preparation - waits for image to load.
   * @implements FrameRenderable
   */
  prepareFrame(_timeMs: number, signal: AbortSignal): Promise<void>;
  /**
   * Synchronous render - image is already displayed via img element or canvas.
   * @implements FrameRenderable
   */
  renderFrame(_timeMs: number): void;
  protected updated(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
  disconnectedCallback(): void;
  /**
   * Get the natural dimensions of the image.
   * Returns null if the image hasn't loaded yet.
   *
   * @public
   */
  getNaturalDimensions(): {
    width: number;
    height: number;
  } | null;
}
declare global {
  interface HTMLElementTagNameMap {
    "ef-image": EFImage;
  }
}
//#endregion
export { EFImage };
//# sourceMappingURL=EFImage.d.ts.map