import type { JSONSupport } from "../../core/JSONSupport.js";

export interface Callout3DProperties {}

/**
 * When symbols have an offset from their position, it's important to still see what the real location is.
 * This can be achieved with callouts:
 *
 * ![symbol3D-line-callout](https://developers.arcgis.com/javascript/latest/assets/img/apiref/symbols/symbols3D-line-callout-2.png)
 *
 * Callouts are graphics that help users understand where a label or a symbol (usually a point) is located
 * on the map, when the symbols have an offset from their initial position.
 *
 * Callout3D is the base class for classes that add a callout visualization when a
 * [PointSymbol3D](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-PointSymbol3D.html) or a
 * [LabelSymbol3D](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-LabelSymbol3D.html) has an offset (for example a [PointSymbol3D.verticalOffset](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-PointSymbol3D.html#verticalOffset)).
 * Currently only callouts of type `line` are supported. See [LineCallout3D](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-callouts-LineCallout3D.html).
 *
 * @since 4.4
 */
export default class Callout3D extends JSONSupport {
  constructor(properties?: Callout3DProperties);
  /**
   * Creates a deep clone of the callout.
   *
   * @returns A deep clone of the object that
   *   invoked this method.
   */
  clone(): Callout3D;
}