import { TreeItem } from "./treeContext.js";
import "./EFTreeItem.js";
import * as lit13 from "lit";
import { LitElement, PropertyValues } from "lit";
import * as lit_html12 from "lit-html";

//#region src/gui/tree/EFTree.d.ts

/**
 * Generic tree component for displaying hierarchical data.
 *
 * Takes an array of TreeItem objects and renders them as an expandable tree.
 * Provides context for selection and expand/collapse state.
 *
 * @fires tree-select - When an item is selected. Detail: { id: string, item: TreeItem }
 *
 * @example
 * ```html
 * <ef-tree
 *   .items=${[
 *     { id: "folder1", label: "Folder 1", children: [
 *       { id: "file1", label: "File 1" },
 *       { id: "file2", label: "File 2" },
 *     ]},
 *     { id: "file3", label: "File 3" },
 *   ]}
 *   @tree-select=${(e) => console.log('Selected:', e.detail.id)}
 * ></ef-tree>
 * ```
 */
declare class EFTree extends LitElement {
  static styles: lit13.CSSResult;
  /** Tree items to display */
  items: TreeItem[];
  /** Optional header text */
  header: string;
  /** Whether to show the header */
  showHeader: boolean;
  /** Currently selected item ID (can be set externally) */
  selectedId: string | null;
  /** Whether to expand all items by default */
  expandAll: boolean;
  private treeState;
  private treeActions;
  private providedContext;
  private findItem;
  private initializeExpandedState;
  protected willUpdate(changedProperties: PropertyValues): void;
  protected updated(changedProperties: PropertyValues): void;
  connectedCallback(): void;
  render(): lit_html12.TemplateResult<1>;
}
declare global {
  interface HTMLElementTagNameMap {
    "ef-tree": EFTree;
  }
}
//#endregion
export { EFTree };
//# sourceMappingURL=EFTree.d.ts.map