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

import PyFnAttribute as FnAttribute
import PyFnGeolib as FnGeolib
import NodegraphAPI
import Nodes2DAPI
import Nodes3DAPI as Nodes3DAPI
import PyFnGeolib
import Utils as Utils
import typing
from _typeshed import Incomplete
from typing import Set, Tuple

class ClientManager:
    class NullUpdateSuppressor:
        def __init__(self, *args) -> None: ...
        def __enter__(self): ...
        def __exit__(self, *args): ...
    def __init__(self) -> None: ...
    def _ClientManager__addImplicitResolvers(self, txn, opInput, viewedNode): ...
    def _ClientManager__addLocationEventsToQueue(self, locationEvents: list[tuple]): ...
    def _ClientManager__addMuteResolveOp(self, txn, opInput, viewedNode): ...
    def _ClientManager__adjustNumLocationsToProcess(self, delta, lastNumLocations): ...
    def _ClientManager__getLocationEvents(self) -> list[tuple]: ...
    def _ClientManager__getLocationEventsFromClients(self, numLocations: int) -> list[tuple]: ...
    def _ClientManager__getLocationEventsFromQueue(self, numLocations: int) -> list[tuple]: ...
    def _ClientManager__getUpdateSuppressor(self): ...
    def _ClientManager__on_event_idle(self, eventType, eventID): ...
    def _ClientManager__populatePortOpClient(self, port: NodegraphAPI.Port): ...
    def _ClientManager__removePortOpClient(self): ...
    def _ClientManager__terminalOpCallback(self, portOpClient, op, graphState: NodegraphAPI.GraphState, txn): ...
    def _ClientManager__updateOpInput(self, opInput, txn, port: NodegraphAPI.Port): ...
    def _getClient(self, key: str | None) -> PyFnGeolib.GeolibRuntime.Client: ...
    def _getClientForLocation(self, location: str, key: str | None) -> PyFnGeolib.GeolibRuntime.Client: ...
    def _getClients(self) -> list[PyFnGeolib.GeolibRuntime.Client]: ...
    def activateSceneGraphLocation(self, location: str, key: Incomplete | None = ...): ...
    def closeSceneGraphLocation(self, location: str, key: Incomplete | None = ...): ...
    def createClient(self, key: str | None): ...
    def deactivateSceneGraphLocation(self, location: str, key: Incomplete | None = ...): ...
    def deleteClient(self, key: str | None): ...
    def freeze(self): ...
    def interrupt(self): ...
    def isFrozen(self): ...
    def isProcessing(self): ...
    def isStopping(self): ...
    def openSceneGraphLocation(self, location: str, key: Incomplete | None = ...): ...
    def recursiveCloseSceneGraphLocation(self, location: str, key: Incomplete | None = ...): ...
    def recursiveOpenSceneGraphLocation(self, location, key: Incomplete | None = ..., stopTypes: Incomplete | None = ...): ...
    def setAddOrUpdateLocationCallback(self, addOrUpdateLocationCallback: typing.Callable): ...
    def setBeginEventLoopCallback(self, beginEventLoopCallback: typing.Callable): ...
    def setDeleteLocationCallback(self, deleteLocationCallback: typing.Callable): ...
    def setEndEventLoopCallback(self, endEventLoopCallback: typing.Callable): ...
    def setLocationDataProcessedCallback(self, locationDataProcessedCallback: typing.Callable): ...
    def setMaxEventsToProcess(self, maxEvents): ...
    def setMinEventsToProcess(self, minEvents): ...
    def setOpenStateEventCallback(self, openStateEventCallback: typing.Callable): ...
    def setTargetTimePerIdle(self, targetTime): ...
    def setTerminalOps(self, terminalOpArgs): ...
    def setUpdateSuppressorCallback(self, updateSuppressorCallback: typing.Callable): ...
    def setViewNode(self, viewNode: Nodes3DAPI.Node3D | Nodes2DAPI.Node2D, applyImplicitResolvers: bool = ..., extraImplicitResolverOpArgs: Incomplete | None = ...): ...
    def setViewOp(self, viewOp: FnGeolibOp | None, applyImplicitResolvers: bool = ..., extraImplicitResolverOpArgs: Incomplete | None = ...): ...
    def thaw(self): ...
    def updateTerminalOps(self, terminalOpArgs, txn: Incomplete | None = ...): ...
