# mypy: disable-error-code="misc, override, attr-defined, no-redef, assignment"

import PyQt5.QtGui
import PyQt5.QtWidgets
import QT4Widgets as QT4Widgets
import QT4Widgets.SortableTreeWidget
import PyQt5.QtCore as QtCore
import PyQt5.QtWidgets as QtWidgets
import UI4.Util.ScenegraphIconManager as ScenegraphIconManager
import Utils as Utils
from typing import ClassVar, Set, Tuple

class AttributeDataTreeWidgetItem(BaseTreeWidgetItem):
    AttributeName: ClassVar[str] = ...
    LocationType: ClassVar[str] = ...
    @classmethod
    def ConfigureDrag(cls, draggedItems: list[LocationTreeWidgetItem], drag: PyQt5.QtGui.QDrag): ...
    @classmethod
    def getAttributeName(cls) -> str: ...
    @classmethod
    def getLocationType(cls) -> str: ...
    def getSortID(self): ...
    def shouldDrawGreyForeground(self) -> bool: ...
    def updateDisplayData(self): ...

class BaseTreeWidgetItem(QT4Widgets.SortableTreeWidget.SortableTreeWidgetItem):
    def __init__(self, parent: PyQt5.QtWidgets.QTreeWidgetItem | None, handle, topLevelHandle) -> None: ...
    @classmethod
    def ConfigureDrag(cls, draggedItems: list[BaseTreeWidgetItem], drag: PyQt5.QtGui.QDrag): ...
    def attributeDataChildCount(self): ...
    def getChildItems(self, visibleOnly: bool = ..., locationsOnly: bool = ..., allDescendants: bool = ...) -> list[LocationTreeWidgetItem]: ...
    def getChildSortID(self, childName): ...
    def getHandle(self): ...
    def getLocationPath(self): ...
    def getNumChildSortIDs(self) -> int: ...
    def getSortID(self) -> int: ...
    def getTopLevelHandle(self): ...
    def getTopLevelIndex(self): ...
    def getTopLevelLocationPath(self): ...
    def inheritSortID(self): ...
    def isAttributeDataItem(self) -> bool: ...
    @classmethod
    def isAttributeDataType(cls) -> bool: ...
    def isLocationItem(self) -> bool: ...
    @classmethod
    def isLocationType(cls) -> bool: ...
    def setAttributeDataChildren(self, attributeDataChildHandles: dict): ...
    def setChildSortOrder(self, childNames: list[str], updateChildren: bool = ...): ...
    def setHandle(self, handle): ...
    def setSortID(self, sortId): ...
    def setTopLevelHandle(self, topLevelHandle): ...
    def setTopLevelIndex(self, topLevelIndex): ...
    def updateChildIndicator(self): ...
    def __lt__(self, item) -> bool: ...

class LocationTreeWidgetItem(BaseTreeWidgetItem):
    TYPE_COLUMN: ClassVar[int] = ...
    @classmethod
    def ConfigureDrag(cls, draggedItems: list[LocationTreeWidgetItem], drag: PyQt5.QtGui.QDrag): ...
    def getLocationType(self) -> str: ...
