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

import PyFnAttribute as FnAttribute
import PyFnAttribute
import PyFnGeolib
import RenderingAPI as RenderingAPI
from UI4.Widgets.SceneGraphView.SceneGraphLocationTranslation import GetLocationName as GetLocationName, GetParentPath as GetParentPath
from typing import Set, Tuple

class SceneGraphTree:
    def __init__(self) -> None: ...
    def addOrUpdateSceneGraphLocation(self, locationPath: str, locationData: PyFnGeolib.LocationData) -> TreeItem: ...
    def clear(self): ...
    def deleteSceneGraphLocation(self, locationPath): ...
    def getTreeItem(self, locationPath: str) -> TreeItem: ...
    def hasLocation(self, locationPath: str) -> bool: ...

class SceneGraphTreeException(Exception): ...

class TreeItem:
    def __init__(self, locationPath: str, locationData: PyFnGeolib.LocationData, parentTreeItem: TreeItem | None) -> None: ...
    def _TreeItem__clearLookupMaps(self): ...
    def _TreeItem__populateIndexToNameLookupMap(self): ...
    def _TreeItem__populateNameToIndexLookupMap(self): ...
    def addChild(self, childTreeItem): ...
    def deleteChild(self, childTreeItem): ...
    def getAttributeData(self, attributeName: str, returnResolvedData: bool = ...) -> str | float | int | list | None: ...
    def getAttributes(self) -> PyFnAttribute.Attribute: ...
    def getChildByName(self, locationName: str) -> TreeItem: ...
    def getChildBySceneGraphIndex(self, sceneGraphIndex): ...
    def getChildItems(self) -> list[TreeItem]: ...
    def getChildNames(self) -> list[str]: ...
    def getLocationData(self) -> PyFnGeolib.LocationData: ...
    def getLocationName(self) -> str: ...
    def getLocationPath(self) -> str: ...
    def getLocationType(self) -> str | None: ...
    def getNumberOfChildren(self) -> int: ...
    def getParent(self) -> TreeItem | None: ...
    def getPotentialChildren(self) -> list: ...
    def getSceneGraphIndexInParent(self): ...
    def getSceneGraphIndexOfChildTreeItem(self, childTreeItem): ...
    def getSceneGraphIndexOfLocationName(self, locationName): ...
    def updateLocationData(self, locationData: PyFnGeolib.LocationData): ...
