import { LitElement } from "lit";
import * as lit_html_directives_ref1 from "lit-html/directives/ref";

//#region src/gui/EFFitScale.d.ts
interface ScaleInput {
  containerWidth: number;
  containerHeight: number;
  contentWidth: number;
  contentHeight: number;
}
interface ScaleOutput {
  scale: number;
  translateX: number;
  translateY: number;
}
/**
 * Compute the scale factor and centering translation needed to fit
 * content of a given size into a container while preserving aspect ratio.
 *
 * Returns `null` when any dimension is zero or negative (cannot compute).
 */
declare function computeFitScale(input: ScaleInput): ScaleOutput | null;
declare class EFFitScale extends LitElement {
  containerRef: lit_html_directives_ref1.Ref<HTMLDivElement>;
  contentRef: lit_html_directives_ref1.Ref<HTMLSlotElement>;
  createRenderRoot(): this;
  uniqueId: string;
  paused: boolean;
  updated(changedProperties: Map<string, unknown>): void;
  private containerResizeObserver?;
  private contentResizeObserver?;
  private childMutationObserver?;
  private observedContentChild;
  private hasWarnedZeroDimensions;
  get contentChild(): HTMLElement | null;
  get scaleInfo(): {
    scale: number;
    containerWidth: number;
    containerHeight: number;
    contentWidth: number;
    contentHeight: number;
  };
  scaleLastSetOn: HTMLElement | null;
  private updateScale;
  private observeContentChild;
  removeScale: () => void;
  connectedCallback(): void;
  disconnectedCallback(): void;
}
declare global {
  interface HTMLElementTagNameMap {
    "ef-fit-scale": EFFitScale;
  }
}
//#endregion
export { EFFitScale, ScaleInput, ScaleOutput, computeFitScale };
//# sourceMappingURL=EFFitScale.d.ts.map