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

import CatalogAPI as CatalogAPI
import NodegraphAPI
import Nodes2DAPI as Nodes2DAPI
import Nodes3DAPI as Nodes3DAPI
import PyFnGeolib
import RenderManager.RenderSettings
import Utils as Utils
from Callbacks.Callbacks import Callbacks as Callbacks
from typing import ClassVar, Set, Tuple

class NukeSessionMonitor:
    _kCatalogBufferChanged: ClassVar[str] = ...
    _kIdleEvent: ClassVar[str] = ...
    _kRenderCancelledEvent: ClassVar[str] = ...
    _kRenderFinalizedEvent: ClassVar[str] = ...
    _kRenderStoppedEvent: ClassVar[str] = ...
    def __init__(self) -> None: ...
    def _NukeSessionMonitor__buildMappings(self, mapping): ...
    def _NukeSessionMonitor__cleanup(self): ...
    def _NukeSessionMonitor__onCatalogBufferChanged(self, eventType, eventID, **kwargs): ...
    def _NukeSessionMonitor__onIdle(self, eventType, eventId, **kwargs): ...
    def _NukeSessionMonitor__onRenderCancelled(self, eventType: str, mainSequenceIDs: tuple[int, ...]): ...
    def _NukeSessionMonitor__onRenderFinalized(self, eventType: str, eventID: int, renderMethod: str, runtime: PyFnGeolib.GeolibRuntime, node: NodegraphAPI.Node, graphState: NodegraphAPI.GraphState, renderUUID: str, renderer: str, renderingSettings: RenderManager.RenderSettings.RenderingSettings, projectSnapshot: ProjectSnapshot | None): ...
    def _NukeSessionMonitor__onRenderStopped(self, eventType: str, completedFrameBuffers): ...
    def _NukeSessionMonitor__onSceneAboutToLoad(self, **kwargs): ...
    @staticmethod
    def _NukeSessionMonitor__tryRegisterEventHandler(eventType, fn): ...
    @staticmethod
    def _NukeSessionMonitor__tryUnregisterEventHandler(eventType, fn): ...
    def _NukeSessionMonitor__unregisterNukeSessions(self, mainSequenceIDs: list[int]): ...
    def registerEvents(self): ...
    def setMappings(self, catalogItem: CatalogAPI.CatalogItem, mapping: dict[str, str]): ...
    def setOutputNodeName(self, catalogItem: CatalogAPI.CatalogItem, outputNodeName: str): ...

def GetNukeSessionMonitor() -> NukeSessionMonitor: ...
