from typing import overload, Any, Callable, TypeVar, Union
from typing import Tuple, List, Sequence, MutableSequence

Callback = Union[Callable[..., None], None]
Buffer = TypeVar('Buffer')
Pointer = TypeVar('Pointer')
Template = TypeVar('Template')

import vtkmodules.vtkCommonCore

class vtkObjectManager(vtkmodules.vtkCommonCore.vtkObject):
    deserializer:'getset_descriptor'
    invoker:'getset_descriptor'
    object_manager_log_verbosity:'getset_descriptor'
    serializer:'getset_descriptor'
    total_blob_memory_usage:'getset_descriptor'
    total_vtk_data_object_memory_usage:'getset_descriptor'
    def __init__(self, **properties:Any) -> None: ...
    def Clear(self) -> None: ...
    def Export(self, filename:str, indentLevel:int=-1, indentChar:str=...) -> None: ...
    def ExportToBytes(self) -> 'vtkUnsignedCharArray': ...
    def GetAllDependencies(self, identifier:int) -> Tuple[int, int]: ...
    def GetAllDependenciesAsVTKDataArray(self, identifier:int) -> 'vtkTypeUInt32Array': ...
    def GetBlob(self, hash:str, copy:bool=False) -> 'vtkTypeUInt8Array': ...
    def GetBlobHashes(self, ids:Sequence[int]) -> Tuple[str, str]: ...
    def GetDeserializer(self) -> 'vtkDeserializer': ...
    def GetId(self, objectBase:'vtkObjectBase') -> int: ...
    def GetInvoker(self) -> 'vtkInvoker': ...
    def GetNumberOfGenerationsFromBase(self, type:str) -> int: ...
    @staticmethod
    def GetNumberOfGenerationsFromBaseType(type:str) -> int: ...
    def GetObjectAtId(self, id:int) -> 'vtkObjectBase': ...
    def GetObjectManagerLogVerbosity(self) -> vtkLogger.Verbosity: ...
    def GetSerializer(self) -> 'vtkSerializer': ...
    def GetState(self, id:int) -> str: ...
    def GetTotalBlobMemoryUsage(self) -> int: ...
    def GetTotalVTKDataObjectMemoryUsage(self) -> int: ...
    def Import(self, stateFileName:str, blobFileName:str) -> None: ...
    def ImportFromBytes(self, byteArray:'vtkUnsignedCharArray') -> Tuple['vtkObjectBase', 'vtkObjectBase']: ...
    def Initialize(self) -> bool: ...
    def InitializeDefaultHandlers(self) -> bool: ...
    def InitializeExtensionModuleHandlers(self, registrars:'vtkSessionObjectManagerRegistrarFunc', count:int) -> bool: ...
    def Invoke(self, identifier:int, methodName:str, args:str) -> str: ...
    def IsA(self, type:str) -> int: ...
    @staticmethod
    def IsTypeOf(type:str) -> int: ...
    def NewInstance(self) -> 'vtkObjectManager': ...
    def PruneUnusedBlobs(self) -> None: ...
    def PruneUnusedObjects(self) -> None: ...
    def PruneUnusedStates(self) -> None: ...
    @staticmethod
    def ROOT() -> int: ...
    def RegisterBlob(self, hash:str, blob:'vtkTypeUInt8Array') -> bool: ...
    def RegisterObject(self, objectBase:'vtkObjectBase') -> int: ...
    def RegisterState(self, state:str) -> bool: ...
    @staticmethod
    def SafeDownCast(o:'vtkObjectBase') -> 'vtkObjectManager': ...
    def SetObjectManagerLogVerbosity(self, verbosity:vtkLogger.Verbosity) -> None: ...
    def UnRegisterBlob(self, hash:str) -> bool: ...
    def UnRegisterObject(self, identifier:int) -> bool: ...
    def UnRegisterState(self, identifier:int) -> bool: ...
    def UpdateObjectFromState(self, state:str) -> None: ...
    def UpdateObjectsFromStates(self) -> None: ...
    def UpdateStateFromObject(self, identifier:int) -> None: ...
    @overload
    def UpdateStatesFromObjects(self) -> None: ...
    @overload
    def UpdateStatesFromObjects(self, identifiers:Sequence[int]) -> None: ...

