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/api-reference/esri-form-elements-FieldElement.html#input) is used in [field elements](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-elements-FieldElement.html) that are set within a [feature layer's](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html#formTemplate) or [FeatureForm's](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FeatureForm.html#formTemplate) `formTemplate`. This is displayed within the [Editor](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-Editor.html) widget.
 *
 * @since 4.16
 * @see [TextAreaInput](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-elements-inputs-TextAreaInput.html)
 * @see [BarcodeScannerInput](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-elements-inputs-BarcodeScannerInput.html)
 * @see [FieldElement](https://developers.arcgis.com/javascript/latest/api-reference/esri-form-elements-FieldElement.html)
 */
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;
}