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/api-reference/esri-form-elements-AttachmentElement.html#input) used in [attachment elements](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-elements-AttachmentElement.html). These elements are set within a [feature layer's](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#formTemplate) or [form's](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FeatureForm.html#formTemplate) `formTemplate`. The configured `formTemplate` automatically displays within the [Editor](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html) 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/api-reference/esri-form-elements-inputs-attachments-AudioInput.html) input.
   * document | The user interface for a [document](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-elements-inputs-attachments-DocumentInput.html) input.
   * image | The user interface for an [image](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-elements-inputs-attachments-ImageInput.html) input.
   * signature | The user interface for a [signature](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-elements-inputs-attachments-SignatureInput.html) input.
   * video | The user interface for a [video](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-elements-inputs-attachments-VideoInput.html) input.
   *
   * @internal
   * @since 5.0
   */
  get type(): AttachmentInputType | null;
}
declare const InputSuperclass: typeof JSONSupport & typeof ClonableMixin