/// <reference path="../../index.d.ts" />
/// <reference types="@arcgis/core/interfaces.d.ts" />
import type { PublicLitElement as LitElement } from "@arcgis/lumina/PublicLitElement";
import type { Button as Button } from "@esri/calcite-components/components/calcite-button";
import type { InputNumber as InputNumber } from "@esri/calcite-components/components/calcite-input-number";

export abstract class ArcgisLabelInput extends LitElement {
  /**
   * Specifies the alignment of the component's text elements.
   *
   * @default "center"
   */
  accessor alignment: Button["alignment"] & InputNumber["alignment"];
  /**
   * Indicates whether the component is in edit mode.
   * This value changes when user interacts with the component or when [edit()](#edit) is called.
   * The value is always `false` when the component is in [read-only](#readOnly) mode.
   *
   * @default false
   * @see [edit()](#edit)
   */
  get editing(): boolean;
  /** A function used to format the value. */
  accessor labelFormatter: ((value: number, defaultFormatter: (value: number) => string) => nullish | string) | undefined;
  /**
   * Indicates whether the component is in read-only mode.
   *
   * @default false
   */
  accessor readOnly: boolean;
  /**
   * The value the component displays.
   *
   * @default 0
   */
  accessor value: number;
  /**
   * Initiates the edit mode for the component.
   *
   * @see [editing](#editing)
   */
  edit(): Promise<void>;
  /** Fires each time a new value is typed and committed. */
  readonly arcgisChange: import("@arcgis/lumina").TargetedEvent<this, void>;
  readonly "@eventTypes": {
    arcgisChange: ArcgisLabelInput["arcgisChange"]["detail"];
  };
}