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

import Utils.EventModule as EventModule
import NodegraphAPI as NodegraphAPI
import Utils as Utils
import collections
from PyUtilModule.WorkingSet import WorkingSet as WorkingSet
from PyUtilModule.WorkingSetManager import WorkingSetManager as WorkingSetManager
from Utils.Decorators import deprecated as deprecated
from _typeshed import Incomplete
from typing import Set, Tuple

ExpandedWorkingSetName: str
PinnedWorkingSetName: str
SelectedWorkingSetName: str
WorkingSetNames: tuple

class Scenegraph:
    def __init__(self) -> None: ...
    def _Scenegraph__emitSelectionChanged(self, selectedLocations, deselectedLocations, sender): ...
    def _Scenegraph__expandedLocationStateChangedCallback(self, locationStateChanges, workingSet, sender): ...
    def _Scenegraph__onSceneLoadOrNewScene(self, **kwargs): ...
    def _Scenegraph__pinnedLocationStateChangedCallback(self, locationStateChanges, workingSet, sender): ...
    def _Scenegraph__selectedLocationStateChangedCallback(self, locationStateChanges, workingSet, sender): ...
    def _Scenegraph__setSelectedLocationStateChangedCallbackEnabled(self, enabled): ...
    def _Scenegraph__validateLocationArgument(self, functionName: str, location: str): ...
    def _Scenegraph__validateLocationsArgument(self, functionName: str, locations: list | tuple | set[str] | str): ...
    def addOpenLocations(self, locations, replace, sender: Incomplete | None = ...): ...
    def addPinnedLocation(self, location, sender: Incomplete | None = ...): ...
    def addPinnedLocations(self, locations, replace, sender: Incomplete | None = ...): ...
    def addSelectedLocations(self, locations, replace, history: bool = ..., sender: Incomplete | None = ...): ...
    def clearBookmarkSets(self, sender: Incomplete | None = ...): ...
    def clearOpenLocations(self, sender: Incomplete | None = ...): ...
    def clearPinnedLocations(self, sender: Incomplete | None = ...): ...
    def clearSelection(self, sender: Incomplete | None = ...): ...
    def closeLocations(self, locationPathOrPaths, recursive: bool = ..., sender: Incomplete | None = ...): ...
    def ensureLocationVisible(self, location, sender: Incomplete | None = ...): ...
    def getBookmarkSets(self): ...
    def getImplicitResolversActive(self): ...
    def getOpenLocations(self): ...
    def getPinnedLocations(self): ...
    def getSelectedLocations(self): ...
    def getVisibleSelectedLocations(self): ...
    def graphId(self): ...
    def invertSelectedLocations(self, locations, history: bool = ..., sender: Incomplete | None = ...): ...
    def isLocationOpen(self, location): ...
    def isLocationPinned(self, location): ...
    def isLocationSelected(self, location: str, checkAncestors: bool = ...) -> bool: ...
    def isLocationVisible(self, location): ...
    def isViewerVisibilityFollowingWorkingSet(self) -> bool: ...
    def locationHasPinnedDescendants(self, location): ...
    def openLocations(self, locationPathOrPaths, sender: Incomplete | None = ...): ...
    def openLocationsRecursive(self, locationPathOrPaths, sender: Incomplete | None = ...): ...
    def pushSelectionHistory(self): ...
    def removePinnedLocation(self, location, sender: Incomplete | None = ...): ...
    def removePinnedLocations(self, locations, sender: Incomplete | None = ...): ...
    def removeSelectedLocations(self, locations, history: bool = ..., sender: Incomplete | None = ...): ...
    def selectionHistoryBackward(self): ...
    def selectionHistoryCanGoBackward(self): ...
    def selectionHistoryCanGoForward(self): ...
    def selectionHistoryForward(self): ...
    def setBookmarkSets(self, openSet, selectionSet, pinSet): ...
    def setImplicitResolversActive(self, active): ...
    def setLocationOpen(self, location, isOpen, sender: Incomplete | None = ...): ...
    def setLocationSelected(self, location, selected: bool = ..., sender: Incomplete | None = ...): ...
    def setViewerVisibilityFollowingWorkingSet(self, mode: bool): ...

class SelectionHistory:
    def __init__(self) -> None: ...
    def backward(self): ...
    def canGoBackward(self): ...
    def canGoForward(self): ...
    def clear(self): ...
    def commit(self): ...
    def forward(self): ...
    def getCurrent(self): ...
    def getHistory(self): ...
    def update(self, items): ...

class _OrderedSet(collections.OrderedDict):
    def append(self, item): ...
    def discard(self, item): ...
    def insert(self, item): ...

def getActiveScenegraph(): ...
