import * as lit28 from "lit";
import { LitElement } from "lit";
import * as lit_html26 from "lit-html";

//#region src/elements/EFPanZoom.d.ts
interface PanZoomTransform {
  x: number;
  y: number;
  scale: number;
}
declare class EFPanZoom extends LitElement {
  static styles: lit28.CSSResult[];
  x: number;
  y: number;
  scale: number;
  /**
   * When true, automatically fits content to view on first render.
   * Centers content and scales it to fit within the container with padding.
   */
  autoFit: boolean;
  panZoomTransform: PanZoomTransform;
  private _isDragging;
  private _dragStartPointerPos;
  private _dragStartTransform;
  private _capturedPointerId;
  /**
   * Document-level wheel handler in capture phase to prevent browser navigation.
   * This prevents back/forward navigation on two-finger swipe gestures.
   * We use capture phase to catch events before they bubble, but only prevent default
   * (not stop propagation) so the normal wheel handler can still process them.
   */
  private _onDocumentWheelCapture;
  connectedCallback(): void;
  disconnectedCallback(): void;
  private _updateTransform;
  private _onPointerDown;
  private _onPointerMove;
  private _onPointerUp;
  private _onWheel;
  firstUpdated(changedProperties: Map<PropertyKey, unknown>): void;
  /**
   * Convert screen coordinates (e.g., mouse event clientX/clientY) to canvas coordinates.
   * This handles all pan/zoom transformations automatically.
   *
   * @param screenX - X coordinate in screen space (e.g., event.clientX)
   * @param screenY - Y coordinate in screen space (e.g., event.clientY)
   * @returns Object with x, y in canvas coordinate space
   *
   * @example
   * handleClick(e: MouseEvent) {
   *   const canvasPos = panZoom.screenToCanvas(e.clientX, e.clientY);
   *   console.log(`Clicked at canvas position: ${canvasPos.x}, ${canvasPos.y}`);
   * }
   */
  screenToCanvas(screenX: number, screenY: number): {
    x: number;
    y: number;
  };
  /**
   * Convert canvas coordinates to screen coordinates.
   * Useful for positioning overlays or tooltips relative to canvas elements.
   *
   * @param canvasX - X coordinate in canvas space
   * @param canvasY - Y coordinate in canvas space
   * @returns Object with x, y in screen coordinate space
   *
   * @example
   * const screenPos = panZoom.canvasToScreen(element.x, element.y);
   * tooltip.style.left = `${screenPos.x}px`;
   * tooltip.style.top = `${screenPos.y}px`;
   */
  canvasToScreen(canvasX: number, canvasY: number): {
    x: number;
    y: number;
  };
  /**
   * Reset the pan-zoom transform to its default values (x: 0, y: 0, scale: 1).
   * This method can be called programmatically to reset the view.
   *
   * @example
   * const panZoomRef = useRef(null);
   * <button onClick={() => panZoomRef.current.reset()}>Reset View</button>
   */
  reset(): void;
  /**
   * Fit content to the container, centering it and scaling to fit.
   * Uses a padding factor to leave some margin around the content.
   *
   * @param padding - Padding factor (0-1), e.g., 0.1 = 10% padding on each side. Default: 0.05
   */
  fitToContent(padding?: number): void;
  render(): lit_html26.TemplateResult<1>;
}
//#endregion
export { EFPanZoom, PanZoomTransform };
//# sourceMappingURL=EFPanZoom.d.ts.map