import typing, clr, abc
from System import ReadOnlySpan_1, Half, Int128, UInt128, UIntPtr, Span_1

class BinaryPrimitives(abc.ABC):
    @staticmethod
    def ReadDoubleBigEndian(source: ReadOnlySpan_1[int]) -> float: ...
    @staticmethod
    def ReadDoubleLittleEndian(source: ReadOnlySpan_1[int]) -> float: ...
    @staticmethod
    def ReadHalfBigEndian(source: ReadOnlySpan_1[int]) -> Half: ...
    @staticmethod
    def ReadHalfLittleEndian(source: ReadOnlySpan_1[int]) -> Half: ...
    @staticmethod
    def ReadInt128BigEndian(source: ReadOnlySpan_1[int]) -> Int128: ...
    @staticmethod
    def ReadInt128LittleEndian(source: ReadOnlySpan_1[int]) -> Int128: ...
    @staticmethod
    def ReadInt16BigEndian(source: ReadOnlySpan_1[int]) -> int: ...
    @staticmethod
    def ReadInt16LittleEndian(source: ReadOnlySpan_1[int]) -> int: ...
    @staticmethod
    def ReadInt32BigEndian(source: ReadOnlySpan_1[int]) -> int: ...
    @staticmethod
    def ReadInt32LittleEndian(source: ReadOnlySpan_1[int]) -> int: ...
    @staticmethod
    def ReadInt64BigEndian(source: ReadOnlySpan_1[int]) -> int: ...
    @staticmethod
    def ReadInt64LittleEndian(source: ReadOnlySpan_1[int]) -> int: ...
    @staticmethod
    def ReadIntPtrBigEndian(source: ReadOnlySpan_1[int]) -> int: ...
    @staticmethod
    def ReadIntPtrLittleEndian(source: ReadOnlySpan_1[int]) -> int: ...
    @staticmethod
    def ReadSingleBigEndian(source: ReadOnlySpan_1[int]) -> float: ...
    @staticmethod
    def ReadSingleLittleEndian(source: ReadOnlySpan_1[int]) -> float: ...
    @staticmethod
    def ReadUInt128BigEndian(source: ReadOnlySpan_1[int]) -> UInt128: ...
    @staticmethod
    def ReadUInt128LittleEndian(source: ReadOnlySpan_1[int]) -> UInt128: ...
    @staticmethod
    def ReadUInt16BigEndian(source: ReadOnlySpan_1[int]) -> int: ...
    @staticmethod
    def ReadUInt16LittleEndian(source: ReadOnlySpan_1[int]) -> int: ...
    @staticmethod
    def ReadUInt32BigEndian(source: ReadOnlySpan_1[int]) -> int: ...
    @staticmethod
    def ReadUInt32LittleEndian(source: ReadOnlySpan_1[int]) -> int: ...
    @staticmethod
    def ReadUInt64BigEndian(source: ReadOnlySpan_1[int]) -> int: ...
    @staticmethod
    def ReadUInt64LittleEndian(source: ReadOnlySpan_1[int]) -> int: ...
    @staticmethod
    def ReadUIntPtrBigEndian(source: ReadOnlySpan_1[int]) -> UIntPtr: ...
    @staticmethod
    def ReadUIntPtrLittleEndian(source: ReadOnlySpan_1[int]) -> UIntPtr: ...
    @staticmethod
    def TryReadDoubleBigEndian(source: ReadOnlySpan_1[int], value: clr.Reference[float]) -> bool: ...
    @staticmethod
    def TryReadDoubleLittleEndian(source: ReadOnlySpan_1[int], value: clr.Reference[float]) -> bool: ...
    @staticmethod
    def TryReadHalfBigEndian(source: ReadOnlySpan_1[int], value: clr.Reference[Half]) -> bool: ...
    @staticmethod
    def TryReadHalfLittleEndian(source: ReadOnlySpan_1[int], value: clr.Reference[Half]) -> bool: ...
    @staticmethod
    def TryReadInt128BigEndian(source: ReadOnlySpan_1[int], value: clr.Reference[Int128]) -> bool: ...
    @staticmethod
    def TryReadInt128LittleEndian(source: ReadOnlySpan_1[int], value: clr.Reference[Int128]) -> bool: ...
    @staticmethod
    def TryReadInt16BigEndian(source: ReadOnlySpan_1[int], value: clr.Reference[int]) -> bool: ...
    @staticmethod
    def TryReadInt16LittleEndian(source: ReadOnlySpan_1[int], value: clr.Reference[int]) -> bool: ...
    @staticmethod
    def TryReadInt32BigEndian(source: ReadOnlySpan_1[int], value: clr.Reference[int]) -> bool: ...
    @staticmethod
    def TryReadInt32LittleEndian(source: ReadOnlySpan_1[int], value: clr.Reference[int]) -> bool: ...
    @staticmethod
    def TryReadInt64BigEndian(source: ReadOnlySpan_1[int], value: clr.Reference[int]) -> bool: ...
    @staticmethod
    def TryReadInt64LittleEndian(source: ReadOnlySpan_1[int], value: clr.Reference[int]) -> bool: ...
    @staticmethod
    def TryReadIntPtrBigEndian(source: ReadOnlySpan_1[int], value: clr.Reference[int]) -> bool: ...
    @staticmethod
    def TryReadIntPtrLittleEndian(source: ReadOnlySpan_1[int], value: clr.Reference[int]) -> bool: ...
    @staticmethod
    def TryReadSingleBigEndian(source: ReadOnlySpan_1[int], value: clr.Reference[float]) -> bool: ...
    @staticmethod
    def TryReadSingleLittleEndian(source: ReadOnlySpan_1[int], value: clr.Reference[float]) -> bool: ...
    @staticmethod
    def TryReadUInt128BigEndian(source: ReadOnlySpan_1[int], value: clr.Reference[UInt128]) -> bool: ...
    @staticmethod
    def TryReadUInt128LittleEndian(source: ReadOnlySpan_1[int], value: clr.Reference[UInt128]) -> bool: ...
    @staticmethod
    def TryReadUInt16BigEndian(source: ReadOnlySpan_1[int], value: clr.Reference[int]) -> bool: ...
    @staticmethod
    def TryReadUInt16LittleEndian(source: ReadOnlySpan_1[int], value: clr.Reference[int]) -> bool: ...
    @staticmethod
    def TryReadUInt32BigEndian(source: ReadOnlySpan_1[int], value: clr.Reference[int]) -> bool: ...
    @staticmethod
    def TryReadUInt32LittleEndian(source: ReadOnlySpan_1[int], value: clr.Reference[int]) -> bool: ...
    @staticmethod
    def TryReadUInt64BigEndian(source: ReadOnlySpan_1[int], value: clr.Reference[int]) -> bool: ...
    @staticmethod
    def TryReadUInt64LittleEndian(source: ReadOnlySpan_1[int], value: clr.Reference[int]) -> bool: ...
    @staticmethod
    def TryReadUIntPtrBigEndian(source: ReadOnlySpan_1[int], value: clr.Reference[UIntPtr]) -> bool: ...
    @staticmethod
    def TryReadUIntPtrLittleEndian(source: ReadOnlySpan_1[int], value: clr.Reference[UIntPtr]) -> bool: ...
    @staticmethod
    def TryWriteDoubleBigEndian(destination: Span_1[int], value: float) -> bool: ...
    @staticmethod
    def TryWriteDoubleLittleEndian(destination: Span_1[int], value: float) -> bool: ...
    @staticmethod
    def TryWriteHalfBigEndian(destination: Span_1[int], value: Half) -> bool: ...
    @staticmethod
    def TryWriteHalfLittleEndian(destination: Span_1[int], value: Half) -> bool: ...
    @staticmethod
    def TryWriteInt128BigEndian(destination: Span_1[int], value: Int128) -> bool: ...
    @staticmethod
    def TryWriteInt128LittleEndian(destination: Span_1[int], value: Int128) -> bool: ...
    @staticmethod
    def TryWriteInt16BigEndian(destination: Span_1[int], value: int) -> bool: ...
    @staticmethod
    def TryWriteInt16LittleEndian(destination: Span_1[int], value: int) -> bool: ...
    @staticmethod
    def TryWriteInt32BigEndian(destination: Span_1[int], value: int) -> bool: ...
    @staticmethod
    def TryWriteInt32LittleEndian(destination: Span_1[int], value: int) -> bool: ...
    @staticmethod
    def TryWriteInt64BigEndian(destination: Span_1[int], value: int) -> bool: ...
    @staticmethod
    def TryWriteInt64LittleEndian(destination: Span_1[int], value: int) -> bool: ...
    @staticmethod
    def TryWriteIntPtrBigEndian(destination: Span_1[int], value: int) -> bool: ...
    @staticmethod
    def TryWriteIntPtrLittleEndian(destination: Span_1[int], value: int) -> bool: ...
    @staticmethod
    def TryWriteSingleBigEndian(destination: Span_1[int], value: float) -> bool: ...
    @staticmethod
    def TryWriteSingleLittleEndian(destination: Span_1[int], value: float) -> bool: ...
    @staticmethod
    def TryWriteUInt128BigEndian(destination: Span_1[int], value: UInt128) -> bool: ...
    @staticmethod
    def TryWriteUInt128LittleEndian(destination: Span_1[int], value: UInt128) -> bool: ...
    @staticmethod
    def TryWriteUInt16BigEndian(destination: Span_1[int], value: int) -> bool: ...
    @staticmethod
    def TryWriteUInt16LittleEndian(destination: Span_1[int], value: int) -> bool: ...
    @staticmethod
    def TryWriteUInt32BigEndian(destination: Span_1[int], value: int) -> bool: ...
    @staticmethod
    def TryWriteUInt32LittleEndian(destination: Span_1[int], value: int) -> bool: ...
    @staticmethod
    def TryWriteUInt64BigEndian(destination: Span_1[int], value: int) -> bool: ...
    @staticmethod
    def TryWriteUInt64LittleEndian(destination: Span_1[int], value: int) -> bool: ...
    @staticmethod
    def TryWriteUIntPtrBigEndian(destination: Span_1[int], value: UIntPtr) -> bool: ...
    @staticmethod
    def TryWriteUIntPtrLittleEndian(destination: Span_1[int], value: UIntPtr) -> bool: ...
    @staticmethod
    def WriteDoubleBigEndian(destination: Span_1[int], value: float) -> None: ...
    @staticmethod
    def WriteDoubleLittleEndian(destination: Span_1[int], value: float) -> None: ...
    @staticmethod
    def WriteHalfBigEndian(destination: Span_1[int], value: Half) -> None: ...
    @staticmethod
    def WriteHalfLittleEndian(destination: Span_1[int], value: Half) -> None: ...
    @staticmethod
    def WriteInt128BigEndian(destination: Span_1[int], value: Int128) -> None: ...
    @staticmethod
    def WriteInt128LittleEndian(destination: Span_1[int], value: Int128) -> None: ...
    @staticmethod
    def WriteInt16BigEndian(destination: Span_1[int], value: int) -> None: ...
    @staticmethod
    def WriteInt16LittleEndian(destination: Span_1[int], value: int) -> None: ...
    @staticmethod
    def WriteInt32BigEndian(destination: Span_1[int], value: int) -> None: ...
    @staticmethod
    def WriteInt32LittleEndian(destination: Span_1[int], value: int) -> None: ...
    @staticmethod
    def WriteInt64BigEndian(destination: Span_1[int], value: int) -> None: ...
    @staticmethod
    def WriteInt64LittleEndian(destination: Span_1[int], value: int) -> None: ...
    @staticmethod
    def WriteIntPtrBigEndian(destination: Span_1[int], value: int) -> None: ...
    @staticmethod
    def WriteIntPtrLittleEndian(destination: Span_1[int], value: int) -> None: ...
    @staticmethod
    def WriteSingleBigEndian(destination: Span_1[int], value: float) -> None: ...
    @staticmethod
    def WriteSingleLittleEndian(destination: Span_1[int], value: float) -> None: ...
    @staticmethod
    def WriteUInt128BigEndian(destination: Span_1[int], value: UInt128) -> None: ...
    @staticmethod
    def WriteUInt128LittleEndian(destination: Span_1[int], value: UInt128) -> None: ...
    @staticmethod
    def WriteUInt16BigEndian(destination: Span_1[int], value: int) -> None: ...
    @staticmethod
    def WriteUInt16LittleEndian(destination: Span_1[int], value: int) -> None: ...
    @staticmethod
    def WriteUInt32BigEndian(destination: Span_1[int], value: int) -> None: ...
    @staticmethod
    def WriteUInt32LittleEndian(destination: Span_1[int], value: int) -> None: ...
    @staticmethod
    def WriteUInt64BigEndian(destination: Span_1[int], value: int) -> None: ...
    @staticmethod
    def WriteUInt64LittleEndian(destination: Span_1[int], value: int) -> None: ...
    @staticmethod
    def WriteUIntPtrBigEndian(destination: Span_1[int], value: UIntPtr) -> None: ...
    @staticmethod
    def WriteUIntPtrLittleEndian(destination: Span_1[int], value: UIntPtr) -> None: ...
    # Skipped ReverseEndianness due to it being static, abstract and generic.

    ReverseEndianness : ReverseEndianness_MethodGroup
    class ReverseEndianness_MethodGroup:
        @typing.overload
        def __call__(self, value: int) -> int:...
        # Method ReverseEndianness(value : Int16) was skipped since it collides with above method
        # Method ReverseEndianness(value : Int32) was skipped since it collides with above method
        # Method ReverseEndianness(value : Int64) was skipped since it collides with above method
        @typing.overload
        def __call__(self, value: Int128) -> Int128:...
        # Method ReverseEndianness(value : Byte) was skipped since it collides with above method
        # Method ReverseEndianness(value : UInt16) was skipped since it collides with above method
        # Method ReverseEndianness(value : UInt32) was skipped since it collides with above method
        # Method ReverseEndianness(value : UInt64) was skipped since it collides with above method
        @typing.overload
        def __call__(self, value: UInt128) -> UInt128:...
        # Method ReverseEndianness(value : IntPtr) was skipped since it collides with above method
        @typing.overload
        def __call__(self, value: UIntPtr) -> UIntPtr:...
        @typing.overload
        def __call__(self, source: ReadOnlySpan_1[int], destination: Span_1[int]) -> None:...
        # Method ReverseEndianness(source : ReadOnlySpan`1, destination : Span`1) was skipped since it collides with above method
        # Method ReverseEndianness(source : ReadOnlySpan`1, destination : Span`1) was skipped since it collides with above method
        # Method ReverseEndianness(source : ReadOnlySpan`1, destination : Span`1) was skipped since it collides with above method
        # Method ReverseEndianness(source : ReadOnlySpan`1, destination : Span`1) was skipped since it collides with above method
        # Method ReverseEndianness(source : ReadOnlySpan`1, destination : Span`1) was skipped since it collides with above method
        @typing.overload
        def __call__(self, source: ReadOnlySpan_1[UInt128], destination: Span_1[UInt128]) -> None:...
        @typing.overload
        def __call__(self, source: ReadOnlySpan_1[Int128], destination: Span_1[Int128]) -> None:...
        @typing.overload
        def __call__(self, source: ReadOnlySpan_1[UIntPtr], destination: Span_1[UIntPtr]) -> None:...
        # Method ReverseEndianness(source : ReadOnlySpan`1, destination : Span`1) was skipped since it collides with above method


