import typing

class Primitive:
    def __repr__(self) -> str: ...
    def __eq__(self, other: object) -> bool: ...
    def __hash__(self) -> int: ...
    def __lt__(self, other: object) -> bool: ...

class jvoid(Primitive):
    def __init__(self) -> None: ...

class jboolean(Primitive):
    value: bool
    def __init__(self, value: typing.Any) -> None: ...

class NumericPrimitive(Primitive): ...

class IntPrimitive(NumericPrimitive):
    value: int
    def __init__(self, value: int, truncate: bool = False) -> None: ...

class jbyte(IntPrimitive): ...
class jshort(IntPrimitive): ...
class jint(IntPrimitive): ...
class jlong(IntPrimitive): ...

class FloatPrimitive(NumericPrimitive):
    value: float
    def __init__(self, value: float | int, truncate: bool = False) -> None: ...

class jfloat(FloatPrimitive): ...
class jdouble(FloatPrimitive): ...

class jchar(Primitive):
    value: str
    def __init__(self, value: str) -> None: ...
