import type { ClonableMixin, ClonableMixinProperties } from "../../core/Clonable.js";
import type { JSONSupport, JSONSupportMixinProperties } from "../../core/JSONSupport.js";
import type { AssociationListPopupType } from "../../networks/support/typeUtils.js";

export interface UtilityNetworkAssociationTypeProperties extends JSONSupportMixinProperties, ClonableMixinProperties, Partial<Pick<UtilityNetworkAssociationType, "associatedAssetGroup" | "associatedAssetType" | "associatedNetworkSourceId" | "description" | "title" | "type">> {}

/**
 * The `UtilityNetworkAssociationType` class defines one utility network association type used in a [PopupTemplate](https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html) or a [FormTemplate](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-FormTemplate.html).
 *
 * @beta
 * @since 4.31
 * @see [PopupTemplate](https://developers.arcgis.com/javascript/latest/api-reference/esri-PopupTemplate.html)
 * @see [UtilityNetworkAssociationsContent](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-content-UtilityNetworkAssociationsContent.html)
 * @see [FormTemplate](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-FormTemplate.html)
 * @see [Editor](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html)
 * @see [UtilityNetworkAssociationsElement](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-elements-UtilityNetworkAssociationsElement.html)
 */
export default class UtilityNetworkAssociationType extends UtilityNetworkAssociationTypeSuperclass {
  /** @since 4.31 */
  constructor(properties?: UtilityNetworkAssociationTypeProperties);
  /** This property is used to filter the associations by asset group. In order for this filter to work a value must be assigned to [associatedNetworkSourceId](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-support-UtilityNetworkAssociationType.html#associatedNetworkSourceId). */
  accessor associatedAssetGroup: number;
  /** This property is used to filter the associations by asset type. In order for this filter to work a value must be assigned to [associatedAssetGroup](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-support-UtilityNetworkAssociationType.html#associatedAssetGroup) and [associatedNetworkSourceId](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-support-UtilityNetworkAssociationType.html#associatedNetworkSourceId). */
  accessor associatedAssetType: number;
  /** This property is used to filter the associations by network sourceId. */
  accessor associatedNetworkSourceId: number;
  /** The description for the [type](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-support-UtilityNetworkAssociationType.html#type) of association in the list of association [types](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-support-UtilityNetworkAssociationType.html#type) on the popup or form. */
  accessor description: string;
  /**
   * The title for the [type](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-support-UtilityNetworkAssociationType.html#type) of association in the list of association [types](https://developers.arcgis.com/javascript/latest/api-reference/esri-popup-support-UtilityNetworkAssociationType.html#type) on the popup or form.
   * Users are able to change the display titles of the association type header in their list of association types.
   * For example, the header `Contents` could be changed to `Cont.` or the header `Connectivity` could be changed to `MyConnectivity`.
   */
  accessor title: string;
  /** The type of association. */
  accessor type: AssociationListPopupType;
}
declare const UtilityNetworkAssociationTypeSuperclass: typeof JSONSupport & typeof ClonableMixin