import type Graphic from "../../../Graphic.js";
import type Accessor from "../../../core/Accessor.js";
import type AttachmentElementInput from "./AttachmentElementInput.js";
import type EditableInput from "./EditableInput.js";
import type FieldInput from "./FieldInput.js";
import type GroupInput from "./GroupInput.js";
import type { FormInput } from "./types.js";

export interface BatchFormInputsProperties {}

/**
 * The `BatchFormInputs` class is a read-only class that acts as a container for a set of inputs in a [BatchAttributeFormViewModel](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/BatchAttributeFormViewModel/).
 *
 * @since 4.33
 */
export default class BatchFormInputs extends Accessor {
  constructor(properties?: BatchFormInputsProperties);
  /** Returns an array of all the attachment element inputs in the form, including those in groups. */
  get allAttachmentElementInputs(): AttachmentElementInput[];
  /** Returns an array of all editable inputs in the form, including those in groups. */
  get allEditableInputs(): EditableInput[];
  /** Returns an array of all the field inputs in the form, including those in groups. */
  get allFieldInputs(): FieldInput[];
  /** Returns an array of all group inputs in the form. */
  get allGroupInputs(): GroupInput[];
  /** The description for the form. */
  get description(): string | null;
  /** An array of field or group inputs that make up the [BatchAttributeForm](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/). */
  get inputs(): FormInput[];
  /** Returns an array of all features that have validation errors for one or more of the form inputs. */
  get invalidFeatures(): Graphic[];
  /** Returns an array of all field inputs that have validation errors but are not visible in the form. */
  get invalidHiddenInputs(): FieldInput[];
  /** The title of the form. */
  get title(): string | null;
  /**
   * Returns a boolean indicating whether all of the batch attribute form's field inputs are valid. This property will be `false` if any field input has a validation error.
   *
   * @see [allFieldInputs](https://developers.arcgis.com/javascript/latest/references/core/widgets/BatchAttributeForm/inputs/BatchFormInputs/#allFieldInputs)
   */
  get valid(): boolean;
}