import type AttachmentElementInput from "./AttachmentElementInput.js";
import type FieldInput from "./FieldInput.js";
import type GroupInput from "./GroupInput.js";
import type RelationshipElementInput from "./RelationshipElementInput.js";
import type TextElementInput from "./TextElementInput.js";
import type UtilityNetworkAssociationsElementInput from "./UtilityNetworkAssociationsElementInput.js";

/**
 * Input types that can be nested within a [group input](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/inputs/GroupInput/). This includes
 * [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/),
 * [attachment element inputs](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/inputs/AttachmentElementInput/),
 * [utility network associations element inputs](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/inputs/UtilityNetworkAssociationsElementInput/), and
 * [text element inputs](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/inputs/TextElementInput/). Group inputs may not be nested within other group inputs.
 *
 * @since 5.0
 */
export type GroupableInput = FieldInput | RelationshipElementInput | AttachmentElementInput | TextElementInput | UtilityNetworkAssociationsElementInput;

/**
 * Input types that are supported by [BatchAttributeForm](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/).
 *
 * @since 5.0
 */
export type FormInput = GroupInput | FieldInput | RelationshipElementInput | AttachmentElementInput | TextElementInput | UtilityNetworkAssociationsElementInput;

/**
 * Information about edits made to existing attachments.
 *
 * @internal
 */
export interface AttachmentEditState {}