import type BaseContent from "./Content.js";
import type UtilityNetworkAssociationType from "../support/UtilityNetworkAssociationType.js";
import type { ClonableMixin } from "../../core/Clonable.js";
import type { UtilityNetworkAssociationTypeProperties } from "../support/UtilityNetworkAssociationType.js";
import type { ContentProperties as BaseContentProperties } from "./Content.js";

export interface UtilityNetworkAssociationsContentProperties extends BaseContentProperties, Partial<Pick<UtilityNetworkAssociationsContent, "description" | "displayCount" | "title">> {
  /** The popup association types. */
  associationTypes?: UtilityNetworkAssociationTypeProperties[];
}

/**
 * The `UtilityNetworkAssociationsContent` class is a specialized popup element used to display associated features in a utility network.
 *
 * @beta
 * @since 4.31
 * @see [PopupTemplate](https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html)
 * @see [Content](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-Content.html)
 * @see [Editor](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html)
 * @example
 * // Create the UtilityNetworkAssociationsContent popup element
 * const utilityNetworkAssociationsContent = new UtilityNetworkAssociationsContent({
 *   associationTypes: [
 *     {
 *       type: "container",
 *     },
 *     {
 *       type: "connectivity",
 *       associatedAssetGroup: 2,
 *       associatedNetworkSourceId: 5,
 *       associatedAssetType: 3
 *     },
 *     {
 *       type: "attachment",
 *       description: "Describe this associations"
 *     },
 *     {
 *       type: "content",
 *       title: "myContents"
 *     },
 *     {
 *       type: "structure",
 *     },
 *   ],
 *   title: "This Feature's Associations",
 *   description: "Associations that belong to this feature"
 * });
 *
 * // add the utilityNetworkAssociationsContent to the popup templates
 * const popupTemplate  = new PopupTemplate({
 *   title: "MyAssociations",
 *   content: [utilityNetworkAssociationsContent]
 *  })
 */
export default class UtilityNetworkAssociationsContent extends UtilityNetworkAssociationsContentSuperclass {
  /** @since 4.31 */
  constructor(properties?: UtilityNetworkAssociationsContentProperties);
  /** The popup association types. */
  get associationTypes(): UtilityNetworkAssociationType[];
  set associationTypes(value: UtilityNetworkAssociationTypeProperties[]);
  /** Describes the relationship's content in detail. */
  accessor description: string | null | undefined;
  /**
   * A numeric value indicating the maximum number of features to display in the list of associated features per layer.
   * If no value is specified, then the display count will default to 3.
   */
  accessor displayCount: number;
  /** A heading indicating what the relationship's content represents. */
  accessor title: string | null | undefined;
  /**
   * The type of popup element displayed.
   *
   * @see [TextContent](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-TextContent.html)
   * @see [FieldsContent](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-FieldsContent.html)
   * @see [MediaContent](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-MediaContent.html)
   * @see [AttachmentsContent](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-AttachmentsContent.html)
   * @see [CustomContent](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-CustomContent.html)
   * @see [ExpressionContent](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-ExpressionContent.html)
   * @see [RelationshipContent](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-RelationshipContent.html)
   * @see [UtilityNetworkAssociationsContent](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-UtilityNetworkAssociationsContent.html)
   */
  get type(): "utility-network-associations";
}
declare const UtilityNetworkAssociationsContentSuperclass: typeof BaseContent & typeof ClonableMixin