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

export interface UtilityNetworkAssociationTypeProperties extends 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/references/core/PopupTemplate/) or a [FormTemplate](https://developers.arcgis.com/javascript/latest/references/core/form/FormTemplate/).
 *
 * @since 4.31
 * @see [PopupTemplate](https://developers.arcgis.com/javascript/latest/references/core/PopupTemplate/)
 * @see [UtilityNetworkAssociationsContent](https://developers.arcgis.com/javascript/latest/references/core/popup/content/UtilityNetworkAssociationsContent/)
 * @see [FormTemplate](https://developers.arcgis.com/javascript/latest/references/core/form/FormTemplate/)
 * @see [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/)
 * @see [UtilityNetworkAssociationsElement](https://developers.arcgis.com/javascript/latest/references/core/form/elements/UtilityNetworkAssociationsElement/)
 */
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/references/core/popup/support/UtilityNetworkAssociationType/#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/references/core/popup/support/UtilityNetworkAssociationType/#associatedAssetGroup) and [associatedNetworkSourceId](https://developers.arcgis.com/javascript/latest/references/core/popup/support/UtilityNetworkAssociationType/#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/references/core/popup/support/UtilityNetworkAssociationType/#type) of association in the list of association [types](https://developers.arcgis.com/javascript/latest/references/core/popup/support/UtilityNetworkAssociationType/#type) on the popup or form. */
  accessor description: string;
  /**
   * The title for the [type](https://developers.arcgis.com/javascript/latest/references/core/popup/support/UtilityNetworkAssociationType/#type) of association in the list of association [types](https://developers.arcgis.com/javascript/latest/references/core/popup/support/UtilityNetworkAssociationType/#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