import type GraphicOrigin from "./GraphicOrigin.js";
import type AnnotationFeatureLayer from "../layers/AnnotationFeatureLayer.js";
import type AnnotationFeatureSublayer from "../layers/support/AnnotationFeatureSublayer.js";

/**
 * Provides information about the [AnnotationFeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/AnnotationFeatureLayer/) from which a graphic originates.
 * The [origin](https://developers.arcgis.com/javascript/latest/references/core/Graphic/#origin) information may be available when a graphic is returned from methods such as
 * [hitTest()](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/#hitTest) or [queryFeatures()](https://developers.arcgis.com/javascript/latest/references/core/layers/AnnotationFeatureLayer/#queryFeatures).
 *
 * @since 5.1
 * @see [MapView.hitTest()](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/#hitTest)
 * @see [SceneView.hitTest()](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/#hitTest)
 * @see [AnnotationFeatureLayer.queryFeatures()](https://developers.arcgis.com/javascript/latest/references/core/layers/AnnotationFeatureLayer/#queryFeatures)
 * @example
 * // get a point from view's click event
 *  view.on("click", async (event) => {
 *    // Search for all features only on included layer at the clicked location
 *    const response = await view.hitTest(event, {include: layer});
 *    // if graphics are returned from layer, get the layer id from graphic origin
 *    if (response.results.length > 0) {
 *      const originId = response.results[0].graphic?.origin?.layer?.id;
 *    }
 *  });
 */
export default class AnnotationFeatureGraphicOrigin extends GraphicOrigin {
  constructor(sublayer: AnnotationFeatureSublayer);
  /** A layer from which a graphic originates. */
  get layer(): AnnotationFeatureLayer;
  /** The [AnnotationFeatureSublayer](https://developers.arcgis.com/javascript/latest/references/core/layers/support/AnnotationFeatureSublayer/) from which a graphic originates. */
  readonly sublayer: AnnotationFeatureSublayer;
  /**
   * Indicates the type of layer the graphic originated from.
   *
   * @default "annotation-feature"
   */
  readonly type: AnnotationFeatureLayer["type"];
}