import type NetworkElement from "./NetworkElement.js";
import type { NetworkElementProperties } from "./NetworkElement.js";

export interface TelecomNetworkElementProperties extends NetworkElementProperties, Partial<Pick<TelecomNetworkElement, "firstUnit" | "lastUnit">> {}

/**
 * TelecomNetworkElement inherits from [NetworkElement](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-networks-support-NetworkElement.html) and adds two new properties:
 * [firstUnit](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-networks-support-TelecomNetworkElement.html#firstUnit) and [lastUnit](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-networks-support-TelecomNetworkElement.html#lastUnit).
 * This class is used to represent network elements in a telecom domain network.
 *
 * @beta
 * @since 4.34
 */
export default class TelecomNetworkElement extends NetworkElement {
  constructor(properties?: TelecomNetworkElementProperties);
  /** The first unit in a grouped object in a telecom domain network. */
  accessor firstUnit: number | null;
  /** The last unit in a grouped object in a telecom domain network. */
  accessor lastUnit: number | null;
  /**
   * The type of the network element.
   *
   * @default "telecomNetworkElement"
   */
  get type(): "networkElement" | "telecomNetworkElement";
}