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

import PyFnGeolib as FnGeolib
import NodegraphAPI as NodegraphAPI
import Nodes3DAPI as Nodes3DAPI
import PyFnGeolib
import Utils as Utils
import typing
from _typeshed import Incomplete
from typing import ClassVar, Set, Tuple

class AttributeHistory:
    LocationPathHistoryEntryPrefix: ClassVar[str] = ...
    MAX_TIME_PER_IDLE: ClassVar[float] = ...
    OpTypeHistoryEntryPrefix: ClassVar[str] = ...
    ParentDelegateTypes: ClassVar[tuple] = ...
    STOP_AT_ATTR_CREATION: ClassVar[int] = ...
    STOP_AT_ATTR_SET: ClassVar[int] = ...
    STOP_AT_END: ClassVar[int] = ...
    STOP_IMMEDIATELY: ClassVar[int] = ...
    def __init__(self, locationPath: str, attributeName: str, startNode: Incomplete | None = ..., startOp: Incomplete | None = ..., startPort: Incomplete | None = ..., startGraphState: Incomplete | None = ..., delegateNodes: bool = ...) -> None: ...
    @classmethod
    def GetHistoryDelegateNode(cls, node: NodegraphAPI.Node): ...
    @classmethod
    def IsLocationPath(cls, historyEntry): ...
    @classmethod
    def IsOpType(cls, historyEntry): ...
    def _AttributeHistory__appendInputOpsToQueue(self, op: FnGeolibOp): ...
    def _AttributeHistory__appendToHistory(self, op: FnGeolibOp, attributes: dict[str, PyFnAttribute] | None, locationPath: str) -> bool: ...
    def _AttributeHistory__deleteClient(self, clientKey): ...
    def _AttributeHistory__evaluateNextOp(self): ...
    def _AttributeHistory__findLocationPathWithAttribute(self, attrDict: dict, locationPath, includeGlobals) -> str | None: ...
    def _AttributeHistory__getCachedHistory(self) -> list[tuple[str, PyFnAttribute]]: ...
    def _AttributeHistory__getParentLocation(self, locationPath): ...
    def _AttributeHistory__on_event_idle(self, eventType, eventID): ...
    def _AttributeHistory__opToHistoryEntry(self, op: FnGeolibOp) -> str: ...
    def _AttributeHistory__processLocationData(self, op: FnGeolibOp, locationPath: str, locationData: PyFnGeolib.LocationData | None) -> bool: ...
    def _AttributeHistory__processLocationDataAsync(self, op: FnGeolibOp, locationPath: str, locationData: PyFnGeolib.LocationData | None) -> bool: ...
    def _AttributeHistory__setCallbacks(self, completeCallback: typing.Callable, updateCallback: typing.Callable): ...
    def _AttributeHistory__setClientOp(self, clientKey, op): ...
    def _AttributeHistory__shouldStopAtAttribute(self, attribute): ...
    def _AttributeHistory__updateHistory(self) -> bool: ...
    def _AttributeHistory__walkOpTree(self, synchronous: bool = ...): ...
    def clear(self): ...
    def freeze(self): ...
    def getAttributeCreationNode(self, callback: Incomplete | None = ..., updateCallback: typing.Optional[typing.Callable] = ...) -> tuple[Nodes3DAPI.Node3D, PyFnAttribute] | Tuple[None, None]: ...
    def getAttributeInheritance(self, callback: Incomplete | None = ..., updateCallback: typing.Optional[typing.Callable] = ...) -> list[tuple[str, PyFnAttribute] | None]: ...
    def getAttributeName(self): ...
    def getAttributeSetNode(self, callback: Incomplete | None = ..., updateCallback: typing.Optional[typing.Callable] = ...) -> tuple[Nodes3DAPI.Node3D, PyFnAttribute] | None: ...
    def getLocationPath(self): ...
    def getNodeHistory(self, callback: Incomplete | None = ..., updateCallback: typing.Optional[typing.Callable] = ...): ...
    def getStartNode(self): ...
    def isFrozen(self): ...
    def thaw(self): ...

class _AsyncOpManager:
    MAX_UPSTREAM_CLIENTS: ClassVar[int] = ...
    def __init__(self, runtime, evaluatedOpInputs, startOp, locationPath) -> None: ...
    def activateOpInfo(self, opInfo): ...
    def addOpInfo(self, opInfo): ...
    def continueToInputOp(self) -> bool: ...
    def getCurrentOpInfo(self): ...
    def getOpInfo(self, op): ...
    def tryNextInput(self) -> bool: ...
    def updateActiveClientList(self): ...

class _OpInfo:
    def __init__(self, op, opManager) -> None: ...
    def getInputOpInfos(self): ...
    def __eq__(self, other) -> bool: ...
    def __hash__(self) -> int: ...

def GetAttributeCreationNode(locationPath: str, attributeName: str, startNode: Incomplete | None = ..., startOp: Incomplete | None = ..., startPort: Incomplete | None = ..., startGraphState: Incomplete | None = ..., delegateNodes: bool = ...) -> tuple[Nodes3DAPI.Node3D, PyFnAttribute] | Tuple[None, None]: ...
def GetAttributeInheritance(locationPath: str, attributeName: str, startNode: Incomplete | None = ..., startOp: Incomplete | None = ..., startPort: Incomplete | None = ..., startGraphState: Incomplete | None = ...) -> list[tuple[str, PyFnAttribute] | None]: ...
def GetAttributeSetNode(locationPath: str, attributeName: str, startNode: Incomplete | None = ..., startOp: Incomplete | None = ..., startPort: Incomplete | None = ..., startGraphState: Incomplete | None = ..., delegateNodes: bool = ...) -> tuple[Nodes3DAPI.Node3D, PyFnAttribute] | Tuple[None, None]: ...
def GetNodeHistory(locationPath: str, attributeName: str, startNode: Incomplete | None = ..., startOp: Incomplete | None = ..., startPort: Incomplete | None = ..., startGraphState: Incomplete | None = ..., delegateNodes: bool = ...): ...
