import type TextInput from "./TextInput.js";
import type { TextInputProperties } from "./TextInput.js";

export interface TextBoxInputProperties extends TextInputProperties {}

/**
 * The `TextBoxInput` class defines the desired user interface as a single-line text box. This [FieldElement.input](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/#input) is used in [field elements](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/) that are set within a [feature layer's](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#formTemplate) or [FeatureForm's](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureForm/#formTemplate) `formTemplate`. This is displayed within the [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/) widget.
 *
 * @since 4.16
 * @see [TextAreaInput](https://developers.arcgis.com/javascript/latest/references/core/form/elements/inputs/TextAreaInput/)
 * @see [BarcodeScannerInput](https://developers.arcgis.com/javascript/latest/references/core/form/elements/inputs/BarcodeScannerInput/)
 * @see [FieldElement](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/)
 */
export default class TextBoxInput extends TextInput {
  /**
   * @example
   * // Create a new TextBox input
   * const textBoxInput = new TextBoxInput({
   *   minLength: 10,
   *   maxLength: 30
   * })
   */
  constructor(properties?: TextBoxInputProperties);
  /** The type of form element input. */
  get type(): "text-box";
  /**
   * Creates a deep clone of the `TextBoxInput` class.
   *
   * @returns A deep clone of the `TextBoxInput` instance.
   */
  clone(): TextBoxInput;
}