import type AttachmentElement from "./elements/AttachmentElement.js";
import type FieldElement from "./elements/FieldElement.js";
import type GroupElement from "./elements/GroupElement.js";
import type RelationshipElement from "./elements/RelationshipElement.js";
import type TextElement from "./elements/TextElement.js";
import type UtilityNetworkAssociationsElement from "./elements/UtilityNetworkAssociationsElement.js";

/**
 * Form element types.
 *
 * @since 5.0
 * @see [Web Map Specification - formInfo](https://developers.arcgis.com/web-map-specification/objects/formInfo/)
 */
export type FormElementUnion = AttachmentElement | FieldElement | GroupElement | RelationshipElement | TextElement | UtilityNetworkAssociationsElement;

/**
 * A union of the types of [form](https://developers.arcgis.com/javascript/latest/references/core/form/FormTemplate/) elements that may be included in a [GroupElement](https://developers.arcgis.com/javascript/latest/references/core/form/elements/GroupElement/).
 *
 * @since 5.0
 */
export type NestableFormElementUnion = Exclude<FormElementUnion, GroupElement>;