import {
  TreeViewCheckChangeEvent as KendoTreeViewCheckChangeEvent,
  TreeViewExpandChangeEvent as KendoTreeViewExpandChangeEvent,
  TreeViewItemClickEvent as KendoTreeViewItemClickEvent,
  TreeViewItemDragEndEvent as KendoTreeViewItemDragEndEvent,
  TreeViewItemDragOverEvent as KendoTreeViewItemDragOverEvent,
  TreeViewItemDragStartEvent as KendoTreeViewItemDragStartEvent,
} from "@progress/kendo-react-treeview";
import { TreeViewContextMenuEvent as KendoTreeViewContextMenuEvent } from "@progress/kendo-react-treeview/dist/npm/events";

export interface ItemRenderProps {
  item: any;
  itemHierarchicalIndex: string;
}

export interface TreeViewProps {
  dataTestId?: string;
  animate?: boolean;
  "aria-label"?: string;
  "aria-labelledby"?: string;
  "aria-multiselectable"?: boolean | "false" | "true";
  checkboxes?: boolean;
  checkField?: string;
  checkIndeterminateField?: string;
  childrenField?: string;
  className?: string;
  data?: null | any[];
  dir?: string;
  disableField?: string;
  draggable?: boolean;
  expandField?: string;
  expandIcons?: boolean;
  focusIdField?: string;
  hasChildrenField?: string;
  item?: React.ComponentType<ItemRenderProps>;
  selectField?: string;
  size?: null | "small" | "medium" | "large";
  tabIndex?: number;
  textField?: string;
  getFocusHierarchicalIndex?: (itemId: any) => undefined | string;
  onCheckChange?: (event: KendoTreeViewCheckChangeEvent) => void;
  onContextMenu?: (event: KendoTreeViewContextMenuEvent) => void;
  onExpandChange?: (event: KendoTreeViewExpandChangeEvent) => void;
  onItemClick?: (event: KendoTreeViewItemClickEvent) => void;
  onItemDragEnd?: (event: KendoTreeViewItemDragEndEvent) => void;
  onItemDragOver?: (event: KendoTreeViewItemDragOverEvent) => void;
  onItemDragStart?: (event: KendoTreeViewItemDragStartEvent) => void;
}
