import type InputBase from "./InputBase.js";
import type { InputBaseProperties } from "./InputBase.js";
import type { GroupableInput } from "./types.js";

export interface GroupInputProperties extends InputBaseProperties {}

/**
 * This is a read-only class that works with grouped [BatchAttributeForm](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/) inputs.
 *
 * @since 4.33
 * @see [BatchAttributeForm](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/)
 * @see [BatchAttributeFormViewModel](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/BatchAttributeFormViewModel/)
 * @see [FieldInput](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/inputs/FieldInput/)
 * @see [RelationshipElementInput](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/inputs/RelationshipElementInput/)
 * @see [TextElementInput](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/inputs/TextElementInput/)
 * @see [AttachmentElementInput](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/inputs/AttachmentElementInput/)
 */
export default class GroupInput extends InputBase<any> {
  constructor(properties: GroupInputProperties);
  /** An array of [field inputs](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/inputs/FieldInput/), [relationship element inputs](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/inputs/RelationshipElementInput/), [text element inputs](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/inputs/TextElementInput/), and [attachment element inputs](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/inputs/AttachmentElementInput/) contained within the group. */
  get inputs(): ReadonlyArray<GroupableInput>;
  /**
   * Indicates whether the group should be expanded or collapsed.
   *
   * @default true
   */
  get open(): boolean;
  /** The type of input. */
  get type(): "group";
  /**
   * Indicates whether the GroupInput is visible. For this property to be true,
   * the group, on its own, must be visible and contain at least one child input
   * that is visible.
   */
  get visible(): boolean;
}