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

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

/**
 * 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 [numUnits](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-networks-support-TelecomNetworkElement.html#numUnits). 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 unit offset in a grouped object in a telecom domain network. */
  accessor firstUnit: number | null;
  /** The number of logically grouped objects the element represents in a telecom domain network. */
  accessor numUnits: number | null;
  /**
   * The type of the network element.
   *
   * @default "telecomNetworkElement"
   */
  get type(): "networkElement" | "telecomNetworkElement";
}