/// <reference path="../../index.d.ts" />
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { FlipContext } from "../interfaces.js";
import type { IconName } from "../calcite-icon/interfaces.js";

/**
 * @cssproperty [--calcite-tree-text-color] - Specifies the component's text color.
 * @cssproperty [--calcite-tree-text-color-selected] - When 'selected', specifies the component's text color.
 * @cssproperty [--calcite-tree-selected-icon-color] - Specifies the component's selection icon color.
 * @slot  - A slot for adding text.
 * @slot [children] - A slot for adding nested `calcite-tree` elements.
 * @slot [actions-end] - A slot for adding actions to the end of the component. It is recommended to use two or fewer actions.
 */
export abstract class TreeItem extends LitElement {
  /**
   * When `true`, interaction is prevented and the component is displayed with lower opacity.
   *
   * @default false
   */
  accessor disabled: boolean;
  /**
   * When `true`, expands the component and its contents.
   *
   * @default false
   */
  accessor expanded: boolean;
  /** When `true`, the icon will be flipped when the element direction is right-to-left (`"rtl"`). */
  accessor iconFlipRtl: FlipContext;
  /** Specifies an icon to display at the start of the component. */
  accessor iconStart: IconName;
  /** Specifies an accessible label for the component. */
  accessor label: string;
  /**
   * When `true`, the component is selected.
   *
   * @default false
   */
  accessor selected: boolean;
  /** Fires when the component's content area is collapsed. */
  readonly calciteTreeItemCollapse: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** Fires when the component's content area is expanded. */
  readonly calciteTreeItemExpand: import("@arcgis/lumina").TargetedEvent<this, void>;
  /** Fires when the component is selected or deselected. */
  readonly calciteTreeItemSelect: import("@arcgis/lumina").TargetedEvent<this, void>;
  readonly "@eventTypes": {
    calciteTreeItemCollapse: TreeItem["calciteTreeItemCollapse"]["detail"];
    calciteTreeItemExpand: TreeItem["calciteTreeItemExpand"]["detail"];
    calciteTreeItemSelect: TreeItem["calciteTreeItemSelect"]["detail"];
  };
}