import type Association from "./Association.js";
import type { JSONSupport, JSONSupportMixinProperties } from "../../../core/JSONSupport.js";
import type { AssociationProperties } from "./Association.js";

export interface AssociationGeometriesResultProperties extends JSONSupportMixinProperties, Partial<Pick<AssociationGeometriesResult, "maxGeometryCountExceeded">> {
  /** List of returned [associations](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-networks-support-Association.html) filtered based on the input parameters in [SynthesizeAssociationGeometriesParameters](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-networks-support-SynthesizeAssociationGeometriesParameters.html). */
  associations?: AssociationProperties[];
}

/**
 * This class defines the results of the function [synthesizeAssociationGeometries](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-networks-synthesizeAssociationGeometries.html) which takes an extent and returns an [AggregatedGeometry](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-networks-support-AggregatedGeometry.html) of all
 * [associations](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-networks-support-Association.html) within the extent based on the defined parameters.
 *
 * @since 4.20
 * @see [synthesizeAssociationGeometries](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-networks-synthesizeAssociationGeometries.html)
 */
export default class AssociationGeometriesResult extends JSONSupport {
  constructor(properties?: AssociationGeometriesResultProperties);
  /** List of returned [associations](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-networks-support-Association.html) filtered based on the input parameters in [SynthesizeAssociationGeometriesParameters](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-networks-support-SynthesizeAssociationGeometriesParameters.html). */
  get associations(): Association[];
  set associations(value: AssociationProperties[]);
  /**
   * Indicates whether the [SynthesizeAssociationGeometriesParameters#maxGeometryCount](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-networks-support-SynthesizeAssociationGeometriesParameters.html#maxGeometryCount) has exceeded. If the number of associations are larger than the `maxGeometryCount`, this property is set to `true`
   *
   * @default false
   */
  accessor maxGeometryCountExceeded: boolean;
}