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

import CacheManager as CacheManager
import PyFnAttribute as FnAttribute
import PyFnGeolib as FnGeolib
import NodegraphAPI
import PyFnAttribute
import PyFnGeolib
import Utils as Utils
import typing
from Nodes3DAPI.TerminalOpDelegates.TerminalOpDelegate import TerminalOpDelegate as TerminalOpDelegate
from PyUtilModule.WorkingSet import WorkingSet
from PyUtilModule.WorkingSetManager import WorkingSetManager as WorkingSetManager
from typing import ClassVar, Set, Tuple

class WorkingSetTerminalOpDelegate(TerminalOpDelegate):
    OP_TYPE: ClassVar[str] = ...
    def __init__(self) -> None: ...
    def _WorkingSetTerminalOpDelegate__addWorkingSet(self, workingSetName): ...
    def _WorkingSetTerminalOpDelegate__flushCaches(self): ...
    def _WorkingSetTerminalOpDelegate__generateOpArgs(self): ...
    def _WorkingSetTerminalOpDelegate__removeWorkingSet(self, workingSetName): ...
    def _WorkingSetTerminalOpDelegate__workingSetClearCallback(self, workingSet): ...
    def _WorkingSetTerminalOpDelegate__workingSetDeletedCallback(self, args): ...
    def _WorkingSetTerminalOpDelegate__workingSetLocationChangeCallback(self, locationStateChanges, workingSet, sender): ...
    def appendOp(self, op: PyFnGeolib.GeolibRuntimeOp, txn: PyFnGeolib.GeolibRuntimeTransaction, port: NodegraphAPI.Port | None, graphState: NodegraphAPI.GraphState) -> PyFnGeolib.GeolibRuntimeOp: ...
    def getWorkingSetNames(self) -> tuple[str, ...]: ...
    def setPolishOutput(self, workingSetName: str, polishOutput: bool): ...
    def setWorkingSetNames(self, workingSetNames: typing.Sequence[str]): ...
    def update(self) -> bool: ...

class _WorkingSetsInfoAttrsMap:
    def __init__(self) -> None: ...
    def addWorkingSet(self, name: str, workingSet: WorkingSet): ...
    def getName(self, workingSet: WorkingSet) -> str: ...
    def getWorkingSetAttr(self, name: str) -> PyFnAttribute.GroupAttribute: ...
    def getWorkingSetNames(self) -> list[str]: ...
    def removeWorkingSet(self, name: str): ...
    def updateWorkingSet(self, workingSet: WorkingSet): ...
