/// <reference path="../../index.d.ts" />
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { Scale, SelectionMode } from "../interfaces.js";
import type { TreeItem } from "../calcite-tree-item/customElement.js";

/** @slot  - A slot for `calcite-tree-item` elements. */
export abstract class Tree extends LitElement {
  /**
   * When `true`, displays indentation guide lines.
   *
   * @default false
   */
  accessor lines: boolean;
  /**
   * Specifies the component's size.
   *
   * @default "m"
   */
  accessor scale: Scale;
  /** Specifies the component's selected items. */
  get selectedItems(): TreeItem[];
  /**
   * Specifies the selection mode of the component, where:
   *
   * `"ancestors"` displays with a checkbox and allows any number of selections from corresponding parent and child selections,
   *
   * `"children"` allows any number of selections from one parent from corresponding parent and child selections,
   *
   * `"multichildren"` allows any number of selections from corresponding parent and child selections,
   *
   * `"multiple"` allows any number of selections,
   *
   * `"none"` allows no selections,
   *
   * `"single"` allows one selection, and
   *
   * `"single-persist"` allows and requires one selection.
   *
   * @default "single"
   */
  accessor selectionMode: SelectionMode;
  /** Fires when the user selects/deselects `calcite-tree-items`. */
  readonly calciteTreeSelect: import("@arcgis/lumina").TargetedEvent<this, void>;
  readonly "@eventTypes": {
    calciteTreeSelect: Tree["calciteTreeSelect"]["detail"];
  };
}