/**
 * VideoView utilities for the Excalibur application.
 *
 * @internal
 * @internal
 */
import type Point from "../../geometry/Point.js";
import type VideoLayer from "../../layers/VideoLayer.js";
import type VideoView from "../../views/VideoView.js";

/**
 * Creates a new VideoView instance.
 *
 * @param properties - The properties for the VideoView constructor.
 * @returns A new VideoView instance.
 * @internal
 * @internal
 */
export function createVideoView(properties: VideoViewProperties): InternalVideoView;

/**
 * Converts image xy to ground point.
 *
 * @param layer - Video Layer to use for screen to ground conversion
 * @param x - x image coordinate
 * @param y - y image coordinate
 * @internal
 * @internal
 */
export function toGround(layer: VideoLayer, x: number, y: number): Point | null | undefined;

/**
 * VideoViewParams
 *
 * @internal
 * @internal
 */
export interface VideoViewProperties {
  /**
   * The `id` or node representing the DOM element containing the view.
   *
   * @internal
   */
  container?: HTMLDivElement | null;
  /**
   * The VideoLayer.
   *
   * @internal
   */
  layer?: VideoLayer | null;
}

/**
 * VideoView
 *
 * @internal
 * @internal
 */
export interface InternalVideoView extends VideoView {
  /**
   * Determines if the operational data overlay is visible
   *
   * @internal
   */
  operationalDataVisible: boolean;
}