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

/** @experimental */
export default abstract class Input extends InputSuperclass {
  /**
   * The type of {@link module:esri/form/elements/AttachmentElement#input input} used in {@link module:esri/form/elements/AttachmentElement attachment elements}. These elements are set within a {@link module:esri/layers/FeatureLayer#formTemplate feature layer's} or {@link module:esri/widgets/FeatureForm#formTemplate form's} `formTemplate`. The configured `formTemplate` automatically displays within the {@link module:esri/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 {@link module:esri/form/elements/inputs/attachments/AudioInput audio} input.
   * document | The user interface for a {@link module:esri/form/elements/inputs/attachments/DocumentInput document} input.
   * image | The user interface for an {@link module:esri/form/elements/inputs/attachments/ImageInput image} input.
   * signature | The user interface for a {@link module:esri/form/elements/inputs/attachments/SignatureInput signature} input.
   * video | The user interface for a {@link module:esri/form/elements/inputs/attachments/VideoInput video} input.
   *
   * @experimental
   */
  get type(): AttachmentInputType | null;
}
declare const InputSuperclass: typeof JSONSupport & typeof ClonableMixin