/// <reference path="../../index.d.ts" />
import type Graphic from "@arcgis/core/Graphic.js";
import type FeatureLayer from "@arcgis/core/layers/FeatureLayer.js";
import type SubtypeGroupLayer from "@arcgis/core/layers/SubtypeGroupLayer.js";
import type SubtypeSublayer from "@arcgis/core/layers/support/SubtypeSublayer.js";
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { T9nMeta } from "@arcgis/lumina/controllers";

/**
 * The Feature Title component generates a feature title for a graphic
 * The component can be configured to only generate a title, when the element
 * is within the visible scope of the page.
 *
 * @since 5.0
 * @internal
 */
export abstract class ArcgisFeatureTitle extends LitElement {
  /** @internal */
  protected _messages: Partial<{ noTitleLabel: string; }> & T9nMeta<{ noTitleLabel: string; }>;
  /** The graphic to generate the swatch for. */
  accessor graphic: Graphic | undefined;
  /**
   * Flag to indicate that the graphic is a new feature and may not have an OID field
   *
   * @default false
   */
  accessor isNewFeature: boolean;
  /** The layer to which the graphic belongs. This will be used to get the title for the layer */
  accessor layer: FeatureLayer | SubtypeGroupLayer | SubtypeSublayer | undefined;
  /** Label to show if the feature does not have a */
  accessor noTitleLabel: string | undefined;
}