import type Point from "../../geometry/Point.js";
import type Polygon from "../../geometry/Polygon.js";
import type Polyline from "../../geometry/Polyline.js";
import type { ClonableMixin, ClonableMixinProperties } from "../../core/Clonable.js";
import type { JSONSupport, JSONSupportMixinProperties } from "../../core/JSONSupport.js";
import type { PointProperties } from "../../geometry/Point.js";
import type { PolygonProperties } from "../../geometry/Polygon.js";
import type { PolylineProperties } from "../../geometry/Polyline.js";

export interface TelemetryDataProperties extends JSONSupportMixinProperties, ClonableMixinProperties {
  /** The center of the frame. */
  frameCenter?: PointProperties | null;
  /** The outline of the frame. */
  frameOutline?: PolygonProperties | null;
  /** The line of sight. */
  lineOfSight?: PolylineProperties | null;
  /** The location of the sensor. */
  sensorLocation?: PointProperties | null;
  /** The trail of the sensor. */
  sensorTrail?: PolylineProperties | null;
}

/**
 * The TelemetryData class is used to represent the telemetry data for a [VideoLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-VideoLayer.html).
 * The class contains the frame center, frame outline, line of sight, sensor location, and sensor trail.
 *
 * @since 4.30
 * @see [VideoLayer#telemetry](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-VideoLayer.html#telemetry)
 */
export default class TelemetryData extends TelemetryDataSuperclass {
  constructor(properties?: TelemetryDataProperties);
  /** The center of the frame. */
  get frameCenter(): Point | null | undefined;
  set frameCenter(value: PointProperties | null | undefined);
  /** The outline of the frame. */
  get frameOutline(): Polygon | null | undefined;
  set frameOutline(value: PolygonProperties | null | undefined);
  /** The line of sight. */
  get lineOfSight(): Polyline | null | undefined;
  set lineOfSight(value: PolylineProperties | null | undefined);
  /** The location of the sensor. */
  get sensorLocation(): Point | null | undefined;
  set sensorLocation(value: PointProperties | null | undefined);
  /** The trail of the sensor. */
  get sensorTrail(): Polyline | null | undefined;
  set sensorTrail(value: PolylineProperties | null | undefined);
}
declare const TelemetryDataSuperclass: typeof JSONSupport & typeof ClonableMixin