/// <reference path="../../index.d.ts" />
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { NestedObject } from "../../utils/spatial-references.js";

/** @internal */
export abstract class ArcgisSpatialReferencePickerTree extends LitElement {
  /**
   * The data to display in the tree. Supports nested data.
   *
   * @example
   * data = {
   *  "parent item": {
   *    "child item": "child item value",
   *    "sub-parent child item": {
   *      "child item of nested parent key": "child item of nested parent value"
   *    },
   *    "child item 2 key": "child item 2 value"
   *  },
   *  "item 2": "item 2 value",
   *  ...
   * };
   * Keys of parent items are displayed as the item's label.
   * Values of elements without children are displayed as the item's label.
   * In this case, "sub-parent child item" is displayed as the label for that item and
   * "child item of nested parent value" is displayed as the label for it's child.
   */
  accessor data: NestedObject;
  /** The key of the selected item. (Wkid when used as spatial reference selection) */
  accessor value: string | undefined;
  /** Emitted when the selected value of the tree changes. */
  readonly arcgisChange: import("@arcgis/lumina").TargetedEvent<this, void>;
  readonly "@eventTypes": {
    arcgisChange: ArcgisSpatialReferencePickerTree["arcgisChange"]["detail"];
  };
}