/// <reference path="../../index.d.ts" />
import type Color from "@arcgis/core/Color.js";
import type AggregatedGeometry from "@arcgis/core/rest/networks/support/AggregatedGeometry.js";
import type MapView from "@arcgis/core/views/MapView.js";
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { T9nMeta } from "@arcgis/lumina/controllers";

/**
 * This is a sub-component used by the **ArcgisUtilityNetworkTraceAnalysis** component.
 *
 * This sub-component renders the aggregated geometry from a `TraceResult` on a view.
 * The component does not project the geometry on the client.
 * This sub-component also renders a "Show graphics" toggle which shows or hides the aggregated geometry graphics.
 *
 * The user can specify a color to render the aggregated geometry graphics in.
 *
 * The map layer with the aggregated geometry graphics is removed on component disconnect.
 * The graphics layer is added to the map again when reconnected.
 *
 * @since 5.0
 * @internal
 */
export abstract class ArcgisUtilityNetworkAggregatedGeometry extends LitElement {
  /** @internal */
  protected _messages: {
      labels: {
          loadingDependencies: string;
          showGraphicsToggle: string;
      };
      showGraphics: string;
  } & T9nMeta<{
      labels: {
          loadingDependencies: string;
          showGraphicsToggle: string;
      };
      showGraphics: string;
  }>;
  /**
   * If true, the component will not be destroyed automatically when it is
   * disconnected from the document. This is useful when you want to move the
   * component to a different place on the page, or temporarily hide it. If this
   * is set, make sure to call the [destroy()](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-utility-network-aggregated-geometry/#destroy) method when you are done to
   * prevent memory leaks.
   *
   * @default false
   */
  accessor autoDestroyDisabled: boolean;
  /** @required */
  accessor geometry: AggregatedGeometry | undefined;
  /**
   * The color used for the aggregated geometry graphics.
   * Default value is #FFFF00.
   */
  accessor graphicsColor: Color;
  /** @default false */
  accessor hideGraphics: boolean;
  /** @required */
  accessor view: MapView | undefined;
  /** Permanently destroy the component. */
  destroy(): Promise<void>;
  readonly arcgisHideGraphicsChange: import("@arcgis/lumina").TargetedEvent<this, boolean>;
  readonly "@eventTypes": {
    arcgisHideGraphicsChange: ArcgisUtilityNetworkAggregatedGeometry["arcgisHideGraphicsChange"]["detail"];
  };
}