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

import PyFnAttribute
from . import Util as Util
from typing import Any, Set, Tuple, overload

NO_OP: str

class Geolib:
    def __init__(self) -> None: ...
    def createRuntime(self, *args, **kwargs): ...
    def setPluginPath(self, arg0: list[str]) -> None: ...

class GeolibRuntime:
    def __init__(self, *args, **kwargs) -> None: ...
    def EndProfilingSession(self, outputFile: str = ...) -> None: ...
    def IsProfilingSession(self) -> bool: ...
    def StartProfilingSession(self) -> None: ...
    def _sendMessageInternal(self, arg0: object) -> Any: ...
    @overload
    def commit(self, txn: GeolibRuntimeTransaction) -> int: ...
    @overload
    def commit(self, txns: list[GeolibRuntimeTransaction]) -> int: ...
    def createTransaction(self) -> GeolibRuntimeTransaction: ...
    def describeOp(self, opType: str) -> PyFnAttribute.GroupAttribute: ...
    def evict(self, primaryPathToKeep: str) -> None: ...
    def flushCaches(self) -> None: ...
    def getLatestCommitId(self) -> int: ...
    def getOpFromOpId(self, opId: int) -> GeolibRuntimeOp: ...
    def getOptions(self) -> PyFnAttribute.Attribute: ...
    def getRegisteredOpTypes(self) -> PyFnAttribute.StringAttribute: ...
    def getRootLocationPath(self) -> str: ...
    def isProcessing(self) -> bool: ...
    def isValidOp(self, opId: int) -> bool: ...
    def setOptions(self, options: PyFnAttribute.Attribute) -> None: ...

class GeolibRuntimeClient:
    def __init__(self, *args, **kwargs) -> None: ...
    def cookLocation(self, locationPath: str) -> LocationData: ...
    def getActiveLocations(self, rootLocationPath: str) -> list[str]: ...
    def getCachedLocation(self, locationPath: str) -> Any: ...
    def getLocationEvents(self, maxEvents: int = ...) -> tuple: ...
    def getOp(self) -> GeolibRuntimeOp: ...
    def getOpenLocations(self, rootLocationPath: str) -> list[str]: ...
    def hasLocationEvents(self) -> bool: ...
    def interruptOpenRecursive(self) -> None: ...
    def isAllOpen(self) -> bool: ...
    def isEventCachingEnabled(self) -> bool: ...
    def isLocationActive(self, locationPath: str) -> bool: ...
    def isLocationDataCurrent(self, locationPath: str, commitId: int = ...) -> bool: ...
    def isLocationOpen(self, locationPath: str) -> bool: ...
    def setAllOpen(self, allOpen: bool) -> None: ...
    def setEventCachingEnabled(self, enabled: bool = ...) -> None: ...
    def setLocationsActive(self, locationPaths: list[str]) -> None: ...
    def setLocationsClosed(self, locationPaths: list[str]) -> None: ...
    def setLocationsClosedRecursive(self, locationPaths: list[str]) -> None: ...
    def setLocationsInactive(self, locationPaths: list[str]) -> None: ...
    def setLocationsOpen(self, locationPaths: list[str]) -> None: ...
    def setLocationsOpenRecursive(self, locationPaths: list[str], stopTypes: list[str] = ...) -> None: ...

class GeolibRuntimeOp:
    def __init__(self, *args, **kwargs) -> None: ...
    def getInputs(self) -> tuple: ...
    def getNodeName(self) -> str: ...
    def getNodeType(self) -> str: ...
    def getOpArgs(self) -> tuple: ...
    def getOpId(self) -> int: ...
    def getTag(self) -> str: ...
    def serializeToFile(self, filepath: str) -> bool: ...

class GeolibRuntimeTransaction:
    def __init__(self, *args, **kwargs) -> None: ...
    def createClient(self, *args, **kwargs): ...
    def createOp(self) -> GeolibRuntimeOp: ...
    def deserializeOpsFromFile(self, filepath: str) -> GeolibRuntimeOp: ...
    def setClientOp(self, client, op: GeolibRuntimeOp) -> None: ...
    def setNodeName(self, op: GeolibRuntimeOp, nodeName: str) -> None: ...
    def setNodeType(self, op: GeolibRuntimeOp, nodeType: str) -> None: ...
    def setOpArgs(self, op: GeolibRuntimeOp, opType: str, opArgs: PyFnAttribute.Attribute) -> None: ...
    def setOpInputs(self, op: GeolibRuntimeOp, inputs: list[GeolibRuntimeOp]) -> None: ...
    def setTag(self, op: GeolibRuntimeOp, tag: str) -> None: ...

class LocationData:
    def __init__(self, *args, **kwargs) -> None: ...
    def doesLocationExist(self) -> bool: ...
    def getAttrs(self) -> PyFnAttribute.GroupAttribute: ...
    def getAttrsHash(self) -> str: ...
    def getHash(self) -> str: ...
    def getPotentialChildren(self) -> list: ...
    def getPotentialChildrenAttr(self) -> PyFnAttribute.StringAttribute: ...
    def getPotentialChildrenHash(self) -> str: ...

class LocationEvent:
    def __init__(self, *args, **kwargs) -> None: ...
    def getLocationData(self) -> Any: ...
    def getLocationPath(self) -> str: ...
    def getLocationPathAttr(self) -> PyFnAttribute.StringAttribute: ...
    def hasLocationData(self) -> bool: ...
    def hasOpenChange(self) -> bool: ...
    @overload
    def isLocationDataCurrent(self) -> bool: ...
    @overload
    def isLocationDataCurrent(self) -> Any: ...
    def isOpen(self) -> bool: ...

def GetRegisteredRuntimeInstance(*args, **kwargs): ...
def RegisterRuntimeInstance(runtime, key: str = ...) -> None: ...
