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

import NodegraphAPI as NodegraphAPI
import PyQt5.QtCore
import PyQt5.QtCore as QtCore
import UI4.Widgets.TreeWidget
from PyUtilModule.VirtualKatana import Widgets as Widgets
from UI4.Widgets.TreeWidget import TreeWidget
from _typeshed import Incomplete
from typing import ClassVar, Set, Tuple

class DopeSheetItem(UI4.Widgets.TreeWidget.TreeItem):
    def __init__(self, *args, **kwargs) -> None: ...
    @classmethod
    def Prune(cls, child, keep: Incomplete | None = ...): ...
    def _KeyManagingItem__addKeys(self, keys): ...
    def _setKeysFromChildren(self): ...
    def _setKeysFromChildrenSelected(self): ...
    def _setKeysSelectedAndUpdate(self, keys, selected, updateParent: bool = ...): ...
    def addChild(self, child, **kwargs): ...
    def buildContextMenu(self, menu): ...
    def clear(self): ...
    def clearKeys(self): ...
    def clearKeysSelected(self): ...
    def getDescendant(self, childNameList, create: bool = ...): ...
    def getFullNameBelow(self, excludedParent, separator: str = ...): ...
    def getKeys(self): ...
    def getKeysSelected(self): ...
    def hasKeys(self): ...
    def hasKeysSelected(self): ...
    def iterKeys(self): ...
    def iterKeysSelected(self): ...
    def iterKeysUnselected(self): ...
    def setKeys(self, keys): ...
    def setKeysSelected(self, keys, selected): ...
    def takeChild(self, index): ...
    def takeChildren(self): ...
    def toggleKeySelected(self, key): ...

class DopeSheetTreeWidget(TreeWidget):
    contextMenu: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    def __init__(self, *args, **kwargs) -> None: ...
    def _buildRootItem(self, parent, name): ...
    def buildItemContextMenu(self, item, menu): ...
    def resizeEvent(self, event): ...

class KeyManagingItem(UI4.Widgets.TreeWidget.TreeItem):
    def __init__(self, *args, **kwargs) -> None: ...
    @classmethod
    def Prune(cls, child, keep: Incomplete | None = ...): ...
    def _KeyManagingItem__addKeys(self, keys): ...
    def _setKeysFromChildren(self): ...
    def _setKeysFromChildrenSelected(self): ...
    def _setKeysSelectedAndUpdate(self, keys, selected, updateParent: bool = ...): ...
    def addChild(self, child, **kwargs): ...
    def buildContextMenu(self, menu): ...
    def clear(self): ...
    def clearKeys(self): ...
    def clearKeysSelected(self): ...
    def getDescendant(self, childNameList, create: bool = ...): ...
    def getFullNameBelow(self, excludedParent, separator: str = ...): ...
    def getKeys(self): ...
    def getKeysSelected(self): ...
    def hasKeys(self): ...
    def hasKeysSelected(self): ...
    def iterKeys(self): ...
    def iterKeysSelected(self): ...
    def iterKeysUnselected(self): ...
    def setKeys(self, keys): ...
    def setKeysSelected(self, keys, selected): ...
    def takeChild(self, index): ...
    def takeChildren(self): ...
    def toggleKeySelected(self, key): ...

class SelectionMatchingItem(KeyManagingItem):
    def _setKeysFromChildrenSelected(self): ...
    def _setKeysSelectedAndUpdate(self, keys, selected, **kwargs): ...
    def selected(self): ...
    def setSelected(self, selected, **kwargs): ...

def GetItemFromParamName(tree, paramFullName, create: bool = ...): ...
def GetParamFromItem(item, paramRoot: Incomplete | None = ...): ...
def GetParamNameFromItem(item, paramRoot: Incomplete | None = ...): ...
def PruneParam(item, paramRoot: Incomplete | None = ...): ...
