import type { ClonableMixin } from "../../../../core/Clonable.js";
import type { JSONSupport } from "../../../../core/JSONSupport.js";
import type { AttachmentInputType } from "./types.js";

/**
 * @internal
 * @since 5.0
 */
export default abstract class Input extends InputSuperclass {
  /**
   * The type of [input](https://developers.arcgis.com/javascript/latest/references/core/form/elements/AttachmentElement/#input) used in [attachment elements](https://developers.arcgis.com/javascript/latest/references/core/form/elements/AttachmentElement/). These elements are set within a [feature layer's](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#formTemplate) or [form's](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureForm/#formTemplate) `formTemplate`. The configured `formTemplate` automatically displays within the [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/) widget when editing attribute features.
   *
   * Possible Value | Description
   * ---------------|-------------
   * attachment | The user interface for an input to attach multiple different types of files.
   * audio | The user interface for an [audio](https://developers.arcgis.com/javascript/latest/references/core/form/elements/inputs/attachments/AudioInput/) input.
   * document | The user interface for a [document](https://developers.arcgis.com/javascript/latest/references/core/form/elements/inputs/attachments/DocumentInput/) input.
   * image | The user interface for an [image](https://developers.arcgis.com/javascript/latest/references/core/form/elements/inputs/attachments/ImageInput/) input.
   * signature | The user interface for a [signature](https://developers.arcgis.com/javascript/latest/references/core/form/elements/inputs/attachments/SignatureInput/) input.
   * video | The user interface for a [video](https://developers.arcgis.com/javascript/latest/references/core/form/elements/inputs/attachments/VideoInput/) input.
   *
   * @internal
   * @since 5.0
   */
  get type(): AttachmentInputType | null;
}
declare const InputSuperclass: typeof JSONSupport & typeof ClonableMixin