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/references/core/PopupTemplate/)
 * @see [Content](https://developers.arcgis.com/javascript/latest/references/core/popup/content/Content/)
 * @see [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/)
 * @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/references/core/popup/content/TextContent/)
   * @see [FieldsContent](https://developers.arcgis.com/javascript/latest/references/core/popup/content/FieldsContent/)
   * @see [MediaContent](https://developers.arcgis.com/javascript/latest/references/core/popup/content/MediaContent/)
   * @see [AttachmentsContent](https://developers.arcgis.com/javascript/latest/references/core/popup/content/AttachmentsContent/)
   * @see [CustomContent](https://developers.arcgis.com/javascript/latest/references/core/popup/content/CustomContent/)
   * @see [ExpressionContent](https://developers.arcgis.com/javascript/latest/references/core/popup/content/ExpressionContent/)
   * @see [RelationshipContent](https://developers.arcgis.com/javascript/latest/references/core/popup/content/RelationshipContent/)
   * @see [UtilityNetworkAssociationsContent](https://developers.arcgis.com/javascript/latest/references/core/popup/content/UtilityNetworkAssociationsContent/)
   */
  get type(): "utility-network-associations";
}
declare const UtilityNetworkAssociationsContentSuperclass: typeof BaseContent & typeof ClonableMixin