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

import PyFnAttribute as FnAttribute
import PyFnGeolib as FnGeolib
import NodegraphAPI as NodegraphAPI
import Nodes3DAPI as Nodes3DAPI
import PackageSuperToolAPI as PackageSuperToolAPI
import PackageSuperToolAPI.Packages
import PyFnAttribute
import PyFnGeolib
import PyQt5.QtCore
import PyQt5.QtGui
import PyQt5.QtWidgets
import PyQt5.QtCore as QtCore
import PyQt5.QtGui as QtGui
import PyQt5.QtWidgets as QtWidgets
import UI4.Util.ScenegraphIconManager as ScenegraphIconManager
import UI4 as UI4
import Utils as Utils
import ViewerAPI
import typing
from Callbacks.Callbacks import Callbacks as Callbacks
from PyUtilModule.VirtualKatana import ScenegraphManager as ScenegraphManager
from _typeshed import Incomplete
from typing import ClassVar, Set, Tuple

GafferThreeListWatcher: _GafferThreeListWatcher

class _GafferThreeListWatcher(PyQt5.QtCore.QObject):
    listUpdated: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    def __init__(self) -> None: ...
    def _GafferThreeListWatcher__on_event_idle(self): ...
    def _GafferThreeListWatcher__on_geolib_stateChanged(self): ...
    def _GafferThreeListWatcher__on_sceneAboutToLoad(self): ...
    @staticmethod
    def _GafferThreeListWatcher__processLocationData(locationData: PyFnGeolib.LocationData) -> PyFnAttribute.ConstVector | None: ...
    def _GafferThreeListWatcher__processLocationEvents(self): ...
    def _GafferThreeListWatcher__setList(self, newList): ...
    def _GafferThreeListWatcher__updateClient(self, viewNode: NodegraphAPI.Node | None): ...
    def getList(self) -> list[str]: ...

def AdoptforEditing(locations: list[str], gafferNode: PackageSuperToolAPI.BaseNode): ...
def BuildContextMenu(locations: list[str], selectedGafferNodeName: str, knownGafferNodeNames: list[str]) -> PyQt5.QtWidgets.QMenu: ...
def BuildDeleteActionLabel(packages: list[PackageSuperToolAPI.Packages.Package]) -> str: ...
def CanAdoptForEditing(locations: list[str], gafferNode: PackageSuperToolAPI.BaseNode) -> bool: ...
def CreateLightAtCameraPosition(gafferThreeNodeName: str, packageClassName: str, camera: ViewerAPI.ViewportCamera): ...
def CreateLightPackage(gafferThreeNode, packageClassName: str, position, rotation, centerOfInterest: float, shadowFallDistance: float): ...
def DeleteInGaffers(locations: list[str], gafferNodes: list[PackageSuperToolAPI.BaseNode]): ...
def DuplicateCurrentlySelectedLight(gafferThreeNodeName: str): ...
def FindGafferThreeNodeForLocation(location: str, boundingGafferName: Incomplete | None = ...): ...
def FindPackageForCurrentSelection(raiseOnMissing: bool = ..., includeEditPackages: bool = ...) -> PackageSuperToolAPI.Packages.Package | None: ...
def FindTemplateMaterialPathForLocation(location: str) -> str: ...
def GetDeletablePackagesInGaffers(locations: list[str], gafferNodes: list[PackageSuperToolAPI.BaseNode]) -> typing.Iterator[PackageSuperToolAPI.Packages.Package]: ...
def GetIcon(iconName) -> PyQt5.QtGui.QIcon: ...
def GetIconPixmaps(iconName) -> None: ...
def GetLightPackageIcon(packageClass: object, iconSize: int = ...) -> PyQt5.QtGui.QIcon: ...
def GetMaterialMetaFromAttributes(attrs: PyFnAttribute.GroupAttribute): ...
def GetParametersHashFromAttributes(attrs: PyFnAttribute.GroupAttribute) -> int: ...
def GetPotentialChildren(location: str) -> list: ...
def GetRenamablePackage(locations: list[str], gafferNode: PackageSuperToolAPI.BaseNode) -> PackageSuperToolAPI.Packages.Package | None: ...
def GetViewerParametersFromAttributes(attrs: PyFnAttribute.GroupAttribute): ...
def ProvideLightPackageWithTemplateMaterial(lightPackage: PackageSuperToolAPI.Packages.Package) -> TemplateMaterialPackage: ...
def ShowRenameDialog(package: PackageSuperToolAPI.Packages.Package): ...
