from typing import Any, List

from typing import overload
import mrpt.pymrpt.mrpt.io
import mrpt.pymrpt.mrpt.rtti

class CArchive:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, arg0: CArchive) -> None: ...
    @overload
    def ReadAs(self) -> int: ...
    @overload
    def ReadAs() -> unsignedint: ...
    def ReadBuffer(self, Buffer: capsule, Count: int) -> int: ...
    def ReadObject(self, *args, **kwargs) -> Any: ...
    def WriteAs(self, value: int) -> CArchive: ...
    def WriteBuffer(self, Buffer: capsule, Count: int) -> None: ...
    @overload
    def WriteObject(self, o: CSerializable) -> None: ...
    @overload
    def WriteObject(constclassmrpt) -> void: ...
    @overload
    def WriteObject(self, o: CSerializable) -> None: ...
    @overload
    def WriteObject(constclassmrpt) -> void: ...
    def assign(self) -> CArchive: ...
    def getArchiveDescription(self) -> str: ...
    @overload
    def __lshift__(self, obj: CSerializable) -> CArchive: ...
    @overload
    def __lshift__(self, pObj: CSerializable) -> CArchive: ...
    @overload
    def __rshift__(self, obj: CSerializable) -> CArchive: ...
    @overload
    def __rshift__(self, pObj: CSerializable) -> CArchive: ...

class CArchiveStreamBase_mrpt_io_CFileGZInputStream_t(CArchive):
    @overload
    def __init__(self, s: mrpt.pymrpt.mrpt.io.CFileGZInputStream) -> None: ...
    @overload
    def __init__(self, arg0: CArchiveStreamBase_mrpt_io_CFileGZInputStream_t) -> None: ...
    @overload
    def __init__(self, arg0: CArchiveStreamBase_mrpt_io_CFileGZInputStream_t) -> None: ...
    @overload
    def ReadAs(self) -> int: ...
    @overload
    def ReadAs() -> unsignedint: ...
    def ReadBuffer(self, Buffer: capsule, Count: int) -> int: ...
    def ReadObject(self, *args, **kwargs) -> Any: ...
    def WriteAs(self, value: int) -> CArchive: ...
    def WriteBuffer(self, Buffer: capsule, Count: int) -> None: ...
    @overload
    def WriteObject(self, o: CSerializable) -> None: ...
    @overload
    def WriteObject(constclassmrpt) -> void: ...
    @overload
    def WriteObject(self, o: CSerializable) -> None: ...
    @overload
    def WriteObject(constclassmrpt) -> void: ...
    def assign(self) -> CArchive: ...
    @overload
    def getArchiveDescription(self) -> str: ...
    @overload
    def getArchiveDescription(self) -> str: ...
    @overload
    def __lshift__(self, obj: CSerializable) -> CArchive: ...
    @overload
    def __lshift__(self, pObj: CSerializable) -> CArchive: ...
    @overload
    def __rshift__(self, obj: CSerializable) -> CArchive: ...
    @overload
    def __rshift__(self, pObj: CSerializable) -> CArchive: ...

class CArchiveStreamBase_mrpt_io_CFileGZOutputStream_t(CArchive):
    @overload
    def __init__(self, s: mrpt.pymrpt.mrpt.io.CFileGZOutputStream) -> None: ...
    @overload
    def __init__(self, arg0: CArchiveStreamBase_mrpt_io_CFileGZOutputStream_t) -> None: ...
    @overload
    def __init__(self, arg0: CArchiveStreamBase_mrpt_io_CFileGZOutputStream_t) -> None: ...
    @overload
    def ReadAs(self) -> int: ...
    @overload
    def ReadAs() -> unsignedint: ...
    def ReadBuffer(self, Buffer: capsule, Count: int) -> int: ...
    def ReadObject(self, *args, **kwargs) -> Any: ...
    def WriteAs(self, value: int) -> CArchive: ...
    def WriteBuffer(self, Buffer: capsule, Count: int) -> None: ...
    @overload
    def WriteObject(self, o: CSerializable) -> None: ...
    @overload
    def WriteObject(constclassmrpt) -> void: ...
    @overload
    def WriteObject(self, o: CSerializable) -> None: ...
    @overload
    def WriteObject(constclassmrpt) -> void: ...
    def assign(self) -> CArchive: ...
    @overload
    def getArchiveDescription(self) -> str: ...
    @overload
    def getArchiveDescription(self) -> str: ...
    @overload
    def __lshift__(self, obj: CSerializable) -> CArchive: ...
    @overload
    def __lshift__(self, pObj: CSerializable) -> CArchive: ...
    @overload
    def __rshift__(self, obj: CSerializable) -> CArchive: ...
    @overload
    def __rshift__(self, pObj: CSerializable) -> CArchive: ...

class CArchiveStreamBase_mrpt_io_CFileInputStream_t(CArchive):
    @overload
    def __init__(self, s: mrpt.pymrpt.mrpt.io.CFileInputStream) -> None: ...
    @overload
    def __init__(self, arg0: CArchiveStreamBase_mrpt_io_CFileInputStream_t) -> None: ...
    @overload
    def __init__(self, arg0: CArchiveStreamBase_mrpt_io_CFileInputStream_t) -> None: ...
    @overload
    def ReadAs(self) -> int: ...
    @overload
    def ReadAs() -> unsignedint: ...
    def ReadBuffer(self, Buffer: capsule, Count: int) -> int: ...
    def ReadObject(self, *args, **kwargs) -> Any: ...
    def WriteAs(self, value: int) -> CArchive: ...
    def WriteBuffer(self, Buffer: capsule, Count: int) -> None: ...
    @overload
    def WriteObject(self, o: CSerializable) -> None: ...
    @overload
    def WriteObject(constclassmrpt) -> void: ...
    @overload
    def WriteObject(self, o: CSerializable) -> None: ...
    @overload
    def WriteObject(constclassmrpt) -> void: ...
    def assign(self) -> CArchive: ...
    @overload
    def getArchiveDescription(self) -> str: ...
    @overload
    def getArchiveDescription(self) -> str: ...
    @overload
    def __lshift__(self, obj: CSerializable) -> CArchive: ...
    @overload
    def __lshift__(self, pObj: CSerializable) -> CArchive: ...
    @overload
    def __rshift__(self, obj: CSerializable) -> CArchive: ...
    @overload
    def __rshift__(self, pObj: CSerializable) -> CArchive: ...

class CArchiveStreamBase_mrpt_io_CFileOutputStream_t(CArchive):
    @overload
    def __init__(self, s: mrpt.pymrpt.mrpt.io.CFileOutputStream) -> None: ...
    @overload
    def __init__(self, arg0: CArchiveStreamBase_mrpt_io_CFileOutputStream_t) -> None: ...
    @overload
    def __init__(self, arg0: CArchiveStreamBase_mrpt_io_CFileOutputStream_t) -> None: ...
    @overload
    def ReadAs(self) -> int: ...
    @overload
    def ReadAs() -> unsignedint: ...
    def ReadBuffer(self, Buffer: capsule, Count: int) -> int: ...
    def ReadObject(self, *args, **kwargs) -> Any: ...
    def WriteAs(self, value: int) -> CArchive: ...
    def WriteBuffer(self, Buffer: capsule, Count: int) -> None: ...
    @overload
    def WriteObject(self, o: CSerializable) -> None: ...
    @overload
    def WriteObject(constclassmrpt) -> void: ...
    @overload
    def WriteObject(self, o: CSerializable) -> None: ...
    @overload
    def WriteObject(constclassmrpt) -> void: ...
    def assign(self) -> CArchive: ...
    @overload
    def getArchiveDescription(self) -> str: ...
    @overload
    def getArchiveDescription(self) -> str: ...
    @overload
    def __lshift__(self, obj: CSerializable) -> CArchive: ...
    @overload
    def __lshift__(self, pObj: CSerializable) -> CArchive: ...
    @overload
    def __rshift__(self, obj: CSerializable) -> CArchive: ...
    @overload
    def __rshift__(self, pObj: CSerializable) -> CArchive: ...

class CExceptionEOF:
    @overload
    def __init__(self, s: str) -> None: ...
    @overload
    def __init__(self, arg0: CExceptionEOF) -> None: ...
    @overload
    def __init__(self, arg0: CExceptionEOF) -> None: ...
    def assign(self) -> CExceptionEOF: ...

class CSerializable(mrpt.pymrpt.mrpt.rtti.CObject):
    @overload
    def __init__(self, arg0: CSerializable) -> None: ...
    @overload
    def __init__(self) -> None: ...
    def GetRuntimeClass(self) -> mrpt.pymrpt.mrpt.rtti.TRuntimeClassId: ...
    def GetRuntimeClassIdStatic(self, *args, **kwargs) -> Any: ...
    def assign(self) -> CSerializable: ...

@overload
def ObjectToOctetVector(o: CSerializable, out_vector: List[int]) -> None: ...
@overload
def ObjectToOctetVector(constclassmrpt, classstd) -> void: ...
@overload
def OctetVectorToObject(in_data: List[int], obj: CSerializable) -> None: ...
@overload
def OctetVectorToObject(constclassstd, classstd) -> void: ...
@overload
def archiveFrom(s: mrpt.pymrpt.mrpt.io.CFileGZInputStream) -> CArchiveStreamBase_mrpt_io_CFileGZInputStream_t: ...
@overload
def archiveFrom(s: mrpt.pymrpt.mrpt.io.CFileGZOutputStream) -> CArchiveStreamBase_mrpt_io_CFileGZOutputStream_t: ...
@overload
def archiveFrom(s: mrpt.pymrpt.mrpt.io.CFileInputStream) -> CArchiveStreamBase_mrpt_io_CFileInputStream_t: ...
@overload
def archiveFrom(s: mrpt.pymrpt.mrpt.io.CFileOutputStream) -> CArchiveStreamBase_mrpt_io_CFileOutputStream_t: ...
