import type AnnotationFeatureLayer from "../AnnotationFeatureLayer.js";
import type { ClonableMixin } from "../../core/Clonable.js";
import type { IdentifiableMixin, IdentifiableMixinProperties } from "../../core/Identifiable.js";
import type { Loadable, LoadableMixinProperties } from "../../core/Loadable.js";

export interface AnnotationFeatureSublayerProperties extends LoadableMixinProperties, IdentifiableMixinProperties, Partial<Pick<AnnotationFeatureSublayer, "parent" | "subtypeCode" | "visible">> {}

/**
 * Represents a sublayer in a [AnnotationFeatureLayer (beta)](https://developers.arcgis.com/javascript/latest/references/core/layers/AnnotationFeatureLayer/). Each AnnotationFeatureSublayer
 * is not a standalone service, but rather each sublayer corresponds to one subtype in the source feature service.
 *
 * The AnnotationFeatureSublayers are identified by their unique [subtypeCode](https://developers.arcgis.com/javascript/latest/references/core/layers/support/AnnotationFeatureSublayer/#subtypeCode). You can configure the visibility of each sublayer while
 * initializing the AnnotationFeatureLayer.
 *
 * @beta
 * @since 5.1
 * @see [AnnotationFeatureLayer (beta)](https://developers.arcgis.com/javascript/latest/references/core/layers/AnnotationFeatureLayer/)
 * @see [Annotation in ArcGIS Pro](https://doc.esri.com/en/arcgis-pro/latest/help/data/annotation/annotation.html).
 */
export default class AnnotationFeatureSublayer extends AnnotationFeatureSublayerSuperclass {
  constructor(properties?: AnnotationFeatureSublayerProperties);
  /** The [AnnotationFeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/AnnotationFeatureLayer/) to which the sublayer belongs. */
  accessor parent: AnnotationFeatureLayer | null | undefined;
  /**
   * The unique identifier representing the [AnnotationFeatureSublayer](https://developers.arcgis.com/javascript/latest/references/core/layers/support/AnnotationFeatureSublayer/)
   * created from the [AnnotationFeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/AnnotationFeatureLayer/).
   */
  accessor subtypeCode: number;
  /**
   * The title of the layer used to identify it in places such as the [layer list](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-layer-list/).
   * The title is set to the subtype description of the layer.
   */
  get title(): string | null | undefined;
  get type(): "annotation-feature-sublayer";
  /**
   * Indicates if the sublayer is visible in the [View](https://developers.arcgis.com/javascript/latest/references/core/views/View/). When `false`,
   * the annotations corresponding to this sublayer will not be visible in the view.
   *
   * @default true
   * @example
   * // The sublayer is no longer visible in the view
   * layer.visible = false;
   */
  accessor visible: boolean;
}
declare const AnnotationFeatureSublayerSuperclass: typeof Loadable & typeof IdentifiableMixin & typeof ClonableMixin