import type Accessor from "../../../core/Accessor.js";
import type { AttributeFormSupportedLayerUnion } from "../types.js";

export interface InputBaseProperties<Template extends any = any> {}

/**
 * A read-only base class for [GroupInput](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BatchAttributeForm-inputs-GroupInput.html) and [EditableInput](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BatchAttributeForm-inputs-EditableInput.html) classes. It is used to create input elements for the [BatchAttributeForm](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BatchAttributeForm.html).
 *
 * @since 4.33
 */
export default abstract class InputBase<Template extends any = any> extends Accessor {
  /** The input's description. */
  get description(): string | null | undefined;
  /**
   * Indicates whether the input pertains to all the features in the [BatchAttributeForm](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BatchAttributeForm.html) in which the input belongs.
   *
   * @default true
   */
  get existsInAllLayers(): boolean;
  /** The input's label. */
  get label(): string | null | undefined;
  /**
   * An array of layers included in the [BatchAttributeForm](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BatchAttributeForm.html). Each layer must support feature editing and field access.
   *
   * The following layer types are supported:
   * - [FeatureLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html)
   * - [GeoJSONLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-GeoJSONLayer.html)
   * - [SceneLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-SceneLayer.html) (with `featureLayer` property)
   * - [SubtypeSublayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-SubtypeSublayer.html)
   * - [OrientedImageryLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-OrientedImageryLayer.html)
   * - [KnowledgeGraphSublayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-knowledgeGraph-KnowledgeGraphSublayer.html)
   *
   * @see [BatchAttributeFormViewModel.layers](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-BatchAttributeForm-BatchAttributeFormViewModel.html#layers)
   */
  get layers(): AttributeFormSupportedLayerUnion[];
  /** Indicates whether the input is visible. */
  get visible(): boolean;
}