import type MapSurroundInfoBase from "./MapSurroundInfoBase.js";
import type MapSurroundInfoLegend from "./MapSurroundInfoLegend.js";
import type MapSurroundInfoNorthArrow from "./MapSurroundInfoNorthArrow.js";
import type MapSurroundInfoScaleLine from "./MapSurroundInfoScaleLine.js";
import type { MapSurroundInfoScaleLineProperties } from "./MapSurroundInfoScaleLine.js";
import type { MapSurroundInfoLegendProperties } from "./MapSurroundInfoLegend.js";
import type { MapSurroundInfoNorthArrowProperties } from "./MapSurroundInfoNorthArrow.js";
import type { MapSurroundInfoBaseProperties } from "./MapSurroundInfoBase.js";

export interface MapSurroundInfoGroupElementProperties extends MapSurroundInfoBaseProperties {
  /** The default legend item configuration. */
  elements?: (MapSurroundInfoNorthArrowProperties | MapSurroundInfoLegendProperties | MapSurroundInfoScaleLineProperties)[];
  /**
   * The type of MapSurroundInfo.
   *
   * @default "cim-group-element"
   */
  type?: "cim-group-element";
}

/** The `MapSurroundInfoGroupElement` class defines a group of map surround elements */
export default class MapSurroundInfoGroupElement extends MapSurroundInfoBase {
  constructor(properties?: MapSurroundInfoGroupElementProperties);
  /** The default legend item configuration. */
  get elements(): (MapSurroundInfoNorthArrow | MapSurroundInfoLegend | MapSurroundInfoScaleLine)[] | undefined;
  set elements(value: (MapSurroundInfoNorthArrowProperties | MapSurroundInfoLegendProperties | MapSurroundInfoScaleLineProperties)[] | undefined);
  /**
   * The type of MapSurroundInfo.
   *
   * @default "cim-group-element"
   */
  type: "cim-group-element";
}