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/references/core/rest/networks/support/NetworkElement/) and adds two new properties:
 * [firstUnit](https://developers.arcgis.com/javascript/latest/references/core/rest/networks/support/TelecomNetworkElement/#firstUnit) and [lastUnit](https://developers.arcgis.com/javascript/latest/references/core/rest/networks/support/TelecomNetworkElement/#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";
}